numam-dpdk/drivers/net/virtio
Ilya Maximets 23abee9dea net/virtio: fix interrupt unregistering for listening socket
virtio_user_dev_server_reconnect() is typically called from the
interrupt context while checking the link state:

  vhost_user_update_link_state()
  --> virtio_user_dev_server_reconnect()

Under this conditions callback unregistering always fails.  This means
that listenfd is never unregistered and continue to trigger interrupts.
For example, if second client will try to connect to the same socket,
the server will receive interrupts infinitely because it will not
accept them while listen fd is readable and generates epoll events.

Fix that by moving reconfiguration of interrupts out of the
interrupt context to alarm handler.

'virtio_user_dev_delayed_handler' renamed to
'virtio_user_dev_delayed_disconnect_handler' to better reflect its
purpose.

Additionally improved error logging around interrupt management.

Fixes: bd8f50a45d ("net/virtio-user: support server mode")
Cc: stable@dpdk.org

Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2021-04-07 09:07:39 +02:00
..
virtio_user net/virtio: fix interrupt unregistering for listening socket 2021-04-07 09:07:39 +02:00
meson.build net/virtio: move features definition to generic header 2021-01-29 18:16:09 +01:00
version.map build: remove library name from version map file name 2020-10-19 22:13:59 +02:00
virtio_ethdev.c net/virtio: allocate fake mbuf in Rx queue 2021-03-31 07:31:41 +02:00
virtio_ethdev.h drivers: replace page size definitions with function 2021-03-23 08:41:05 +01:00
virtio_logs.h net/virtio: implement dynamic logging 2018-01-16 18:47:49 +01:00
virtio_pci_ethdev.c net/virtio: fix secondary process crash with PCI devices 2021-02-04 18:19:36 +01:00
virtio_pci.c net/virtio: fix secondary process crash with PCI devices 2021-02-04 18:19:36 +01:00
virtio_pci.h net/virtio: fix secondary process crash with PCI devices 2021-02-04 18:19:36 +01:00
virtio_ring.h net/virtio: move features definition to generic header 2021-01-29 18:16:09 +01:00
virtio_rxtx_packed_avx.h net/virtio: remove reference to virtqueue in vrings 2021-03-31 07:31:14 +02:00
virtio_rxtx_packed_neon.h net/virtio: remove reference to virtqueue in vrings 2021-03-31 07:31:14 +02:00
virtio_rxtx_packed.c net/virtio: remove reference to virtqueue in vrings 2021-03-31 07:31:14 +02:00
virtio_rxtx_packed.h net/virtio: remove reference to virtqueue in vrings 2021-03-31 07:31:14 +02:00
virtio_rxtx_simple_altivec.c net/virtio: remove reference to virtqueue in vrings 2021-03-31 07:31:14 +02:00
virtio_rxtx_simple_neon.c net/virtio: remove reference to virtqueue in vrings 2021-03-31 07:31:14 +02:00
virtio_rxtx_simple_sse.c net/virtio: remove reference to virtqueue in vrings 2021-03-31 07:31:14 +02:00
virtio_rxtx_simple.c ethdev: make driver-only headers private 2021-01-29 20:59:09 +01:00
virtio_rxtx_simple.h net/virtio: remove reference to virtqueue in vrings 2021-03-31 07:31:14 +02:00
virtio_rxtx.c net/virtio: allocate fake mbuf in Rx queue 2021-03-31 07:31:41 +02:00
virtio_rxtx.h net/virtio: allocate fake mbuf in Rx queue 2021-03-31 07:31:41 +02:00
virtio_user_ethdev.c net/virtio: remove duplicated port ID from virtio-user 2021-03-31 10:30:17 +02:00
virtio.c net/virtio: make interrupt handling more generic 2021-01-29 18:16:09 +01:00
virtio.h drivers: replace page size definitions with function 2021-03-23 08:41:05 +01:00
virtqueue.c net/virtio: remove last PCI refs in non-PCI code 2021-01-29 18:16:09 +01:00
virtqueue.h net/virtio: pack virtqueue structure 2021-03-31 07:31:50 +02:00