Fixes unchecked results from parsecmd
[akaros.git] / kern / drivers / net / bnx2x / bnx2x_dev.c
index 8a3c8f9..a989290 100644 (file)
@@ -107,6 +107,8 @@ static long bnx2x_ctl(struct ether *edev, void *buf, long n)
                kfree(cb);
                nexterror();
        }
+       if (cb->nf < 1)
+               error("short control request");
 
        /* TODO: handle ctl command somehow.  igbe did the following: */
        //ct = lookupcmd(cb, igbectlmsg, ARRAY_SIZE(igbectlmsg));
@@ -317,9 +319,6 @@ static void bnx2x_attach(struct ether *edev)
        bnx2x_open(ctlr->edev);
        bnx2x_set_rx_mode(edev);
 
-       /* shut it up for now.  too much stats output */
-       ctlr->msg_enable = 0;
-
        ctlr->attached = TRUE;
        qunlock(&ctlr->alock);
        /* not sure if we'll need/want any of the other 9ns stuff */
@@ -381,8 +380,6 @@ static void bnx2x_pci(void)
        struct bnx2x *ctlr;
        const struct pci_device_id *pci_id;
 
-       bnx2x_init();
-
        STAILQ_FOREACH(pcidev, &pci_devices, all_dev) {
                /* This checks that pcidev is a Network Controller for Ethernet */
                if (pcidev->class != 0x02 || pcidev->subclass != 0x00)
@@ -393,6 +390,9 @@ static void bnx2x_pci(void)
                if (!pci_id)
                        continue;
 
+               /* only run bnx2x's __init method once we know we have one */
+               run_once(bnx2x_init());
+
                printk("bnx2x driver found 0x%04x:%04x at %02x:%02x.%x\n",
                           pcidev->ven_id, pcidev->dev_id,
                           pcidev->bus, pcidev->dev, pcidev->func);
@@ -480,15 +480,6 @@ static int bnx2x_pnp(struct ether *edev)
        edev->promiscuous = bnx2x_promiscuous;
        edev->multicast = bnx2x_multicast;
 
-       /* Plan 9's MTU includes the header (e.g. 1514, instead of 1500).  Linux
-        * drivers expect just the payload and not the header, and will add in the
-        * 14 whenever it is needed.
-        *
-        * There might be issues when plan 9 code accesses maxmtu, now that it's
-        * 1500 instead of 1514.  Keep a lookout for Etoobig in etherwrite.  What a
-        * mess. */
-       edev->maxmtu -= ETHERHDRSIZE;
-
        bnx2x_reset(ctlr);
 
        return 0;