xref: /plan9/sys/src/9/ppc/etherif.h (revision 12009bff671a91993ae58f16dab833e809f4a6f3)
1*458db832SDavid du Colombier enum {
2*458db832SDavid du Colombier 	MaxEther	= 24,
3*458db832SDavid du Colombier 	Ntypes		= 8,
4*458db832SDavid du Colombier };
5*458db832SDavid du Colombier 
6*458db832SDavid du Colombier typedef struct Ether Ether;
7*458db832SDavid du Colombier struct Ether {
8*458db832SDavid du Colombier 	ISAConf;			/* hardware info */
9*458db832SDavid du Colombier 
10*458db832SDavid du Colombier 	int	ctlrno;
11*458db832SDavid du Colombier 	int	tbdf;			/* type+busno+devno+funcno */
12*458db832SDavid du Colombier 	int	minmtu;
13*458db832SDavid du Colombier 	int 	maxmtu;
14*458db832SDavid du Colombier 	uchar	ea[Eaddrlen];
15*458db832SDavid du Colombier 
16*458db832SDavid du Colombier 	void	(*attach)(Ether*);	/* filled in by reset routine */
17*458db832SDavid du Colombier 	void	(*transmit)(Ether*);
18*458db832SDavid du Colombier 	void	(*interrupt)(Ureg*, void*);
19*458db832SDavid du Colombier 	long	(*ifstat)(Ether*, void*, long, ulong);
20*458db832SDavid du Colombier 	long 	(*ctl)(Ether*, void*, long); /* custom ctl messages */
21*458db832SDavid du Colombier 	void	*ctlr;
22*458db832SDavid du Colombier 
23*458db832SDavid du Colombier 	Queue*	oq;
24*458db832SDavid du Colombier 
25*458db832SDavid du Colombier 	Netif;
26*458db832SDavid du Colombier };
27*458db832SDavid du Colombier 
28*458db832SDavid du Colombier extern Block* etheriq(Ether*, Block*, int);
29*458db832SDavid du Colombier extern void addethercard(char*, int(*)(Ether*));
30*458db832SDavid du Colombier extern ulong ethercrc(uchar*, int);
31*458db832SDavid du Colombier 
32*458db832SDavid du Colombier #define NEXT(x, l)	(((x)+1)%(l))
33*458db832SDavid du Colombier #define PREV(x, l)	(((x) == 0) ? (l)-1: (x)-1)
34