I think the same applies for promiscuous mode, if the interface undergoes
configuration changes while it's in promiscuous mode and the hardware
gets reinitialized it "forgets" about being in that mode. This happens
at least with em.
Pete
Luigi Rizzo wrote:
[Bcc to re@ because it would be good to have it fixed before 5.0]
Hi,
Pavlin Radoslavov recently discovered a problem that affects several
network drivers and tends to show up when running multicast routing.
The problem is that the multicast routing code calls iff_allmulti()
on the interfaces, which should enable them to receive all multicast
packets. The device independent code sets the IFF_ALLMULTI flag in
the ifp, and then calls the device-specific ioctl handler for
SIOCSIFFLAGS.
Individual drivers handle this call in the most various ways. Some
unconditionally reinitialize the hardware; some try to be smart and
only check which IFF_* flags have changed and perform appropriate
actions. And here is the problem -- several drivers forget to check
for a change in IFF_ALLMULTI, thus causing the change to be ignored
until some future action on the interface causes it (or its multicast
filter) to be reinitialized.
A list of broken which are broken and good is below. The 'broken'
list is worrysome as it includes a lot of new/high performance/wireless
cards.
Broken: dc mn sf sk ste ti tl xl an bge em gem gx ie lge sr
aue cue kue wi xe
Correct: de rl sis vr wb ar(?) cnw cs ed ep ex fe fxp
hme lnc my nge ray sbni sn tx txp vx wl
I believe the best way to fix this bug (in the *_ioctl handler,
for the SIOCSIFFLAGS case) is to follow the approach used by the
cs, ed, fe and vx drivers -- but if others have better suggestions
please let me know.
So, provided re@ approves, expect to see some commits to the drivers
in the 'broken' list related to this problem.
cheers
luigi
----------------------------------+-----------------------------------------
Luigi RIZZO, [EMAIL PROTECTED] . ICSI (on leave from Univ. di Pisa)
http://www.iet.unipi.it/~luigi/ . 1947 Center St, Berkeley CA 94704
Phone: (510) 666 2988
----------------------------------+-----------------------------------------
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-net" in the body of the message
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-net" in the body of the message