net: purge queued rx packets on queue deletion
authorYuri Benditovich <yuri.benditovich@daynix.com>
Thu, 12 Nov 2020 09:46:53 +0000 (11:46 +0200)
committerJason Wang <jasowang@redhat.com>
Tue, 24 Nov 2020 02:40:17 +0000 (10:40 +0800)
commitd2abc563e4ba4057b9cb5c04dd203b8c3a949115
tree613ed56084bc64f69acc6ff89aa76af7fc5317ab
parentad6f932fe8d1fc7f37ec17c7520aec68d3ee3706
net: purge queued rx packets on queue deletion

https://bugzilla.redhat.com/show_bug.cgi?id=1829272
When deleting queue pair, purge pending RX packets if any.
Example of problematic flow:
1. Bring up q35 VM with tap (vhost off) and virtio-net or e1000e
2. Run ping flood to the VM NIC ( 1 ms interval)
3. Hot unplug the NIC device (device_del)
   During unplug process one or more packets come, the NIC
   can't receive, tap disables read_poll
4. Hot plug the device (device_add) with the same netdev
The tap stays with read_poll disabled and does not receive
any packets anymore (tap_send never triggered)

Signed-off-by: Yuri Benditovich <yuri.benditovich@daynix.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
net/net.c