freebsd-skq/sys/dev/virtio
Vincenzo Maffione 2e42b74a6f vtnet: fix netmap support
netmap(4) support for vtnet(4) was incomplete and had multiple bugs.
This commit fixes those bugs to bring netmap on vtnet in a functional state.

Changelist:
  - handle errors returned by virtqueue_enqueue() properly (they were
    previously ignored)
  - make sure netmap XOR rest of the kernel access each virtqueue.
  - compute the number of netmap slots for TX and RX separately, according to
    whether indirect descriptors are used or not for a given virtqueue.
  - make sure sglist are freed according to their type (mbufs or netmap
    buffers)
  - add support for mulitiqueue and netmap host (aka sw) rings.
  - intercept VQ interrupts directly instead of intercepting them in txq_eof
    and rxq_eof. This simplifies the code and makes it easier to make sure
    taskqueues are not running for a VQ while it is in netmap mode.
  - implement vntet_netmap_config() to cope with changes in the number of queues.

Reviewed by:	bryanv
Approved by:	gnn (mentor)
MFC after:	3 days
Sponsored by:	Sunny Valley Networks
Differential Revision:	https://reviews.freebsd.org/D17916
2018-11-14 15:39:48 +00:00
..
balloon sys/dev: further adoption of SPDX licensing ID tags. 2017-11-27 14:52:40 +00:00
block sys/dev: further adoption of SPDX licensing ID tags. 2017-11-27 14:52:40 +00:00
console Revert r327828, r327949, r327953, r328016-r328026, r328041: 2018-01-21 15:42:36 +00:00
mmio Split out the virtio mmio FDT attachment and add an ACPI attachment. 2018-10-21 15:43:20 +00:00
network vtnet: fix netmap support 2018-11-14 15:39:48 +00:00
pci Revert r327828, r327949, r327953, r328016-r328026, r328041: 2018-01-21 15:42:36 +00:00
random Remove the Yarrow PRNG algorithm option in accordance with due notice 2018-08-26 12:51:46 +00:00
scsi sys/dev: further adoption of SPDX licensing ID tags. 2017-11-27 14:52:40 +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
virtio.c Add VirtIO bus config_generation method 2018-02-19 19:28:24 +00:00
virtio.h Add VirtIO bus config_generation method 2018-02-19 19:28:24 +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