diff options
author | jfv <jfv@FreeBSD.org> | 2010-03-31 23:24:42 +0000 |
---|---|---|
committer | jfv <jfv@FreeBSD.org> | 2010-03-31 23:24:42 +0000 |
commit | c470b0d21d5c8a8b7ae21d1002b426d70563d49c (patch) | |
tree | e2115aed077e5a1e84211d1332bb8613837980f0 | |
parent | 69ea0c9b4e42f7055ca1b8bbee0a6c37924b69ed (diff) | |
download | FreeBSD-src-c470b0d21d5c8a8b7ae21d1002b426d70563d49c.zip FreeBSD-src-c470b0d21d5c8a8b7ae21d1002b426d70563d49c.tar.gz |
The POLL code was missed in the queue conversion,
change the argument type to igb_rxeof() to the
correct type. Note, any users of POLLING must
be sure and set the number of queues to 1 for
things to work correctly.
-rw-r--r-- | sys/dev/e1000/if_igb.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/sys/dev/e1000/if_igb.c b/sys/dev/e1000/if_igb.c index 44f0e2e..5fdd52c 100644 --- a/sys/dev/e1000/if_igb.c +++ b/sys/dev/e1000/if_igb.c @@ -1316,7 +1316,8 @@ igb_irq_fast(void *arg) #ifdef DEVICE_POLLING /********************************************************************* * - * Legacy polling routine + * Legacy polling routine : if using this code you MUST be sure that + * multiqueue is not defined, ie, set igb_num_queues to 1. * *********************************************************************/ #if __FreeBSD_version >= 800000 @@ -1328,12 +1329,12 @@ static void #endif igb_poll(struct ifnet *ifp, enum poll_cmd cmd, int count) { - struct adapter *adapter = ifp->if_softc; - struct rx_ring *rxr = adapter->rx_rings; - struct tx_ring *txr = adapter->tx_rings; - u32 reg_icr, rx_done = 0; - u32 loop = IGB_MAX_LOOP; - bool more; + struct adapter *adapter = ifp->if_softc; + struct igb_queue *que = adapter->queues; + struct tx_ring *txr = adapter->tx_rings; + u32 reg_icr, rx_done = 0; + u32 loop = IGB_MAX_LOOP; + bool more; IGB_CORE_LOCK(adapter); if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { @@ -1353,7 +1354,7 @@ igb_poll(struct ifnet *ifp, enum poll_cmd cmd, int count) IGB_CORE_UNLOCK(adapter); /* TODO: rx_count */ - rx_done = igb_rxeof(rxr, count) ? 1 : 0; + rx_done = igb_rxeof(que, count) ? 1 : 0; IGB_TX_LOCK(txr); do { |