af_packet: TX_RING support for TPACKET_V3
authorSowmini Varadhan <sowmini.varadhan@oracle.com>
Tue, 3 Jan 2017 14:31:47 +0000 (06:31 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 3 Jan 2017 16:00:27 +0000 (11:00 -0500)
commit7f953ab2ba46e8649537942c0a64668ca2ce5cc5
tree7832da3907c92bd7e96b680cefb276e3708d500c
parente7072f6669860c4918ced4acf6a7e482023bd40f
af_packet: TX_RING support for TPACKET_V3

Although TPACKET_V3 Rx has some benefits over TPACKET_V2 Rx, *_v3
does not currently have TX_RING support. As a result an application
that wants the best perf for Tx and Rx (e.g. to handle request/response
transacations) ends up needing 2 sockets, one with *_v2 for Tx and
another with *_v3 for Rx.

This patch enables TPACKET_V2 compatible Tx features in TPACKET_V3
so that an application can use a single descriptor to get the benefits
of _v3 RX_RING and _v2 TX_RING. An application may do a block-send by
first filling up multiple frames in the Tx ring and then triggering a
transmit. This patch only support fixed size Tx frames for TPACKET_V3,
and requires that tp_next_offset must be zero.

Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Documentation/networking/packet_mmap.txt
net/packet/af_packet.c