Subject: Re: mac80211 ad-hoc: carrier not set up [was: Panic in ieee_80211_ibss_add_sta]

From: Ivo van Doorn <[email-masked]>
Date: Tue, 15 May 2007 23:59:28 +0200

Hi,

> However, ad-hoc still does not work, since the network device's
> carrier status does not seem to be properly set. (It remains
> in NO-CARRIER even after "wlan0: Selected IBSS BSSID
> 92:68:a2:db:de:45 based on configured SSID". I dirtily hacked
> around that with the following two-liner:

I was aware of the recent rt2x00 adhoc breakage but hadn't looked into it yet,
the below suggestion about the netif_carrier does make sense though,
since the last report it was working was before rt2x00 removed the ieee80211_netif
calls, and the first report of its breakage was some time after the removal.
(Since a lot of code has been moved around in between the ieee80211_netif wasn't
the first thing that I would have thought of as a probable cause. ;) )

> --- wireless-dev/net/mac80211/ieee80211_sta.c.orig	2007-05-15 20:19:55.000000000 +0200
> +++ wireless-dev/net/mac80211/ieee80211_sta.c	2007-05-15 21:19:38.362587215 +0200
> @@ -2448,6 +2448,7 @@
>  	mod_timer(&ifsta->timer, jiffies + IEEE80211_IBSS_MERGE_INTERVAL);
>  
>  	ieee80211_rx_bss_put(dev, bss);
> +	netif_carrier_on(dev);
>  
>  	return res;
>  }
> @@ -2648,6 +2649,7 @@
>  
>  	ifsta->ssid_set = len ? 1 : 0;
>  	if (sdata->type == IEEE80211_IF_TYPE_IBSS && !ifsta->bssid_set) {
> +		netif_carrier_off(dev);
>  		ifsta->ibss_join_req = jiffies;
>  		ifsta->state = IEEE80211_IBSS_SEARCH;
>  		return ieee80211_sta_find_ibss(dev, ifsta);
> 
> 
> However, I have NO CLUE WHAT I'M DOING THERE! Make a proper fix!
> (Especially, I think it needs more netif_carrier_off calls in
> different places.)
> 
> 
> Anyway, thanks for my now-working wireless,

Ivo