On Tue, 2010-06-08 at 14:48 +0200, ext Johannes Berg wrote: > On Tue, 2010-06-08 at 15:34 +0300, Teemu Paasikivi wrote: > > When joinig a ibss network, basic rates for bss were not stored. When > > network was self created, leaving and (re)joining same network has > > caused basic rates to be left unset. With this patch stored values are > > used. > > > bss = cfg80211_inform_bss_frame(local->hw.wiphy, local->hw.conf.channel, > > mgmt, skb->len, 0, GFP_KERNEL); > > + > > + ibss = (struct ieee80211_bss *)(bss->priv); > > Watch out -- bss can be NULL here if memory allocation fails. It's just > that put_bss(NULL) is valid. > That's correct. My fault, how could I miss that? Obviously easily. > > + for (i = 0; i < sband->n_bitrates; i++) { > > + u8 basic = 0x00; > > + if (basic_rates & BIT(i)) > > + basic = 0x80; > > + > > + ibss->supp_rates[i] = supp_rates[i] | basic; > > + } > > + > > + ibss->supp_rates_len = i; > > + > > cfg80211_put_bss(bss); > > > However this kinda confuses me. > > We had a long-standing TODO item on our list at > http://wireless.kernel.org/en/developers/todo-list > > "when leaving an IBSS and we were the only member, remove it from > cfg80211's BSS list" > > Maybe that would help here too? > Yes, I think that would propably solve that issue where IBSS was recreated and requested basic rates are changed. > However I don't understand the scenario anyway. If you create an IBSS, > you start beaconing and tell cfg80211 about it with a frame that > includes the supported and basic rates. Then you leave, but the BSS > stays around in cfg80211 for 15 seconds. If you re-join within those 15 > seconds, the scan results will pick up the old IBSS that no longer > exists, and we "join" it rather than creating it. > > However -- joining it will take the basic rates from it. So wouldn't you > get the old basic rates which is fine? What do you mean by "left unset"? > By "left unset" I mean that in the sniffer logs there's no rates marked as basic rates in the beacons. No old ones or new ones. > What happens if you join an IBSS that already exists? > It works, but I haven't captured what's in the air. That's one reason why I sent these patches as RFC. Teemu -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html