diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-01-13 11:41:37 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-01-13 11:41:37 +0100 |
commit | 7b5cf8de2dccafa565a62908d307f2033ee69420 (patch) | |
tree | 35a6db1f8c49d583de9765c1f4f4c6c662ab3b96 /sys/src/9/pc/ether79c970.c | |
parent | ad36593a991e526168f5bcc2d3d14e0c66c0f642 (diff) |
ether79c970: dont disable promisc mode when multicast table is not empty
Diffstat (limited to 'sys/src/9/pc/ether79c970.c')
-rw-r--r-- | sys/src/9/pc/ether79c970.c | 5 |
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 |