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