diff options
author | Luigi Rizzo <luigi@FreeBSD.org> | 2012-02-27 19:05:01 +0000 |
---|---|---|
committer | Luigi Rizzo <luigi@FreeBSD.org> | 2012-02-27 19:05:01 +0000 |
commit | 64ae02c36579bad7d5e682589a0bc1023e359f9d (patch) | |
tree | a547096f4399bc66370c43d717a40e4b79eb8401 /tools/tools/netmap/pcap.c | |
parent | d7ccbd70099774d72fd45fa7a0b942c360dd9878 (diff) | |
download | src-64ae02c36579bad7d5e682589a0bc1023e359f9d.tar.gz src-64ae02c36579bad7d5e682589a0bc1023e359f9d.zip |
A bunch of netmap fixes:
USERSPACE:
1. add support for devices with different number of rx and tx queues;
2. add better support for zero-copy operation, adding an extra field
to the netmap ring to indicate how many buffers we have already processed
but not yet released (with help from Eddie Kohler);
3. The two changes above unfortunately require an API change, so while
at it add a version field and some spares to the ioctl() argument
to help detect mismatches.
4. update the manual page for the two changes above;
5. update sample applications in tools/tools/netmap
KERNEL:
1. simplify the internal structures moving the global wait queues
to the 'struct netmap_adapter';
2. simplify the functions that map kring<->nic ring indexes
3. normalize device-specific code, helps mainteinance;
4. start exploring the impact of micro-optimizations (prefetch etc.)
in the ixgbe driver.
Use 'legacy' descriptors on the tx ring and prefetch slots gives
about 20% speedup at 900 MHz. Another 7-10% would come from removing
the explict calls to bus_dmamap* in the core (they are effectively
NOPs in this case, but it takes expensive load of the per-buffer
dma maps to figure out that they are all NULL.
Rx performance not investigated.
I am postponing the MFC so i can import a few more improvements
before merging.
Notes
Notes:
svn path=/head/; revision=232238
Diffstat (limited to 'tools/tools/netmap/pcap.c')
-rw-r--r-- | tools/tools/netmap/pcap.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/tools/tools/netmap/pcap.c b/tools/tools/netmap/pcap.c index f010b839bfb2..2a93e82c7f55 100644 --- a/tools/tools/netmap/pcap.c +++ b/tools/tools/netmap/pcap.c @@ -257,14 +257,14 @@ netmap_open(struct my_ring *me, int ringid) me->nifp = NETMAP_IF(me->mem, req.nr_offset); me->queueid = ringid; if (ringid & NETMAP_SW_RING) { - me->begin = req.nr_numrings; + me->begin = req.nr_rx_rings; me->end = me->begin + 1; } else if (ringid & NETMAP_HW_RING) { me->begin = ringid & NETMAP_RING_MASK; me->end = me->begin + 1; } else { me->begin = 0; - me->end = req.nr_numrings; + me->end = req.nr_rx_rings; } /* request timestamps for packets */ for (i = me->begin; i < me->end; i++) { |