cd = &sc->mue_cdata;
- for (i = 0; i < __arraycount(cd->mue_rx_chain); i++) {
+ for (i = 0; i < sc->mue_rx_list_cnt; i++) {
c = &cd->mue_rx_chain[i];
c->mue_sc = sc;
c->mue_idx = i;
@@ -1149,7 +1154,7 @@ mue_tx_list_init(struct mue_softc *sc)
int err;
cd = &sc->mue_cdata;
- for (i = 0; i < __arraycount(cd->mue_tx_chain); i++) {
+ for (i = 0; i < sc->mue_tx_list_cnt; i++) {
c = &cd->mue_tx_chain[i];
c->mue_sc = sc;
c->mue_idx = i;
@@ -1197,7 +1202,7 @@ mue_startup_rx_pipes(struct mue_softc *s
size_t i;
/* Start up the receive pipe. */
- for (i = 0; i < __arraycount(sc->mue_cdata.mue_rx_chain); i++) {
+ for (i = 0; i < sc->mue_rx_list_cnt; i++) {
c = &sc->mue_cdata.mue_rx_chain[i];
usbd_setup_xfer(c->mue_xfer, c, c->mue_buf, sc->mue_rxbufsz,
USBD_SHORT_XFER_OK, USBD_NO_TIMEOUT, mue_rxeof);
@@ -1454,11 +1459,6 @@ mue_rxeof(struct usbd_xfer *xfer, void *
return;
}
- if (__predict_false(!(ifp->if_flags & IFF_RUNNING))) {
- DPRINTF(sc, "not running\n");
- return;
- }
-
if (__predict_false(status != USBD_NORMAL_COMPLETION)) {
DPRINTF(sc, "%s\n", usbd_errstr(status));
if (status == USBD_NOT_STARTED || status == USBD_CANCELLED)
@@ -1783,7 +1783,7 @@ mue_start(struct ifnet *ifp)
}
idx = cd->mue_tx_prod;
- while (cd->mue_tx_cnt < MUE_TX_LIST_CNT) {
+ while ((unsigned)cd->mue_tx_cnt < sc->mue_tx_list_cnt) {
IFQ_POLL(&ifp->if_snd, m);
if (m == NULL)
break;
@@ -1797,13 +1797,13 @@ mue_start(struct ifnet *ifp)
bpf_mtap(ifp, m, BPF_D_OUT);
m_freem(m);
- if (cd->mue_tx_cnt >= MUE_TX_LIST_CNT)
+ if ((unsigned)cd->mue_tx_cnt >= sc->mue_tx_list_cnt)
ifp->if_flags |= IFF_OACTIVE;
/* Set a timeout in case the chip goes out to lunch. */
@@ -1834,7 +1834,7 @@ mue_stop(struct ifnet *ifp, int disable
}
/* Free RX resources. */
- for (i = 0; i < __arraycount(sc->mue_cdata.mue_rx_chain); i++)
+ for (i = 0; i < sc->mue_rx_list_cnt; i++)
if (sc->mue_cdata.mue_rx_chain[i].mue_xfer != NULL) {
usbd_destroy_xfer(
sc->mue_cdata.mue_rx_chain[i].mue_xfer);
@@ -1842,7 +1842,7 @@ mue_stop(struct ifnet *ifp, int disable
}
/* Free TX resources. */
- for (i = 0; i < __arraycount(sc->mue_cdata.mue_tx_chain); i++)
+ for (i = 0; i < sc->mue_tx_list_cnt; i++)
if (sc->mue_cdata.mue_tx_chain[i].mue_xfer != NULL) {
usbd_destroy_xfer(
sc->mue_cdata.mue_tx_chain[i].mue_xfer);
Index: sys/dev/usb/if_muevar.h
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/if_muevar.h,v
retrieving revision 1.4
diff -p -u -r1.4 if_muevar.h
--- sys/dev/usb/if_muevar.h 5 Jan 2019 07:56:07 -0000 1.4
+++ sys/dev/usb/if_muevar.h 27 Jan 2019 16:45:37 -0000
@@ -117,6 +117,9 @@ struct mue_softc {
uint32_t mue_rxbufsz;
uint32_t mue_txbufsz;
int mue_link;
+
+ unsigned mue_rx_list_cnt;
+ unsigned mue_tx_list_cnt;
};