diff options
author | Luigi Rizzo <luigi@FreeBSD.org> | 2013-11-01 21:21:14 +0000 |
---|---|---|
committer | Luigi Rizzo <luigi@FreeBSD.org> | 2013-11-01 21:21:14 +0000 |
commit | ce3ee1e7c4cac5b86bbc15daac68f2129aa42187 (patch) | |
tree | 62d07ffe9208f3098d5f67c47dd66e29212478b5 /sys/dev/ixgbe | |
parent | a09968c47940d3b0e9e82ce7c06faec3f42cea94 (diff) | |
download | src-ce3ee1e7c4cac5b86bbc15daac68f2129aa42187.tar.gz src-ce3ee1e7c4cac5b86bbc15daac68f2129aa42187.zip |
update to the latest netmap snapshot.
This includes the following:
- use separate memory regions for VALE ports
- locking fixes
- some simplifications in the NIC-specific routines
- performance improvements for the VALE switch
- some new features in the pkt-gen test program
- documentation updates
There are small API changes that require programs to be recompiled
(NETMAP_API has been bumped so you will detect old binaries at runtime).
In particular:
- struct netmap_slot now is 16 bytes to support an extra pointer,
which may save one data copy when using VALE ports or VMs;
- the struct netmap_if has two extra fields;
MFC after: 3 days
Notes
Notes:
svn path=/head/; revision=257529
Diffstat (limited to 'sys/dev/ixgbe')
-rw-r--r-- | sys/dev/ixgbe/ixgbe.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/sys/dev/ixgbe/ixgbe.c b/sys/dev/ixgbe/ixgbe.c index e913bd5eec52..3e1471d2d565 100644 --- a/sys/dev/ixgbe/ixgbe.c +++ b/sys/dev/ixgbe/ixgbe.c @@ -3621,16 +3621,11 @@ ixgbe_txeof(struct tx_ring *txr) * means the user thread should not be woken up); * - the driver ignores tx interrupts unless netmap_mitigate=0 * or the slot has the DD bit set. - * - * When the driver has separate locks, we need to - * release and re-acquire txlock to avoid deadlocks. - * XXX see if we can find a better way. */ if (!netmap_mitigate || (kring->nr_kflags < kring->nkr_num_slots && txd[kring->nr_kflags].wb.status & IXGBE_TXD_STAT_DD)) { - netmap_tx_irq(ifp, txr->me | - (NETMAP_LOCKED_ENTER|NETMAP_LOCKED_EXIT)); + netmap_tx_irq(ifp, txr->me); } return; } @@ -4422,8 +4417,10 @@ ixgbe_rxeof(struct ix_queue *que) #ifdef DEV_NETMAP /* Same as the txeof routine: wakeup clients on intr. */ - if (netmap_rx_irq(ifp, rxr->me | NETMAP_LOCKED_ENTER, &processed)) + if (netmap_rx_irq(ifp, rxr->me, &processed)) { + IXGBE_RX_UNLOCK(rxr); return (FALSE); + } #endif /* DEV_NETMAP */ for (i = rxr->next_to_check; count != 0;) { |