mirror of
https://github.com/opnsense/src.git
synced 2026-02-03 20:49:35 -05:00
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)
Sponsored by: Sunny Valley Networks
Differential Revision: https://reviews.freebsd.org/D17916
|
||
|---|---|---|
| .. | ||
| if_em_netmap.h | ||
| if_igb_netmap.h | ||
| if_ixl_netmap.h | ||
| if_lem_netmap.h | ||
| if_re_netmap.h | ||
| if_vtnet_netmap.h | ||
| ixgbe_netmap.h | ||
| netmap.c | ||
| netmap_bdg.c | ||
| netmap_bdg.h | ||
| netmap_freebsd.c | ||
| netmap_generic.c | ||
| netmap_kern.h | ||
| netmap_legacy.c | ||
| netmap_mbq.c | ||
| netmap_mbq.h | ||
| netmap_mem2.c | ||
| netmap_mem2.h | ||
| netmap_monitor.c | ||
| netmap_offloadings.c | ||
| netmap_pipe.c | ||
| netmap_pt.c | ||
| netmap_vale.c | ||