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