xref: /plan9/sys/src/9/mtx/etherif.h (revision 9b7bf7df4595c26f1e9b67beb0c6e44c9876fb05)
1 enum {
2 	MaxEther	= 24,
3 	Ntypes		= 8,
4 };
5 
6 typedef struct Ether Ether;
7 struct Ether {
8 	ISAConf;			/* 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	(*transmit)(Ether*);
18 	void	(*interrupt)(Ureg*, void*);
19 	long	(*ifstat)(Ether*, void*, long, ulong);
20 	long 	(*ctl)(Ether*, void*, long); /* custom ctl messages */
21 	void	*ctlr;
22 
23 	Queue*	oq;
24 
25 	Netif;
26 };
27 
28 extern Block* etheriq(Ether*, Block*, int);
29 extern void addethercard(char*, int(*)(Ether*));
30 extern ulong ethercrc(uchar*, int);
31 
32 #define NEXT(x, l)	(((x)+1)%(l))
33 #define PREV(x, l)	(((x) == 0) ? (l)-1: (x)-1)
34