vx32

Local 9vx git repository for patches.
git clone git://r-36.net/vx32
Log | Files | Refs

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))