Search Linux Wireless

Re: [PATCH] iwlagn: default to MAX_UCODE_BEACON_INTERVAL in iwl_adjust_beacon_interval

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.

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?

Thank you

Reinette


--
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

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux