]> asedeno.scripts.mit.edu Git - linux.git/commit
packet: add sockopt to ignore outgoing packets
authorVincent Whitchurch <vincent.whitchurch@axis.com>
Mon, 3 Sep 2018 14:23:36 +0000 (16:23 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 6 Sep 2018 05:09:37 +0000 (22:09 -0700)
commitfa788d986a3aac5069378ed04697bd06f83d3488
treee335abac12b88e196f4c7c9e1012a66e93f53830
parent05dcc71298643256948a2e17db7dbecc748719d2
packet: add sockopt to ignore outgoing packets

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.whitchurch@axis.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/netdevice.h
include/uapi/linux/if_packet.h
net/core/dev.c
net/packet/af_packet.c