Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 17 Nov 2002 09:36:56 -0800
From:      Luigi Rizzo <rizzo@icir.org>
To:        net@freebsd.org
Subject:   broken IFF_ALLMULTI handling in many drivers
Message-ID:  <20021117093656.A17547@xorpc.icir.org>

next in thread | raw e-mail | index | archive | help
[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, luigi@iet.unipi.it  . 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 majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021117093656.A17547>