summaryrefslogtreecommitdiffstats
path: root/sys/dev/mxge
diff options
context:
space:
mode:
authorgallatin <gallatin@FreeBSD.org>2007-06-14 19:35:03 +0000
committergallatin <gallatin@FreeBSD.org>2007-06-14 19:35:03 +0000
commit18afb27e89f7c33e7f7ee046aaad87bef8939ee0 (patch)
tree6943d02c60fe909a59256a3b92e62bf8d7458ea3 /sys/dev/mxge
parentf5b0c94db5f2b734e6a5f99af2376f0af02734f5 (diff)
downloadFreeBSD-src-18afb27e89f7c33e7f7ee046aaad87bef8939ee0.zip
FreeBSD-src-18afb27e89f7c33e7f7ee046aaad87bef8939ee0.tar.gz
correct some limits on interrupt proccessing so that
fast forwarding back out the same mxge interface works nicely.
Diffstat (limited to 'sys/dev/mxge')
-rw-r--r--sys/dev/mxge/if_mxge.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/sys/dev/mxge/if_mxge.c b/sys/dev/mxge/if_mxge.c
index c6beb6f..f41576e 100644
--- a/sys/dev/mxge/if_mxge.c
+++ b/sys/dev/mxge/if_mxge.c
@@ -2276,7 +2276,7 @@ mxge_clean_rx_done(mxge_softc_t *sc)
rx_done->idx = rx_done->cnt & rx_done->mask;
/* limit potential for livelock */
- if (__predict_false(++limit > 2 * rx_done->mask))
+ if (__predict_false(++limit > rx_done->mask / 2))
break;
}
while(!SLIST_EMPTY(&sc->lro_active)) {
@@ -2294,9 +2294,8 @@ mxge_tx_done(mxge_softc_t *sc, uint32_t mcp_idx)
mxge_tx_buf_t *tx;
struct mbuf *m;
bus_dmamap_t map;
- int idx, limit;
+ int idx;
- limit = 0;
tx = &sc->tx;
ifp = sc->ifp;
while (tx->pkt_done != mcp_idx) {
@@ -2316,10 +2315,6 @@ mxge_tx_done(mxge_softc_t *sc, uint32_t mcp_idx)
tx->info[idx].flag = 0;
tx->pkt_done++;
}
- /* limit potential for livelock by only handling
- 2 full tx rings per call */
- if (__predict_false(++limit > 2 * tx->mask))
- break;
}
/* If we have space, clear IFF_OACTIVE to tell the stack that
OpenPOWER on IntegriCloud