Search Linux Wireless

Re: [PATCH v2 0/3] mac80211: fix rate_control_send_low warnings for delbas

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

 



On Fri, Oct 01, 2010 at 01:33:50PM -0700, Luis R. Rodriguez wrote:
> The following two patches:
> 
> 9c87ba6 - mac80211: Fix reassociation processing (within ESS roaming)
> e1dd33f - cfg80211: Allow reassociation in associated state
> 
> $ git describe --contains 9c87ba6
> v2.6.34-rc2~48^2~77^2~6
> $ git describe --contains 9c87ba6
> v2.6.34-rc2~48^2~77^2~6
> 
> Added support for cfg80211/mac80211 to cleanly roam between two BSSes
> on an ESS by allowing the station to authenticate to two APS at the
> same time, and when an association comes in for the new AP we first
> disassociate from the old AP and then associate with the new one.
> 
> What we forgot to take into consideration is that when we disassociate
> with the older AP we may need to transmit frames to that AP and those
> frames may actually be intended to go under a different channel and
> even sometimes a completely separate band than the new APs. When we
> TX a frame we assume the frame we want to TX however will be on the
> current hardware configured channel. The channel we would try to
> send a frame on can be different than the channel we prepared the
> bitrates for the peer on though. What this meant is that upon tearing
> down a BA agreement we would try to send a frame to a peer but not
> find a valid rate for that peer and generate warnings like the
> following:
> 
> WARNING: at include/net/mac80211.h:2677 rate_control_send_low+0xd3/0x140 [mac80211]()
> Hardware name: 6460DWU
> Modules linked in: ath9k mac80211 ath9k_common ath9k_hw ath cfg80211 <etc>
> Pid: 898, comm: wpa_supplicant Tainted: G        W   2.6.36-rc5-wl+ #254
> Call Trace:
>  [<ffffffff8105fddf>] warn_slowpath_common+0x7f/0xc0
>  [<ffffffff8105fe3a>] warn_slowpath_null+0x1a/0x20
>  [<ffffffffa03b8573>] rate_control_send_low+0xd3/0x140 [mac80211]
>  [<ffffffffa0192fa8>] ath_get_rate+0x48/0x570 [ath9k]
>  [<ffffffff812b8d19>] ? put_dec+0x59/0x60
>  [<ffffffffa03b839e>] rate_control_get_rate+0x8e/0x190 [mac80211]
>  [<ffffffffa03c27e8>] ieee80211_tx_h_rate_ctrl+0x1a8/0x4e0 [mac80211]
>  [<ffffffffa03c2ec0>] invoke_tx_handlers+0x100/0x140 [mac80211]
>  [<ffffffffa03c2f85>] ieee80211_tx+0x85/0x240 [mac80211]
>  [<ffffffff81479c70>] ? skb_release_data+0xd0/0xe0
>  [<ffffffff8147bb0d>] ? pskb_expand_head+0x10d/0x1a0
>  [<ffffffffa03c31f6>] ieee80211_xmit+0xb6/0x1d0 [mac80211]
>  [<ffffffff81479db3>] ? __alloc_skb+0x83/0x170
>  [<ffffffffa03c3364>] ieee80211_tx_skb+0x54/0x70 [mac80211]
>  [<ffffffffa03ac0dd>] ieee80211_send_delba+0x11d/0x190 [mac80211]
>  [<ffffffffa03adcf0>] ___ieee80211_stop_rx_ba_session+0xf0/0x110 [mac80211]
>  [<ffffffffa03add60>] __ieee80211_stop_rx_ba_session+0x50/0x70 [mac80211]
>  [<ffffffffa03ac3f3>] ieee80211_sta_tear_down_BA_sessions+0x43/0x50 [mac80211]
>  [<ffffffffa03b23c3>] ieee80211_set_disassoc+0x103/0x240 [mac80211]
>  [<ffffffffa03b3b2d>] ieee80211_mgd_assoc+0x8d/0x3a0 [mac80211]
>  [<ffffffffa03ba66f>] ieee80211_assoc+0x4f/0x80 [mac80211]
>  [<ffffffffa011e5b6>] __cfg80211_mlme_assoc+0x1f6/0x240 [cfg80211]
>  [<ffffffffa011e68f>] cfg80211_mlme_assoc+0x8f/0xc0 [cfg80211]
>  [<ffffffffa010afd0>] ? cfg80211_get_dev_from_ifindex+0x70/0x80 [cfg80211]
>  [<ffffffffa011489a>] nl80211_associate+0x23a/0x260 [cfg80211]
>  [<ffffffff812c6c6f>] ? nla_parse+0xef/0x110
>  [<ffffffff814ad738>] genl_rcv_msg+0x1d8/0x210
>  [<ffffffff81475cf4>] ? sock_alloc_send_pskb+0x1d4/0x330
>  [<ffffffff814ad560>] ? genl_rcv_msg+0x0/0x210
>  [<ffffffff814ac179>] netlink_rcv_skb+0xa9/0xd0
>  [<ffffffff814ad545>] genl_rcv+0x25/0x40
>  [<ffffffff814abdd8>] netlink_unicast+0x2c8/0x2e0
>  [<ffffffff814acc30>] netlink_sendmsg+0x250/0x360
>  [<ffffffff81472643>] sock_sendmsg+0xf3/0x120
>  [<ffffffff81562dbe>] ? _raw_spin_lock+0xe/0x20
>  [<ffffffff81471105>] ? move_addr_to_kernel+0x65/0x70
>  [<ffffffff8147d168>] ? verify_iovec+0x88/0xe0
>  [<ffffffff81472d70>] sys_sendmsg+0x240/0x3a0
>  [<ffffffff81151b0a>] ? do_readv_writev+0x1aa/0x1f0
>  [<ffffffff815604b0>] ? schedule+0x3c0/0xa00
>  [<ffffffff81151b98>] ? vfs_writev+0x48/0x60
>  [<ffffffff81151cc1>] ? sys_writev+0x51/0xb0
>  [<ffffffff8100b072>] system_call_fastpath+0x16/0x1b
> 
> This can be easily reproduced with the test-roam script [1] and
> statically defining the ESS variable with the BSSes of an AP
> in 2.4 GHz band and another one on the 5 GHz band.
> 
> Since we end up associated 

typo, I meant authenticate

> to two different APs at the same
> time to transmit to either AP consists of an offchannel

and this should read "to transmit to the new AP consinst
of an offchannel"

> operation and mac80211 does have a state machine for this
> but assumes we don't transmit on our operating channel within
> each work item. If we do need to transmit to on the operating
> channel each work item needs to ensure this. This series
> addresses this by addressing a series of possible races on
> the frame's set channel, prevening us from associating to a
> new AP if we were previously associated and haven't yet
> associated, and ensuring we transmit the disassocation on
> the operating channel.

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