Switching from wired to wireless getting "network down"

martinko gamato at users.sf.net
Thu Dec 31 10:54:06 UTC 2009


John Baldwin wrote:
> On Tuesday 29 December 2009 4:29:23 pm martinko wrote:
>> Sam Leffler wrote:
>>>
>>> r190526 makes it possible to do the wired/wireless failover in HEAD. The
>>> only caveat is you must manually set the mac address of the wireless
>>> device to match the wired device because lagg's automatic setting of the
>>> wlanX ifnet doesn't propagate to the underlying device (the way
>>> if_setlladdr works makes it difficult). In the mean time you can do:
>>>
>>> ifconfig ath0 ether 00:11:22:33:44:55
>>>
>>> where the mac address is whatever your wired nic's address is and then
>>> setup lagg0 using the wlan; e.g.
>>>
>>> ifconfig ath0 ether 00:11:22:33:44:55
>>> ifconfig wlan create wlandev ath0 ssid my_net up
>>> ifconfig lagg create laggproto failover laggport em0 laggport wlan0 ...
>>>
>>> I also verified it works with WPA. In fact I tested this on a thinkpad
>>> in a docking station and it did the right thing just un-docking and
>>> re-docking. My only complaint is my ping running during all this lost
>>> one packet in the transition; not sure where.
>>>
>>> Sam
>>
>> Hallo,
>>
>> I've tried to figure out how to make this persistant via rc.conf and I'm
>> running into a dependency issue -- lagg is created before wlan:
>>
>> This is in my rc.conf:
>>
>> ifconfig_sk0="up"
>> ifconfig_iwi0="ether 00:11:22:33:44:55" # match wired (sk0)
>> wlans_iwi0="wlan0"
>> ifconfig_wlan0="wpa"
>>
>> cloned_interfaces="lagg0"
>> ifconfig_lagg0="laggproto failover laggport sk0 laggport wlan0 dhcp"
>>
>> And this is the result of /etc/rc.d/netif restart :
>>
>> Stopping Network: lo0 sk0 fwe0 fwip0 iwi0 wlan0.
>> [...]
>> ifconfig: interface wlan0 does not exist
>> Starting wpa_supplicant.
>> ifconfig: SIOCSLAGGPORT: Device busy
>> Starting Network: lo0 sk0 iwi0 lagg0.
>> lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST>  metric 0 mtu 16384
>>           options=3<RXCSUM,TXCSUM>
>>           inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5
>>           inet6 ::1 prefixlen 128
>>           inet 127.0.0.1 netmask 0xff000000
>> sk0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST>  metric 0 mtu 1500
>>           options=b<RXCSUM,TXCSUM,VLAN_MTU>
>>           ether 00:11:22:33:44:55
>>           media: Ethernet autoselect (none)
>>           status: no carrier
>> iwi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST>  metric 0 mtu 2290
>>           ether 00:11:22:33:44:55
>>           media: IEEE 802.11 Wireless Ethernet autoselect mode 11g
>>           status: associated
>> lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST>  metric 0 mtu 1500
>>           options=b<RXCSUM,TXCSUM,VLAN_MTU>
>>           ether 00:11:22:33:44:55
>>           media: Ethernet autoselect
>>           status: no carrier
>>           laggproto failover
>>           laggport: sk0 flags=1<MASTER>
>>
>> Please note that wlan0 is not part of lagg0 (!)
>> If I create it from command line it works as described in previous email.
>> It looks to me that wlan0 is not created fast enough and thus not added
>> to lagg0. :-/
>> Any suggestions how to solve this please ?
>
> Use an explicit 'network_interfaces' value in rc.conf that puts lagg0 last.
>

Hallo,

Thanks for the hint.  However it behaves very strangely..

This is what I added to my rc.conf (above):
network_interfaces="lo0 sk0 iwi0 wlan0 lagg0"

After /etc/rc.d/netif restart I see various funny things:

1)

wpa_supplicant not running? (check /var/run/wpa_supplicant/wlan0.pid).

even though it seems to be running (checked before):

$ cat /var/run/wpa_supplicant/wlan0.pid
10349
$ PS wpa
root       10349     1 10349 10349    0 Ss    ??    0:00.00 
/usr/sbin/wpa_supplicant -s -B -i wlan0 -c /etc/wpa_supplicant.conf -D

2)

ifconfig: interface wlan0 does not exist

even though as checked before:

$ ifconfig wlan0
wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
         ether 00:11:22:33:44:55
         media: IEEE 802.11 Wireless Ethernet autoselect mode 11g
         status: associated
         ssid gamato channel 1 (2412 Mhz 11g) bssid 00:01:02:03:04:05
         country US authmode WPA2/802.11i privacy ON deftxkey UNDEF
         AES-CCM 2:128-bit txpower 0 bmiss 24 scanvalid 60 protmode CTS wme
         roaming MANUAL

3)

lagg0 listed twice (!):

Stopping Network: lo0 sk0 iwi0 wlan0 lagg0 lagg0.
[...]
Starting wpa_supplicant.
ifconfig: SIOCSLAGGPORT: Device busy
ifconfig: SIOCSLAGGPORT: Device busy
Starting Network: lo0 sk0 iwi0 wlan0 lagg0 lagg0.
[...]
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
[...]
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500

4)

Right now, as if it was not enough, something new is happening:

Starting wpa_supplicant.
ioctl[SIOCS80211, op 26, arg 0x0]: Operation not supported
ELOOP: remaining socket: sock=5 eloop_data=0x28407140 
user_data=0x2840e040 handler=0x8069f40
/etc/rc.d/wpa_supplicant: WARNING: failed to start wpa_supplicant
ifconfig: SIOCSLAGGPORT: Device busy
ifconfig: SIOCSLAGGPORT: Device busy

and in /var/log/messages:

Dec 31 11:40:10 mb-aw1n-bsd kernel: iwi0: timeout processing command 
blocks for iwi_bss firmware
Dec 31 11:40:10 mb-aw1n-bsd kernel: iwi0: could not load boot firmware 
iwi_bss
Dec 31 11:40:10 mb-aw1n-bsd kernel: iwi0: timeout waiting for master
[...]
Dec 31 11:40:10 mb-aw1n-bsd wpa_supplicant[12833]: ctrl_iface exists and 
seems to be in use - cannot override it
Dec 31 11:40:10 mb-aw1n-bsd wpa_supplicant[12833]: Delete 
'/var/run/wpa_supplicant/wlan0' manually if it is not used anymore
Dec 31 11:40:10 mb-aw1n-bsd wpa_supplicant[12833]: Failed to initialize 
control interface '/var/run/wpa_supplicant'. You may have another 
wpa_supplicant process already ru
Dec 31 11:40:10 mb-aw1n-bsd wpa_supplicant[12833]: Failed to disable WPA 
in the driver.
Dec 31 11:40:10 mb-aw1n-bsd root: /etc/rc.d/wpa_supplicant: WARNING: 
failed to start wpa_supplicant

while there is nothing to delete:

$ ll /var/run/wp*
ls: /var/run/wp*: No such file or directory

Something seems to be broken. :-/

With regards,

Martin



More information about the freebsd-mobile mailing list