summaryrefslogtreecommitdiff
path: root/sys/src/cmd/nusb/ether/asix.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2016-09-16 23:21:54 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2016-09-16 23:21:54 +0200
commitc937aac59bf77b56e665564092e680159a118115 (patch)
tree21327ba111408a7edbc1fe5429baf655cbd5878a /sys/src/cmd/nusb/ether/asix.c
parent7bcbef11eb17d0b5f756acd74762d1a285aa134f (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.c21
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;
}