]> git.baikalelectronics.ru Git - kernel.git/commit
packet: Fixed TPACKET V3 to signal poll when block is closed rather than every packet
authorDan Collins <dan@dcollins.co.nz>
Fri, 19 Dec 2014 03:49:25 +0000 (16:49 +1300)
committerDavid S. Miller <davem@davemloft.net>
Mon, 22 Dec 2014 20:41:15 +0000 (15:41 -0500)
commit4ba6d87c65c1db7501be2e2e480dac2c8e505694
tree44b4fe9d8c44e43f4c96d041fdb230f4ddfd1c08
parentc355f1f442fe078c90659d52987c598871818764
packet: Fixed TPACKET V3 to signal poll when block is closed rather than every packet

Make TPACKET_V3 signal poll when block is closed rather than for every
packet. Side effect is that poll will be signaled when block retire
timer expires which didn't previously happen. Issue was visible when
sending packets at a very low frequency such that all blocks are retired
before packets are received by TPACKET_V3. This caused avoidable packet
loss. The fix ensures that the signal is sent when blocks are closed
which covers the normal path where the block is filled as well as the
path where the timer expires. The case where a block is filled without
moving to the next block (ie. all blocks are full) will still cause poll
to be signaled.

Signed-off-by: Dan Collins <dan@dcollins.co.nz>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/packet/af_packet.c