opnsense-src/sys/dev/virtio
Vincenzo Maffione f0d8d352c0 netmap: vtnet: call netmap_rx_irq() under VQ lock
The netmap_rx_irq() function normally wakes up user-space threads
waiting for more packets. In this case, it is not necessary to
call it under the driver queue lock. However, if the interface is
attached to a VALE switch, netmap_rx_irq() ends up calling rxsync
on the interface (see netmap_bwrap_intr_notify()). Although
concurrent rxsyncs are serialized through the kring lock
(see nm_kr_tryget()), the lock acquire operation is not blocking.
As a result, it may happen that netmap_rx_irq() is called on
an RX ring while another instance is running, causing the
second call to fail, and received packets stall in the receive VQ.
We fix this issue by calling netmap_irx_irq() under the VQ lock.

MFC after:	1 week
2020-06-03 05:27:29 +00:00
..
balloon virtio: Support MMIO bus for all devices 2020-05-06 23:31:30 +00:00
block Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
console virtio: Support MMIO bus for all devices 2020-05-06 23:31:30 +00:00
mmio virtio_mmio: Add casts missing from r360722 2020-05-07 17:59:17 +00:00
network netmap: vtnet: call netmap_rx_irq() under VQ lock 2020-06-03 05:27:29 +00:00
pci [virtio] Fix r/w to PCI configuration area on big endian platforms 2020-02-05 20:39:18 +00:00
random virtio: Support MMIO bus for all devices 2020-05-06 23:31:30 +00:00
scsi virtio: Support MMIO bus for all devices 2020-05-06 23:31:30 +00:00
virtio.c Remove FreeBSD 8 support from virtio. 2020-03-01 18:18:07 +00:00
virtio.h virtio(4): Add PNP match metadata for virtio devices 2019-06-04 02:37:11 +00:00
virtio_bus_if.m Add VirtIO bus config_generation method 2018-02-19 19:28:24 +00:00
virtio_config.h Update VirtIO definitions from Linux virtio_config.h and virtio_ring.h headers 2018-06-17 20:45:48 +00:00
virtio_ids.h Sync VirtIO IDs with Linux 2018-01-14 06:03:40 +00:00
virtio_if.m
virtio_ring.h Update VirtIO definitions from Linux virtio_config.h and virtio_ring.h headers 2018-06-17 20:45:48 +00:00
virtqueue.c Add more virtqueue getter methods 2018-02-19 19:31:18 +00:00
virtqueue.h Add more virtqueue getter methods 2018-02-19 19:31:18 +00:00