net/tap: fix keep-alive queue not detached
authorOphir Munk <ophirmu@mellanox.com>
Thu, 24 May 2018 23:10:40 +0000 (23:10 +0000)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 25 May 2018 15:07:40 +0000 (17:07 +0200)
commit42ec78eaeb22fb17fcd5315c8607b80ffd4c64d2
tree93e59912cac9d0338844d7896c69eecc4b54c776
parent0833120f20f0aeae8496d39bddaad0c1a70b0bfc
net/tap: fix keep-alive queue not detached

The TAP keep-alive queue was created in order to keep the TAP device
in Linux even in case all of its Rx/Tx queues are released (in Linux
terminology: even in case all of the TAP device file descriptors are
closed), however, the keep-alive queue itself is attached to the TAP
device like all other Rx/Tx queues and therefore the kernel will
enqueue to it some Rx packets based on the kernel RSS distribution
rules. Those packets are unknown to the application and will remain
lost in the keep-alive queue.
All queues are attached by default to the TAP device after they are
created though TUNSETIFF ioctl call.
The fix is to detach the keep-alive queue after its creation through
TUNSETQUEUE ioctl call.

Fixes: 3101191c63ab ("net/tap: fix device removal when no queue exist")
Cc: stable@dpdk.org
Signed-off-by: Ophir Munk <ophirmu@mellanox.com>
Acked-by: Keith Wiles <keith.wiles@intel.com>
drivers/net/tap/rte_eth_tap.c