diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-02-12 19:05:01 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-02-12 19:05:01 +0100 |
commit | df6a30f3c0e2be41161101db0d62f5c02d93bbc0 (patch) | |
tree | 4430920daefd856114e1f0bcc0a4ea3f8b517212 /sys/src | |
parent | 04583235548da2111a8cda7d186bc0a020214369 (diff) |
if ether, then etherif.h
Diffstat (limited to 'sys/src')
-rw-r--r-- | sys/src/9/port/etherif.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/sys/src/9/port/etherif.h b/sys/src/9/port/etherif.h new file mode 100644 index 000000000..f722b9108 --- /dev/null +++ b/sys/src/9/port/etherif.h @@ -0,0 +1,38 @@ +enum { + MaxEther = 64, + Ntypes = 8, +}; + +typedef struct Ether Ether; +struct Ether { + ISAConf; /* hardware info */ + int tbdf; /* type+busno+devno+funcno */ + + int ctlrno; + int minmtu; + int maxmtu; + uchar ea[Eaddrlen]; + + void (*attach)(Ether*); /* filled in by reset routine */ + void (*detach)(Ether*); + void (*transmit)(Ether*); + long (*ifstat)(Ether*, void*, long, ulong); + long (*ctl)(Ether*, void*, long); /* custom ctl messages */ + void (*power)(Ether*, int); /* power on/off */ + void (*shutdown)(Ether*); /* shutdown hardware before reboot */ + void *ctlr; + + Queue* oq; + + Netif; +}; + +extern Block* etheriq(Ether*, Block*, int); +extern void addethercard(char*, int(*)(Ether*)); +extern ulong ethercrc(uchar*, int); +extern int parseether(uchar*, char*); + +#define NEXT(x, l) (((x)+1)%(l)) +#define PREV(x, l) (((x) == 0) ? (l)-1: (x)-1) +#define HOWMANY(x, y) (((x)+((y)-1))/(y)) +#define ROUNDUP(x, y) (HOWMANY((x), (y))*(y)) |