Author: glebius
Date: Wed Sep  2 12:46:42 2015
New Revision: 287394
URL: https://svnweb.freebsd.org/changeset/base/287394

Log:
  Fix dynamic attach/detach of 802.11 devices after r287197:
  
  o In pccard_ether add code to start children of a 802.11
    device, that are configured in rc.conf.
  o In devd.conf provide a regex matching all 802.11 devices,
    and on match run pccard_ether to spawn children.
  
  PR:           202784
  Submitted by: <vidwer gmail.com>
  In collaboration with:        "Oleg V. Nauman" <oleg opentransfer.com>

Modified:
  head/etc/devd.conf
  head/etc/pccard_ether

Modified: head/etc/devd.conf
==============================================================================
--- head/etc/devd.conf  Wed Sep  2 05:55:57 2015        (r287393)
+++ head/etc/devd.conf  Wed Sep  2 12:46:42 2015        (r287394)
@@ -22,6 +22,9 @@ options {
                "(aac|adv|adw|aha|ahb|ahc|ahd|aic|amd|amr|asr|bt|ciss|ct|dpt|\
                esp|ida|iir|ips|isp|mlx|mly|mpt|ncr|ncv|nsp|stg|sym|trm|wds)\
                [0-9]+";
+       set wifi-driver-regex
+               "(ath|bwi|bwn|ipw|iwi|iwn|malo|mwl|ral|rsu|rum|run|uath|upgt|\
+               ural|urtw|urtwn|wi|wpi|wtap|zyd)[0-9]+";
 };
 
 # Note that the attach/detach with the highest value wins, so that one can
@@ -57,17 +60,16 @@ notify 0 {
 };
 
 #
-# Like Ethernet devices, but separate because
-# they have a different media type.  We may want
-# to exploit this later.
+# Like Ethernet devices, but separate because 802.11 require spawning
+# wlan(4) interface.
 #
-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";
+       device-name "$wifi-driver-regex";
+       action "/etc/pccard_ether $device-name startchildren";
+};
+detach 0 {
+       device-name "$wifi-driver-regex";
+       action "/etc/pccard_ether $device-name stopchildren";
 };
 notify 0 {
        match "system"          "IFNET";

Modified: head/etc/pccard_ether
==============================================================================
--- head/etc/pccard_ether       Wed Sep  2 05:55:57 2015        (r287393)
+++ head/etc/pccard_ether       Wed Sep  2 12:46:42 2015        (r287394)
@@ -17,6 +17,9 @@ stop_precmd="checkauto"
 stop_cmd="pccard_ether_stop"
 restart_precmd="checkauto"
 restart_cmd="pccard_ether_restart"
+startchildren_cmd="pccard_ether_startchildren"
+stopchildren_cmd="pccard_ether_stopchildren"
+extra_commands="startchildren stopchildren"
 
 setup_routes()
 {
@@ -114,6 +117,20 @@ pccard_ether_restart()
        pccard_ether_start
 }
 
+pccard_ether_startchildren()
+{
+       for child in `get_if_var $ifn wlans_IF`; do
+               /etc/rc.d/netif quietstart $child
+       done
+}
+
+pccard_ether_stopchildren()
+{
+       for child in `get_if_var $ifn wlans_IF`; do
+               /etc/rc.d/netif quietstop $child
+       done
+}
+
 ifn=$1
 shift
 if [ -z "$*" ]; then
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to