Skip to content
Permalink
Browse files
Fix array out of bound panic introduced in r306219.
As I see, different NICs in different configurations may have different
numbers of TX and RX queues.  The code was assuming 1:1 mapping between
event queues (interrupts) and TX/RX queues.  Since number of interrupts
is set to maximum of TX and RX queues, when those two are different, the
system is doomed.

I have no documentation or deep knowledge about this hardware, so this
change is based on general observations and code reading.  If some of my
guesses are wrong, please do better.  I just confirmed HP NC550SFP NICs
are working now.

MFC after:	2 weeks
Sponsored by:	iXsystems, Inc.
  • Loading branch information
amotin committed May 28, 2019
1 parent c140102 commit b44d7086a16f737935e1eec7c7995adbc077081e
Showing 1 changed file with 14 additions and 4 deletions.
@@ -2394,10 +2394,20 @@ oce_eqd_set_periodic(POCE_SOFTC sc)
goto modify_eqd;
}

rq = sc->rq[i];
rxpkts = rq->rx_stats.rx_pkts;
wq = sc->wq[i];
tx_reqs = wq->tx_stats.tx_reqs;
if (i == 0) {
rq = sc->rq[0];
rxpkts = rq->rx_stats.rx_pkts;
} else
rxpkts = 0;
if (i + 1 < sc->nrqs) {
rq = sc->rq[i + 1];
rxpkts += rq->rx_stats.rx_pkts;
}
if (i < sc->nwqs) {
wq = sc->wq[i];
tx_reqs = wq->tx_stats.tx_reqs;
} else
tx_reqs = 0;
now = ticks;

if (!aic->ticks || now < aic->ticks ||

0 comments on commit b44d708

Please sign in to comment.