diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2016-09-16 23:21:54 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2016-09-16 23:21:54 +0200 |
commit | c937aac59bf77b56e665564092e680159a118115 (patch) | |
tree | 21327ba111408a7edbc1fe5429baf655cbd5878a /sys/src/cmd/nusb/ether/asix.c | |
parent | 7bcbef11eb17d0b5f756acd74762d1a285aa134f (diff) |
nusb/ether: experimental pomisc mode and multicast support for smsc and asix
Diffstat (limited to 'sys/src/cmd/nusb/ether/asix.c')
-rw-r--r-- | sys/src/cmd/nusb/ether/asix.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/sys/src/cmd/nusb/ether/asix.c b/sys/src/cmd/nusb/ether/asix.c index 7ef5df64d..560ef12e6 100644 --- a/sys/src/cmd/nusb/ether/asix.c +++ b/sys/src/cmd/nusb/ether/asix.c @@ -262,13 +262,26 @@ asixpromiscuous(Dev *d, int on) int rxctl; rxctl = getrxctl(d); - if(on != 0) + if(on) rxctl |= Rxctlprom; else rxctl &= ~Rxctlprom; return asixset(d, Cwrxctl, rxctl); } +static int +asixmulticast(Dev *d, uchar*, int) +{ + int rxctl; + + rxctl = getrxctl(d); + if(nmulti != 0) + rxctl |= Rxctlamall; + else + rxctl &= ~Rxctlamall; + return asixset(d, Cwrxctl, rxctl); +} + int a88178init(Dev *d) { @@ -316,6 +329,9 @@ a88178init(Dev *d) epreceive = asixreceive; eptransmit = asixtransmit; + eppromiscuous = asixpromiscuous; + epmulticast = asixmulticast; + return 0; } @@ -373,5 +389,8 @@ a88772init(Dev *d) epreceive = asixreceive; eptransmit = asixtransmit; + eppromiscuous = asixpromiscuous; + epmulticast = asixmulticast; + return 0; } |