linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mac80211: disassociate when switching bands and not scanning
@ 2009-06-10 20:35 Luis R. Rodriguez
  2009-06-10 20:49 ` reinette chatre
  0 siblings, 1 reply; 18+ messages in thread
From: Luis R. Rodriguez @ 2009-06-10 20:35 UTC (permalink / raw)
  To: linville, johannes, j
  Cc: linux-wireless, ath9k-devel, Luis R. Rodriguez, Reinette Chatre,
	Zhu Yi, Mohamed Abbas, ipw3945-devel

If we're associated to an AP and we manually decide to switch
bands we have no guarantee we can communicate with that AP
on the new band and our current bss parameters may change
completely so disassociate.

This fixes this warning (which is not specific to iwlwifi!):

[25612.559460] ------------[ cut here ]------------
[25612.559500] WARNING: at include/net/mac80211.h:2127 rate_control_send_low+0xcf/0xe0 [mac80211]()
[25612.559508] Hardware name: VGN-N170G
[25612.559513] Modules linked in: ath9k ath mac80211 cfg80211 <bleh line cut>
[25612.559807] Pid: 14492, comm: iwconfig Not tainted 2.6.30-rc8-wl #11
[25612.559814] Call Trace:
[25612.559829]  [<c03b2cd9>] ? printk+0x18/0x1f
[25612.559865]  [<f831072f>] ? rate_control_send_low+0xcf/0xe0 [mac80211]
[25612.559878]  [<c0134f4c>] warn_slowpath_common+0x6c/0xc0
[25612.559912]  [<f831072f>] ? rate_control_send_low+0xcf/0xe0 [mac80211]
[25612.559923]  [<c0134fb5>] warn_slowpath_null+0x15/0x20
[25612.559957]  [<f831072f>] rate_control_send_low+0xcf/0xe0 [mac80211]
[25612.559985]  [<f84129c3>] ath_get_rate+0x33/0x520 [ath9k]
[25612.559998]  [<c015cb73>] ? mark_held_locks+0x63/0x80
[25612.560064]  [<f831057d>] rate_control_get_rate+0xbd/0xd0 [mac80211]
[25612.560102]  [<f8318b6f>] invoke_tx_handlers+0x5df/0xfa0 [mac80211]
[25612.560115]  [<c015cb73>] ? mark_held_locks+0x63/0x80
[25612.560152]  [<f8317854>] ? __ieee80211_tx_prepare+0x194/0x3b0 [mac80211]
[25612.560190]  [<f8319796>] ieee80211_tx+0xd6/0x280 [mac80211]
[25612.560227]  [<f831972f>] ? ieee80211_tx+0x6f/0x280 [mac80211]
[25612.560265]  [<f8319e39>] ieee80211_master_start_xmit+0x1f9/0x400 [mac80211]
[25612.560280]  [<c032347b>] dev_hard_start_xmit+0x2ab/0x340
[25612.560292]  [<c0323230>] ? dev_hard_start_xmit+0x60/0x340
[25612.560304]  [<c0335675>] __qdisc_run+0x1e5/0x240
[25612.560316]  [<c03245d7>] dev_queue_xmit+0x377/0x4e0
[25612.560328]  [<c0324298>] ? dev_queue_xmit+0x38/0x4e0
[25612.560365]  [<f831c1d2>] ieee80211_tx_skb+0x52/0x60 [mac80211]
[25612.560400]  [<f83079d0>] ieee80211_send_delba+0xf0/0x150 [mac80211]
[25612.560413]  [<c013f931>] ? del_timer_sync+0x81/0xb0
[25612.560447]  [<f830903a>] __ieee80211_stop_rx_ba_session+0xea/0x1d0 [mac80211]
[25612.560476]  [<f8409310>] ? ath9k_ampdu_action+0x0/0x130 [ath9k]
[25612.560511]  [<f8307a63>] ieee80211_sta_tear_down_BA_sessions+0x33/0x40 [mac80211]
[25612.560548]  [<f830afd8>] ieee80211_set_disassoc+0xc8/0x370 [mac80211]
[25612.560583]  [<f830af10>] ? ieee80211_set_disassoc+0x0/0x370 [mac80211]
[25612.560597]  [<c01ace6b>] ? might_fault+0x4b/0xa0
[25612.560632]  [<f830b580>] ieee80211_sta_req_auth+0xa0/0xc0 [mac80211]
[25612.560665]  [<f8303fde>] ieee80211_ioctl_siwessid+0xbe/0xd0 [mac80211]
[25612.560679]  [<c02749c5>] ? copy_from_user+0x35/0x130
[25612.560694]  [<c039d819>] ioctl_standard_call+0x199/0x3a0
[25612.560707]  [<c032358d>] ? __dev_get_by_name+0x7d/0xa0
[25612.560720]  [<c039d31f>] wext_handle_ioctl+0x14f/0x230
[25612.560753]  [<f8303f20>] ? ieee80211_ioctl_siwessid+0x0/0xd0 [mac80211]
[25612.560766]  [<c0324114>] dev_ioctl+0x474/0x540
[25612.560780]  [<c019f685>] ? __pagevec_free+0x25/0x30
[25612.560794]  [<c0312350>] ? sock_ioctl+0x0/0x270
[25612.560806]  [<c0312445>] sock_ioctl+0xf5/0x270
[25612.560817]  [<c0312350>] ? sock_ioctl+0x0/0x270
[25612.560831]  [<c01d9018>] vfs_ioctl+0x28/0x90
[25612.560843]  [<c01d90f2>] do_vfs_ioctl+0x72/0x590
[25612.560856]  [<c015ce8b>] ? trace_hardirqs_on+0xb/0x10
[25612.560868]  [<c01b2a16>] ? remove_vma+0x56/0x70
[25612.560879]  [<c01b2a16>] ? remove_vma+0x56/0x70
[25612.560890]  [<c01b38f7>] ? do_munmap+0x237/0x290
[25612.560902]  [<c0103021>] ? sysenter_exit+0xf/0x1a
[25612.560914]  [<c01d9673>] sys_ioctl+0x63/0x70
[25612.560925]  [<c0102fec>] sysenter_do_call+0x12/0x38
[25612.560934] ---[ end trace 05e1ecc810d6b568 ]---
[25612.561114] ------------[ cut here ]------------

Cc: Reinette Chatre <reinette.chatre@intel.com>
Cc: Zhu Yi <yi.zhu@intel.com>
Cc: Mohamed Abbas <mohamed.abbas@intel.com>
Cc: ipw3945-devel@lists.sourceforge.net
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
---
 net/mac80211/util.c |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index 66ce96a..8e66556 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -791,9 +791,24 @@ int ieee80211_set_freq(struct ieee80211_sub_if_data *sdata, int freqMHz)
 
 		if (local->sw_scanning || local->hw_scanning)
 			ret = 0;
-		else
+		else {
+			struct ieee80211_channel *cur_chan;
+
+			cur_chan = local->hw.conf.channel;
+
+			/*
+			 * If we're switching bands and not scanning we
+			 * could potentially be moving to a band our AP
+			 * does not understand so give up on it
+			 */
+			if (sdata->vif.type == NL80211_IFTYPE_STATION &&
+			    (sdata->u.mgd.flags & IEEE80211_STA_ASSOCIATED) &&
+			    cur_chan->band != chan->band)
+				ieee80211_sta_deauthenticate(sdata,
+					WLAN_REASON_DEAUTH_LEAVING);
 			ret = ieee80211_hw_config(
 				local, IEEE80211_CONF_CHANGE_CHANNEL);
+		}
 	}
 
 	return ret;
-- 
1.5.6.3


^ permalink raw reply related	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2009-06-18 18:42 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-06-10 20:35 [PATCH] mac80211: disassociate when switching bands and not scanning Luis R. Rodriguez
2009-06-10 20:49 ` reinette chatre
2009-06-10 20:49   ` Luis R. Rodriguez
2009-06-10 21:03     ` reinette chatre
2009-06-10 21:04       ` [ath9k-devel] " Luis R. Rodriguez
2009-06-10 21:07         ` Johannes Berg
2009-06-10 22:42           ` Luis R. Rodriguez
2009-06-10 22:44             ` Luis R. Rodriguez
2009-06-11 19:04               ` Luis R. Rodriguez
2009-06-11 19:10                 ` Johannes Berg
2009-06-11 20:54                   ` Luis R. Rodriguez
2009-06-11 20:50                 ` reinette chatre
2009-06-18 15:01                   ` John W. Linville
2009-06-18 15:47                     ` reinette chatre
2009-06-18 18:28                       ` Luis R. Rodriguez
2009-06-18 18:44                         ` reinette chatre
2009-06-18 18:42                           ` Luis R. Rodriguez
2009-06-10 21:06       ` Johannes Berg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).