diff options
| author | Poul-Henning Kamp <phk@FreeBSD.org> | 1997-01-28 11:21:21 +0000 |
|---|---|---|
| committer | Poul-Henning Kamp <phk@FreeBSD.org> | 1997-01-28 11:21:21 +0000 |
| commit | e6bf99985ceff9378a106171de69bd2b0bf51916 (patch) | |
| tree | 9666c5df78c4b67fc5aa6c790a81e309dec1eccf /sys/dev/vx | |
| parent | e91707fc513e3e276410d23de98b656a17f9133f (diff) | |
Notes
Diffstat (limited to 'sys/dev/vx')
| -rw-r--r-- | sys/dev/vx/if_vx.c | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/sys/dev/vx/if_vx.c b/sys/dev/vx/if_vx.c index a4a29cd3535a..41dfb865a9d4 100644 --- a/sys/dev/vx/if_vx.c +++ b/sys/dev/vx/if_vx.c @@ -771,28 +771,25 @@ again: */ if (sc->arpcom.ac_if.if_bpf) { bpf_mtap(&sc->arpcom.ac_if, m); - - /* - * Note that the interface cannot be in promiscuous mode if - * there are no BPF listeners. And if we are in promiscuous - * mode, we have to check if this packet is really ours. - */ - if ((ifp->if_flags & IFF_PROMISC) && - (eh->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */ - bcmp(eh->ether_dhost, sc->arpcom.ac_enaddr, - sizeof(eh->ether_dhost)) != 0) { - m_freem(m); - return; - } } #endif + /* + * XXX: Some cards seem to be in promiscous mode all the time. + * we need to make sure we only get our own stuff always. + * bleah! + */ + + if ((eh->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */ + bcmp(eh->ether_dhost, sc->arpcom.ac_enaddr, + sizeof(eh->ether_dhost)) != 0) { + m_freem(m); + return; + } /* We assume the header fit entirely in one mbuf. */ m_adj(m, sizeof(struct ether_header)); ether_input(ifp, eh, m); - - /* * In periods of high traffic we can actually receive enough * packets so that the fifo overrun bit will be set at this point, |
