BXE: resets slightly later, connect sc->edev/ifp
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 29 Jan 2015 21:19:16 +0000 (16:19 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 3 Feb 2015 15:12:31 +0000 (10:12 -0500)
We need to reset early for MMIO/vmap reasons, but we want to at least have
connections to the edev and ifp (netif).  Thus we do it a little later in pnp.

kern/drivers/net/bxe/bxe_dev.c

index 0e1fecb..1b3e877 100644 (file)
@@ -371,11 +371,6 @@ static void bxepci(void)
 
                ctlr->pcidev = pcidev;
                
-               if (bxereset(ctlr)) {
-                       kfree(ctlr);
-                       continue;
-               }
-
                spin_lock(&bxe_adapter_tq_lock);
                TAILQ_INSERT_TAIL(&bxe_adapter_tq, ctlr, link9ns);
                spin_unlock(&bxe_adapter_tq_lock);
@@ -406,6 +401,9 @@ static int bxepnp(struct ether *edev)
                return -1;
 
        edev->ctlr = ctlr;
+       ctlr->edev = edev;
+       ctlr->ifp = &edev->netif;
+
        //edev->port = ctlr->port;      /* might just remove this from devether */
        edev->irq = ctlr->pcidev->irqline;
        edev->tbdf = MKBUS(BusPCI, ctlr->pcidev->bus, ctlr->pcidev->dev,
@@ -426,6 +424,8 @@ static int bxepnp(struct ether *edev)
        edev->netif.promiscuous = bxepromiscuous;
        edev->netif.multicast = bxemulticast;
 
+       bxereset(ctlr);
+
        return 0;
 }