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