1*3de6a9c0SDavid du Colombier enum 2*3de6a9c0SDavid du Colombier { 3*3de6a9c0SDavid du Colombier MaxEther = 4, 4*3de6a9c0SDavid du Colombier Ntypes = 8, 5*3de6a9c0SDavid du Colombier }; 6*3de6a9c0SDavid du Colombier 7*3de6a9c0SDavid du Colombier typedef struct Ether Ether; 8*3de6a9c0SDavid du Colombier struct Ether { 9*3de6a9c0SDavid du Colombier RWlock; 10*3de6a9c0SDavid du Colombier ISAConf; /* hardware info */ 11*3de6a9c0SDavid du Colombier 12*3de6a9c0SDavid du Colombier int ctlrno; 13*3de6a9c0SDavid du Colombier ulong tbdf; 14*3de6a9c0SDavid du Colombier int minmtu; 15*3de6a9c0SDavid du Colombier int maxmtu; 16*3de6a9c0SDavid du Colombier 17*3de6a9c0SDavid du Colombier Netif; 18*3de6a9c0SDavid du Colombier 19*3de6a9c0SDavid du Colombier void (*attach)(Ether*); /* filled in by reset routine */ 20*3de6a9c0SDavid du Colombier void (*detach)(Ether*); 21*3de6a9c0SDavid du Colombier void (*transmit)(Ether*); 22*3de6a9c0SDavid du Colombier void (*interrupt)(Ureg*, void*); 23*3de6a9c0SDavid du Colombier long (*ifstat)(Ether*, void*, long, ulong); 24*3de6a9c0SDavid du Colombier long (*ctl)(Ether*, void*, long); /* custom ctl messages */ 25*3de6a9c0SDavid du Colombier void (*power)(Ether*, int); /* power on/off */ 26*3de6a9c0SDavid du Colombier void (*shutdown)(Ether*); /* shutdown hardware before reboot */ 27*3de6a9c0SDavid du Colombier 28*3de6a9c0SDavid du Colombier void* ctlr; 29*3de6a9c0SDavid du Colombier uchar ea[Eaddrlen]; 30*3de6a9c0SDavid du Colombier void* address; 31*3de6a9c0SDavid du Colombier int irq; 32*3de6a9c0SDavid du Colombier 33*3de6a9c0SDavid du Colombier Queue* oq; 34*3de6a9c0SDavid du Colombier }; 35*3de6a9c0SDavid du Colombier 36*3de6a9c0SDavid du Colombier extern Block* etheriq(Ether*, Block*, int); 37*3de6a9c0SDavid du Colombier extern void addethercard(char*, int(*)(Ether*)); 38*3de6a9c0SDavid du Colombier extern ulong ethercrc(uchar*, int); 39*3de6a9c0SDavid du Colombier extern int parseether(uchar*, char*); 40*3de6a9c0SDavid du Colombier 41*3de6a9c0SDavid du Colombier #define NEXT(x, l) (((x)+1)%(l)) 42*3de6a9c0SDavid du Colombier #define PREV(x, l) (((x) == 0) ? (l)-1: (x)-1) 43