From: Vincent Whitchurch <vincent.whitchu...@axis.com> Date: Mon, 3 Sep 2018 16:23:36 +0200
> Currently, the only way to ignore outgoing packets on a packet socket is > via the BPF filter. With MSG_ZEROCOPY, packets that are looped into > AF_PACKET are copied in dev_queue_xmit_nit(), and this copy happens even > if the filter run from packet_rcv() would reject them. So the presence > of a packet socket on the interface takes away the benefits of > MSG_ZEROCOPY, even if the packet socket is not interested in outgoing > packets. (Even when MSG_ZEROCOPY is not used, the skb is unnecessarily > cloned, but the cost for that is much lower.) > > Add a socket option to allow AF_PACKET sockets to ignore outgoing > packets to solve this. Note that the *BSDs already have something > similar: BIOCSSEESENT/BIOCSDIRECTION and BIOCSDIRFILT. > > The first intended user is lldpd. > > Signed-off-by: Vincent Whitchurch <vincent.whitchu...@axis.com> > --- > v2: Stricter value validation. > Moved ignore check out of skb_loop_sk(). Applied, thank you.