summaryrefslogtreecommitdiff
path: root/sys/src/9
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2018-01-13 11:41:37 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2018-01-13 11:41:37 +0100
commit7b5cf8de2dccafa565a62908d307f2033ee69420 (patch)
tree35a6db1f8c49d583de9765c1f4f4c6c662ab3b96 /sys/src/9
parentad36593a991e526168f5bcc2d3d14e0c66c0f642 (diff)
ether79c970: dont disable promisc mode when multicast table is not empty
Diffstat (limited to 'sys/src/9')
-rw-r--r--sys/src/9/pc/ether79c970.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/src/9/pc/ether79c970.c b/sys/src/9/pc/ether79c970.c
index 28698ec88..a0577f818 100644
--- a/sys/src/9/pc/ether79c970.c
+++ b/sys/src/9/pc/ether79c970.c
@@ -299,7 +299,7 @@ promiscuous(void* arg, int on)
ctlr->iow(ctlr, Rap, 15);
x = ctlr->ior(ctlr, Rdp) & ~Prom;
- if(on)
+ if(on || ether->nmaddr > 0)
x |= Prom;
ctlr->iow(ctlr, Rdp, x);
ctlr->iow(ctlr, Rap, 0);
@@ -315,7 +315,8 @@ promiscuous(void* arg, int on)
static void
multicast(void* arg, uchar*, int)
{
- promiscuous(arg, 1);
+ Ether *ether = arg;
+ promiscuous(arg, ether->prom);
}
static void