Skip site navigation (1)Skip section navigation (2)
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>