On Sat, Feb 21, 2009 at 09:31:33AM -0800, reinette chatre wrote: > On Fri, 2009-02-20 at 16:31 -0800, John W. Linville wrote: > > From: John W. Linville <linville@xxxxxxxxxxxxx> > > > > Default to MAX_UCODE_BEACON_INTERVAL if the output of > > iwl_adjust_beacon_interval would otherwise be zero. This prevents a > > division by zero on my iwl5300-equipped Lenovo T400 with kernels that > > include "mac80211: use cfg80211s BSS infrastructure". > > > > This patch is a bit of a hack -- I'm not sure why iwl_setup_rxon_timing > > is giving iwl_adjust_beacon_interval a zero input (which is the only way > > it would output zero). I would be happy to have a better fix. But for > > now, this makes my box boot... > > > > Signed-off-by: John W. Linville <linville@xxxxxxxxxxxxx> > > Unfortunately I do not have a better fix, but I could shed some light > onto what may be going on and hope we can together figure out what is > the problem. > > First, it appears that your problem occurs during association. The > driver obtains the value of beacon interval from mac80211 at the time it > is asked to associate (specifically, mac80211 calls bss_info_changed > with BSS_CHANGED_ASSOC and ieee80211_bss_conf->assoc is true). The > driver obtains beacon interval from iee80211_bss_conf structure at this > time. As you indicate - the driver gets a zero and this causes an oops > later. > > Now, the patch you pointed out ("mac80211: use cfg80211s BSS > infrastructure") changes the way in which the beacon interval value is > obtained and stored ... but yet I cannot see how it can be different > from before and cause zero to be returned. Here I hope that Johannes can > shed some light. > > Before this patch we used mac80211's BSS infrastructure and placed the > beacon interval from the beacon frame in that. Now we use cfg80211's BSS > infrastructure and place the beacon interval from the probe response in > that. Now, the function that does this (ieee80211_bss_info_update) does > not currently distinguish between beacon and probe resp when it updates > the BSS information and uses the probe resp fields (in > cfg80211_inform_bss_frame). This should not matter because the beacon > and probe resp fields are the same in this regard. > > So ... if the information is obtained in the same way there could maybe > be an issue in how it is stored now? This has also changed significantly > with the move to the rbtree. I don't know. I'm sorry if I was too terse, but at least it had the benefit of you reproducing my struggle and my analysis (and my perplexed frustration). :-) > Johannes, do you perhaps know how beacon interval was ok with the > mac80211 BSS infrastructure, but now we get zero after moving to > cfg80211 BSS infrastructure? Help us Obi Wan Johannes...you're our only hope! :-) John -- John W. Linville Someday the world will need a hero, and you linville@xxxxxxxxxxxxx might be all we have. Be ready. -- 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