merge
This commit is contained in:
commit
badbf50b0c
3 changed files with 40 additions and 32 deletions
|
@ -413,12 +413,10 @@ gc82543attach(Ether* edev)
|
||||||
*/
|
*/
|
||||||
ctlr = edev->ctlr;
|
ctlr = edev->ctlr;
|
||||||
lock(&ctlr->slock);
|
lock(&ctlr->slock);
|
||||||
if(ctlr->started == 0){
|
if(ctlr->started){
|
||||||
ctlr->started = 1;
|
|
||||||
snprint(name, KNAMELEN, "#l%d82543", edev->ctlrno);
|
|
||||||
kproc(name, gc82543watchdog, edev);
|
|
||||||
}
|
|
||||||
unlock(&ctlr->slock);
|
unlock(&ctlr->slock);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ctl = csr32r(ctlr, Rctl)|Ren;
|
ctl = csr32r(ctlr, Rctl)|Ren;
|
||||||
csr32w(ctlr, Rctl, ctl);
|
csr32w(ctlr, Rctl, ctl);
|
||||||
|
@ -426,6 +424,12 @@ gc82543attach(Ether* edev)
|
||||||
csr32w(ctlr, Tctl, ctl);
|
csr32w(ctlr, Tctl, ctl);
|
||||||
|
|
||||||
csr32w(ctlr, Ims, ctlr->im);
|
csr32w(ctlr, Ims, ctlr->im);
|
||||||
|
|
||||||
|
ctlr->started = 1;
|
||||||
|
unlock(&ctlr->slock);
|
||||||
|
|
||||||
|
snprint(name, KNAMELEN, "#l%d82543", edev->ctlrno);
|
||||||
|
kproc(name, gc82543watchdog, edev);
|
||||||
}
|
}
|
||||||
|
|
||||||
static char* statistics[Nstatistics] = {
|
static char* statistics[Nstatistics] = {
|
||||||
|
|
|
@ -380,12 +380,16 @@ attach(Ether* ether)
|
||||||
|
|
||||||
ctlr = ether->ctlr;
|
ctlr = ether->ctlr;
|
||||||
lock(&ctlr->slock);
|
lock(&ctlr->slock);
|
||||||
if(ctlr->state == 0){
|
if(ctlr->state){
|
||||||
|
unlock(&ctlr->slock);
|
||||||
|
return;
|
||||||
|
}
|
||||||
ilock(&ctlr->rlock);
|
ilock(&ctlr->rlock);
|
||||||
csr8w(ctlr, Interrupt, 0);
|
csr8w(ctlr, Interrupt, 0);
|
||||||
iunlock(&ctlr->rlock);
|
iunlock(&ctlr->rlock);
|
||||||
command(ctlr, RUstart, PADDR(ctlr->rfdhead->rp));
|
command(ctlr, RUstart, PADDR(ctlr->rfdhead->rp));
|
||||||
ctlr->state = 1;
|
ctlr->state = 1;
|
||||||
|
unlock(&ctlr->slock);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Start the watchdog timer for the receive lockup errata
|
* Start the watchdog timer for the receive lockup errata
|
||||||
|
@ -397,8 +401,6 @@ attach(Ether* ether)
|
||||||
kproc(name, watchdog, ether);
|
kproc(name, watchdog, ether);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
unlock(&ctlr->slock);
|
|
||||||
}
|
|
||||||
|
|
||||||
static long
|
static long
|
||||||
ifstat(Ether* ether, void* a, long n, ulong offset)
|
ifstat(Ether* ether, void* a, long n, ulong offset)
|
||||||
|
|
|
@ -419,8 +419,12 @@ attach(Ether* edev)
|
||||||
|
|
||||||
ctlr = edev->ctlr;
|
ctlr = edev->ctlr;
|
||||||
lock(ctlr);
|
lock(ctlr);
|
||||||
if(!ctlr->attached){
|
if(ctlr->attached){
|
||||||
|
unlock(ctlr);
|
||||||
|
return;
|
||||||
|
}
|
||||||
ctlr->attached = 1;
|
ctlr->attached = 1;
|
||||||
|
unlock(ctlr);
|
||||||
|
|
||||||
/* ready to go */
|
/* ready to go */
|
||||||
outb(ctlr->port+Qstatus, inb(ctlr->port+Qstatus) | Sdriverok);
|
outb(ctlr->port+Qstatus, inb(ctlr->port+Qstatus) | Sdriverok);
|
||||||
|
@ -431,8 +435,6 @@ attach(Ether* edev)
|
||||||
snprint(name, sizeof name, "#l%dtx", edev->ctlrno);
|
snprint(name, sizeof name, "#l%dtx", edev->ctlrno);
|
||||||
kproc(name, txproc, edev);
|
kproc(name, txproc, edev);
|
||||||
}
|
}
|
||||||
unlock(ctlr);
|
|
||||||
}
|
|
||||||
|
|
||||||
static long
|
static long
|
||||||
ifstat(Ether *edev, void *a, long n, ulong offset)
|
ifstat(Ether *edev, void *a, long n, ulong offset)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue