#include "io.h"
#include "../port/error.h"
#include "../port/netif.h"
-#include "etherif.h"
+#include "../port/etherif.h"
#define Pciwaddrh(x) 0
#define Pciwaddrl(x) PCIWADDR(x)
static Vtab vtab[] = {
0x11ab, 0x4354, 1514, "88e8040", /* unsure on mtu */
0x11ab, 0x4362, 1514, "88e8053",
+ 0x11ab, 0x4363, 1514, "88e8055",
0x11ab, 0x4364, 1514, "88e8056",
0x11ab, 0x4380, 1514, "88e8057",
0x11ab, 0x436b, 1514, "88e8071", /* unsure on mtu */
c = e->ctlr;
if((int)(wp - r->rp) >= r->cnt){
- print("rxscrew1 wp %ud(%ud) rp %ud %lud\n", wp, r->wp, r->rp, t-r->r);
+ print("rxscrew1 wp %ud(%ud) rp %ud %zd\n", wp, r->wp, r->rp, t-r->r);
return -1;
}
if(c->rbring[t - r->r]){
- print("rxscrew2 wp %ud rp %ud %lud\n", wp, r->rp, t-r->r);
+ print("rxscrew2 wp %ud rp %ud %zd\n", wp, r->rp, t-r->r);
descriptorfu(e, Qr);
return -1;
}
}else{
b->wp += l;
b->flag |= flag;
- etheriq(e, b, 1);
+ etheriq(e, b);
}
unstarve(&c->rxmit);
}
print("yuk: cant map %#p\n", c->io);
return -1;
}
+ pcienable(p);
c->p = p;
c->reg = (uint*)mem;
c->reg8 = (uchar*)mem;
c->rx.r = slice(&v, 16*4096, sizeof c->rx.r[0] * c->rx.cnt);
c->nports = 1; /* BOTCH */
- pcisetbme(p);
if(reset(c)){
print("yuk: cant reset\n");
- pciclrbme(p);
free(c->alloc);
vunmap(mem, p->mem[0].size);
+ pcidisable(p);
return -1;
}
macinit(c);
+ pcisetbme(p);
return 0;
}
c = ctlrtab[i];
if(c == nil || c->flag&Fprobe)
continue;
- if(e->port != 0 && e->port != (ulong)c->reg)
+ if(e->port != 0 && e->port != (ulong)(uintptr)c->reg)
continue;
c->flag |= Fprobe;
if(setup(c) != 0)
e->attach = attach;
e->ctl = ctl;
e->ifstat = ifstat;
- e->interrupt = interrupt;
e->multicast = multicast;
e->promiscuous = promiscuous;
e->shutdown = shutdown;
e->transmit = nil;
+ intrenable(e->irq, interrupt, e, e->tbdf, e->name);
+
return 0;
}