]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/src/9/pc/ether82543gc.c
devkbd: bits bad! revert repeat/delay, better patches welcome
[plan9front.git] / sys / src / 9 / pc / ether82543gc.c
index db9aaa6e0818856f64a2e634cb489da5fa5b89a8..572a6ddb179b37310ff098c81f158ddefee37fa8 100644 (file)
@@ -18,8 +18,7 @@
 #include "io.h"
 #include "../port/error.h"
 #include "../port/netif.h"
-
-#include "etherif.h"
+#include "../port/etherif.h"
 
 enum {
        Ctrl            = 0x00000000,   /* Device Control */
@@ -758,7 +757,6 @@ gc82543allocb(Ctlr* ctlr)
        if((bp = *(ctlr->freehead)) != nil){
                *(ctlr->freehead) = bp->next;
                bp->next = nil;
-               _xinc(&bp->ref);        /* prevent bp from being freed */
        }
        iunlock(&freelistlock);
        return bp;
@@ -853,7 +851,7 @@ gc82543recv(Ether* edev, int icr)
                        ctlr->rb[rdh] = nil;
                        bp->wp += rdesc->length;
                        bp->next = nil;
-                       etheriq(edev, bp, 1);
+                       etheriq(edev, bp);
                }
 
                if(ctlr->rb[rdh] != nil){
@@ -1292,11 +1290,6 @@ gc82543pci(void)
                ctlr->id = (p->did<<16)|p->vid;
                ctlr->nic = mem;
 
-               if(gc82543reset(ctlr)){
-                       free(ctlr);
-                       continue;
-               }
-
                if(gc82543ctlrhead != nil)
                        gc82543ctlrtail->next = ctlr;
                else
@@ -1329,6 +1322,9 @@ gc82543pnp(Ether* edev)
        }
        if(ctlr == nil)
                return -1;
+       
+       pcienable(ctlr->pcidev);
+       gc82543reset(ctlr);
 
        edev->ctlr = ctlr;
        edev->port = ctlr->port;
@@ -1349,6 +1345,7 @@ gc82543pnp(Ether* edev)
                }
        }
        gc82543init(edev);
+       pcisetbme(ctlr->pcidev);
 
        /*
         * Linkage to the generic ethernet driver.