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>