Date: Wed, 5 Jan 2011 21:51:46 +0100 From: Bernhard Schmidt <bschmidt@freebsd.org> To: freebsd-net@freebsd.org Subject: devd and 802.11 Message-ID: <201101052151.46883.bschmidt@freebsd.org>
next in thread | raw e-mail | index | archive | help
--Boundary-00=_inNJN3LMd8jUArV Content-Type: Text/Plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hi, While working on the 'netif restart' issue (kern/153594) I noticed that there are to entries in devd.conf with shady usefulness. detach 0 { media-type "802.11"; action "/etc/pccard_ether $device-name stop"; }; attach 0 { media-type "802.11"; action "/etc/pccard_ether $device-name start"; }; I assume that the general use-case for devd is to automatically configure wireless devices as soon as those are plugged in (PCMCIA, ..). Those are already handled by notify 0 { match "system" "IFNET"; match "type" "ATTACH"; action "/etc/pccard_ether $subsystem start"; }; this will invoke netif which then will create and configure the wlan0 device. While wlan0 is created, devd is poked again and this time the other rule kicks in and starts netif again. This effectively results in 2 'netif start wlan0' calls. Due to the racy nature of this all tries to ensure wpa_supplicant has exclusive access to the wlan device fail, wpa_supplicant gets started twice and each instance is fighting for ownership. That devd entries a quite old (pre-VAP), the media-type might have changed and this was just overlooked, so, I did some tests to figure out if those are really necessary. After removing the 2 entries, I tried 3 things: - plug in PCMCIA card while system is up - remove PCMCIA device while system is up - kldunload if_drv; kldload if_drv in both cases, the wireless device was configure according to the settings in rc.conf. Also, cleaning up after kldunload or removal of the device worked as expected. If I'm not missing an use-case here (pointers?) and there are no complains, the attached diff is worth being committed. -- Bernhard --Boundary-00=_inNJN3LMd8jUArV Content-Type: text/x-patch; charset="ISO-8859-1"; name="devd-80211.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="devd-80211.diff" Index: etc/devd.conf =================================================================== --- etc/devd.conf (revision 217018) +++ etc/devd.conf (working copy) @@ -60,14 +60,6 @@ notify 0 { # they have a different media type. We may want # to exploit this later. # -detach 0 { - media-type "802.11"; - action "/etc/pccard_ether $device-name stop"; -}; -attach 0 { - media-type "802.11"; - action "/etc/pccard_ether $device-name start"; -}; notify 0 { match "system" "IFNET"; match "type" "LINK_UP"; --Boundary-00=_inNJN3LMd8jUArV--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201101052151.46883.bschmidt>