diff options
Diffstat (limited to 'sys/dev/neta/if_mvneta.c')
-rw-r--r-- | sys/dev/neta/if_mvneta.c | 21 |
1 files changed, 5 insertions, 16 deletions
diff --git a/sys/dev/neta/if_mvneta.c b/sys/dev/neta/if_mvneta.c index 8a2c2ec8512c..1c6247adb56b 100644 --- a/sys/dev/neta/if_mvneta.c +++ b/sys/dev/neta/if_mvneta.c @@ -612,11 +612,6 @@ mvneta_attach(device_t self) /* Allocate network interface */ ifp = sc->ifp = if_alloc(IFT_ETHER); - if (ifp == NULL) { - device_printf(self, "if_alloc() failed\n"); - mvneta_detach(self); - return (ENOMEM); - } if_initname(ifp, device_get_name(self), device_get_unit(self)); /* @@ -806,14 +801,14 @@ mvneta_attach(device_t self) if (mvneta_has_switch(self)) { if (bootverbose) device_printf(self, "This device is attached to a switch\n"); - child = device_add_child(sc->dev, "mdio", -1); + child = device_add_child(sc->dev, "mdio", DEVICE_UNIT_ANY); if (child == NULL) { ether_ifdetach(sc->ifp); mvneta_detach(self); return (ENXIO); } - bus_generic_attach(sc->dev); - bus_generic_attach(child); + bus_attach_children(sc->dev); + bus_attach_children(child); } /* Configure MAC media */ @@ -848,7 +843,7 @@ mvneta_detach(device_t dev) for (q = 0; q < MVNETA_TX_QNUM_MAX; q++) mvneta_ring_dealloc_tx_queue(sc, q); - device_delete_children(dev); + bus_generic_detach(dev); if (sc->ih_cookie[0] != NULL) bus_teardown_intr(dev, sc->res[1], sc->ih_cookie[0]); @@ -3005,8 +3000,6 @@ mvneta_rx_queue(struct mvneta_softc *sc, int q, int npkt) struct mvneta_rx_desc *r; struct mvneta_buf *rxbuf; struct mbuf *m; - struct lro_ctrl *lro; - struct lro_entry *queued; void *pktbuf; int i, pktlen, processed, ndma; @@ -3120,11 +3113,7 @@ rx_lro: /* * Flush any outstanding LRO work */ - lro = &rx->lro; - while (__predict_false((queued = LIST_FIRST(&lro->lro_active)) != NULL)) { - LIST_REMOVE(LIST_FIRST((&lro->lro_active)), next); - tcp_lro_flush(lro, queued); - } + tcp_lro_flush_all(&rx->lro); } STATIC void |