[kernel/f16] mac80211: fix debugfs key->station symlink brcmsmac: fix tx queue flush infinite loop mac80211: Use
John W. Linville
linville at fedoraproject.org
Mon Jan 30 15:43:52 UTC 2012
commit a43c59fbeeac2aea17ad7f750db331c325605322
Author: John W. Linville <linville at tuxdriver.com>
Date: Mon Jan 30 10:41:26 2012 -0500
mac80211: fix debugfs key->station symlink
brcmsmac: fix tx queue flush infinite loop
mac80211: Use the right headroom size for mesh mgmt frames
mac80211: fix work removal on deauth request
b43: add option to avoid duplicating device support with brcmsmac
mac80211: update oper_channel on ibss join
mac80211: set bss_conf.idle when vif is connected
iwlwifi: fix PCI-E transport "inta" race
...ion-to-avoid-duplicating-device-support-w.patch | 2 +-
brcmsmac-fix-tx-queue-flush-infinite-loop.patch | 51 ++++++++++++
iwlwifi-fix-PCI-E-transport-inta-race.patch | 51 ++++++++++++
kernel.spec | 30 ++++++-
...e-the-right-headroom-size-for-mesh-mgmt-f.patch | 83 ++++++++++++++++++++
mac80211-fix-debugfs-key-station-symlink.patch | 43 ++++++++++
mac80211-fix-work-removal-on-deauth-request.patch | 79 ++++---------------
...1-set-bss_conf.idle-when-vif-is-connected.patch | 37 +++++++++
mac80211-update-oper_channel-on-ibss-join.patch | 31 +++++++
9 files changed, 339 insertions(+), 68 deletions(-)
---
diff --git a/b43-add-option-to-avoid-duplicating-device-support-w.patch b/b43-add-option-to-avoid-duplicating-device-support-w.patch
index 63d28cd..ca820df 100644
--- a/b43-add-option-to-avoid-duplicating-device-support-w.patch
+++ b/b43-add-option-to-avoid-duplicating-device-support-w.patch
@@ -1,7 +1,7 @@
From 4f3d09de38d234ce7ffba5ec5a7e6704f983d375 Mon Sep 17 00:00:00 2001
From: John W. Linville <linville at tuxdriver.com>
Date: Wed, 11 Jan 2012 15:50:15 -0500
-Subject: [PATCH] b43: add option to avoid duplicating device support with
+Subject: [PATCH 5/8] b43: add option to avoid duplicating device support with
brcmsmac
Signed-off-by: John W. Linville <linville at tuxdriver.com>
diff --git a/brcmsmac-fix-tx-queue-flush-infinite-loop.patch b/brcmsmac-fix-tx-queue-flush-infinite-loop.patch
new file mode 100644
index 0000000..c5d69d4
--- /dev/null
+++ b/brcmsmac-fix-tx-queue-flush-infinite-loop.patch
@@ -0,0 +1,51 @@
+From f96b08a7e6f69c0f0a576554df3df5b1b519c479 Mon Sep 17 00:00:00 2001
+From: Stanislaw Gruszka <sgruszka at redhat.com>
+Date: Tue, 17 Jan 2012 12:38:50 +0100
+Subject: [PATCH 2/8] brcmsmac: fix tx queue flush infinite loop
+
+This patch workaround live deadlock problem caused by infinite loop
+in brcms_c_wait_for_tx_completion(). I do not consider the patch as
+the proper fix, which should fix the real reason of tx queue flush
+failure, but patch helps with system lockup.
+
+Reference:
+https://bugzilla.kernel.org/show_bug.cgi?id=42576
+
+Reported-and-tested-by: Patrick <ragamuffin at datacomm.ch>
+Cc: stable at vger.kernel.org # 3.2+
+Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
+Signed-off-by: John W. Linville <linville at tuxdriver.com>
+---
+ drivers/net/wireless/brcm80211/brcmsmac/main.c | 10 +++++++++-
+ 1 files changed, 9 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/net/wireless/brcm80211/brcmsmac/main.c b/drivers/net/wireless/brcm80211/brcmsmac/main.c
+index f7ed340..f6affc6 100644
+--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
++++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
+@@ -7981,13 +7981,21 @@ int brcms_c_get_curband(struct brcms_c_info *wlc)
+
+ void brcms_c_wait_for_tx_completion(struct brcms_c_info *wlc, bool drop)
+ {
++ int timeout = 20;
++
+ /* flush packet queue when requested */
+ if (drop)
+ brcmu_pktq_flush(&wlc->pkt_queue->q, false, NULL, NULL);
+
+ /* wait for queue and DMA fifos to run dry */
+- while (!pktq_empty(&wlc->pkt_queue->q) || brcms_txpktpendtot(wlc) > 0)
++ while (!pktq_empty(&wlc->pkt_queue->q) || brcms_txpktpendtot(wlc) > 0) {
+ brcms_msleep(wlc->wl, 1);
++
++ if (--timeout == 0)
++ break;
++ }
++
++ WARN_ON_ONCE(timeout == 0);
+ }
+
+ void brcms_c_set_beacon_listen_interval(struct brcms_c_info *wlc, u8 interval)
+--
+1.7.4.4
+
diff --git a/iwlwifi-fix-PCI-E-transport-inta-race.patch b/iwlwifi-fix-PCI-E-transport-inta-race.patch
new file mode 100644
index 0000000..b17e5ec
--- /dev/null
+++ b/iwlwifi-fix-PCI-E-transport-inta-race.patch
@@ -0,0 +1,51 @@
+From b49ba04a3a0382e7314d990707c21094c410425a Mon Sep 17 00:00:00 2001
+From: Johannes Berg <johannes.berg at intel.com>
+Date: Thu, 19 Jan 2012 08:20:57 -0800
+Subject: [PATCH 8/8] iwlwifi: fix PCI-E transport "inta" race
+
+When an interrupt comes in, we read the reason
+bits and collect them into "trans_pcie->inta".
+This happens with the spinlock held. However,
+there's a bug resetting this variable -- that
+happens after the spinlock has been released.
+This means that it is possible for interrupts
+to be missed if the reset happens after some
+other interrupt reasons were already added to
+the variable.
+
+I found this by code inspection, looking for a
+reason that we sometimes see random commands
+time out. It seems possible that this causes
+such behaviour, but I can't say for sure right
+now since it happens extremely infrequently on
+my test systems.
+
+Cc: stable at vger.kernel.org [3.2]
+Signed-off-by: Johannes Berg <johannes.berg at intel.com>
+Signed-off-by: Wey-Yi Guy <wey-yi.w.guy at intel.com>
+Signed-off-by: John W. Linville <linville at tuxdriver.com>
+---
+ drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c
+index 752493f..65d1f05 100644
+--- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c
++++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c
+@@ -972,11 +972,11 @@ void iwl_irq_tasklet(struct iwl_trans *trans)
+ }
+ #endif
+
+- spin_unlock_irqrestore(&trans->shrd->lock, flags);
+-
+ /* saved interrupt in inta variable now we can reset trans_pcie->inta */
+ trans_pcie->inta = 0;
+
++ spin_unlock_irqrestore(&trans->shrd->lock, flags);
++
+ /* Now service all interrupt bits discovered above. */
+ if (inta & CSR_INT_BIT_HW_ERR) {
+ IWL_ERR(trans, "Hardware error detected. Restarting.\n");
+--
+1.7.4.4
+
diff --git a/kernel.spec b/kernel.spec
index 88d4100..bd6703c 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -820,9 +820,15 @@ Patch50002: compat-wireless-integrated-build.patch
Patch50100: compat-wireless-rtl8192cu-Fix-WARNING-on-suspend-resume.patch
-# Remove overlapping hardware support between b43 and brcmsmac
-Patch50101: b43-add-option-to-avoid-duplicating-device-support-w.patch
-
+# Pending upstream fixes
+Patch50101: mac80211-fix-debugfs-key-station-symlink.patch
+Patch50102: brcmsmac-fix-tx-queue-flush-infinite-loop.patch
+Patch50103: mac80211-Use-the-right-headroom-size-for-mesh-mgmt-f.patch
+Patch50104: mac80211-fix-work-removal-on-deauth-request.patch
+Patch50105: b43-add-option-to-avoid-duplicating-device-support-w.patch
+Patch50106: mac80211-update-oper_channel-on-ibss-join.patch
+Patch50107: mac80211-set-bss_conf.idle-when-vif-is-connected.patch
+Patch50108: iwlwifi-fix-PCI-E-transport-inta-race.patch
%endif
@@ -1579,10 +1585,16 @@ cd compat-wireless-%{cwversion}
ApplyPatch compat-wireless-config-fixups.patch
ApplyPatch compat-wireless-pr_fmt-warning-avoidance.patch
ApplyPatch compat-wireless-rtl8192cu-Fix-WARNING-on-suspend-resume.patch
-ApplyPatch mac80211-fix-work-removal-on-deauth-request.patch
-# Remove overlapping hardware support between b43 and brcmsmac
+# Pending upstream fixes
+ApplyPatch mac80211-fix-debugfs-key-station-symlink.patch
+ApplyPatch brcmsmac-fix-tx-queue-flush-infinite-loop.patch
+ApplyPatch mac80211-Use-the-right-headroom-size-for-mesh-mgmt-f.patch
+ApplyPatch mac80211-fix-work-removal-on-deauth-request.patch
ApplyPatch b43-add-option-to-avoid-duplicating-device-support-w.patch
+ApplyPatch mac80211-update-oper_channel-on-ibss-join.patch
+ApplyPatch mac80211-set-bss_conf.idle-when-vif-is-connected.patch
+ApplyPatch iwlwifi-fix-PCI-E-transport-inta-race.patch
cd ..
@@ -2291,6 +2303,14 @@ fi
%changelog
* Mon Jan 30 2012 John W. Linville <linville at redhat.com>
- Use the eeprom_93cx6 driver from the compat-wireless package
+- mac80211: fix debugfs key->station symlink
+- brcmsmac: fix tx queue flush infinite loop
+- mac80211: Use the right headroom size for mesh mgmt frames
+- mac80211: fix work removal on deauth request
+- b43: add option to avoid duplicating device support with brcmsmac
+- mac80211: update oper_channel on ibss join
+- mac80211: set bss_conf.idle when vif is connected
+- iwlwifi: fix PCI-E transport "inta" race
* Fri Jan 27 2012 John W. Linville <linville at redhat.com>
- Include config.mk from compat-wireless build in files for installation
diff --git a/mac80211-Use-the-right-headroom-size-for-mesh-mgmt-f.patch b/mac80211-Use-the-right-headroom-size-for-mesh-mgmt-f.patch
new file mode 100644
index 0000000..9096eff
--- /dev/null
+++ b/mac80211-Use-the-right-headroom-size-for-mesh-mgmt-f.patch
@@ -0,0 +1,83 @@
+From 65e8b0ccb6cf176f8eddb1b05534be46580da9dd Mon Sep 17 00:00:00 2001
+From: Javier Cardona <javier at cozybit.com>
+Date: Tue, 17 Jan 2012 18:17:46 -0800
+Subject: [PATCH 3/8] mac80211: Use the right headroom size for mesh mgmt
+ frames
+
+Use local->tx_headroom instad of local->hw.extra_tx_headroom.
+local->tx_headroom is the max of hw.extra_tx_headroom required by the
+driver and the headroom required by mac80211 for status reporting. On
+drivers where hw.extra_tx_headroom is smaller than what mac80211
+requires (e.g. ath5k), we would not reserve sufficient buffer space to
+report tx status.
+
+Also, don't reserve local->tx_headroom + local->hw.extra_tx_headroom.
+
+Reported-by: Simon Morgenthaler <s.morgenthaler at students.unibe.ch>
+Reported-by: Kai Scharwies <kai at scharwies.de>
+Signed-off-by: Javier Cardona <javier at cozybit.com>
+Signed-off-by: John W. Linville <linville at tuxdriver.com>
+---
+ net/mac80211/mesh_hwmp.c | 8 ++++----
+ net/mac80211/mesh_plink.c | 4 ++--
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/net/mac80211/mesh_hwmp.c b/net/mac80211/mesh_hwmp.c
+index 73abb75..54df1b2 100644
+--- a/net/mac80211/mesh_hwmp.c
++++ b/net/mac80211/mesh_hwmp.c
+@@ -119,12 +119,12 @@ static int mesh_path_sel_frame_tx(enum mpath_frame_type action, u8 flags,
+ int hdr_len = offsetof(struct ieee80211_mgmt, u.action.u.mesh_action) +
+ sizeof(mgmt->u.action.u.mesh_action);
+
+- skb = dev_alloc_skb(local->hw.extra_tx_headroom +
++ skb = dev_alloc_skb(local->tx_headroom +
+ hdr_len +
+ 2 + 37); /* max HWMP IE */
+ if (!skb)
+ return -1;
+- skb_reserve(skb, local->hw.extra_tx_headroom);
++ skb_reserve(skb, local->tx_headroom);
+ mgmt = (struct ieee80211_mgmt *) skb_put(skb, hdr_len);
+ memset(mgmt, 0, hdr_len);
+ mgmt->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
+@@ -250,12 +250,12 @@ int mesh_path_error_tx(u8 ttl, u8 *target, __le32 target_sn,
+ if (time_before(jiffies, ifmsh->next_perr))
+ return -EAGAIN;
+
+- skb = dev_alloc_skb(local->hw.extra_tx_headroom +
++ skb = dev_alloc_skb(local->tx_headroom +
+ hdr_len +
+ 2 + 15 /* PERR IE */);
+ if (!skb)
+ return -1;
+- skb_reserve(skb, local->tx_headroom + local->hw.extra_tx_headroom);
++ skb_reserve(skb, local->tx_headroom);
+ mgmt = (struct ieee80211_mgmt *) skb_put(skb, hdr_len);
+ memset(mgmt, 0, hdr_len);
+ mgmt->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
+diff --git a/net/mac80211/mesh_plink.c b/net/mac80211/mesh_plink.c
+index 41ef1b4..a172517 100644
+--- a/net/mac80211/mesh_plink.c
++++ b/net/mac80211/mesh_plink.c
+@@ -172,7 +172,7 @@ static int mesh_plink_frame_tx(struct ieee80211_sub_if_data *sdata,
+ int hdr_len = offsetof(struct ieee80211_mgmt, u.action.u.self_prot) +
+ sizeof(mgmt->u.action.u.self_prot);
+
+- skb = dev_alloc_skb(local->hw.extra_tx_headroom +
++ skb = dev_alloc_skb(local->tx_headroom +
+ hdr_len +
+ 2 + /* capability info */
+ 2 + /* AID */
+@@ -186,7 +186,7 @@ static int mesh_plink_frame_tx(struct ieee80211_sub_if_data *sdata,
+ sdata->u.mesh.ie_len);
+ if (!skb)
+ return -1;
+- skb_reserve(skb, local->hw.extra_tx_headroom);
++ skb_reserve(skb, local->tx_headroom);
+ mgmt = (struct ieee80211_mgmt *) skb_put(skb, hdr_len);
+ memset(mgmt, 0, hdr_len);
+ mgmt->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
+--
+1.7.4.4
+
diff --git a/mac80211-fix-debugfs-key-station-symlink.patch b/mac80211-fix-debugfs-key-station-symlink.patch
new file mode 100644
index 0000000..d98f2c9
--- /dev/null
+++ b/mac80211-fix-debugfs-key-station-symlink.patch
@@ -0,0 +1,43 @@
+From 9446f3efc53512e5ad9e0966539021a2a41fe5a0 Mon Sep 17 00:00:00 2001
+From: Johannes Berg <johannes.berg at intel.com>
+Date: Tue, 17 Jan 2012 10:32:01 +0100
+Subject: [PATCH 1/8] mac80211: fix debugfs key->station symlink
+
+Since stations moved into a virtual interface
+subdirectory, this link has been broken. Fix it.
+
+Signed-off-by: Johannes Berg <johannes.berg at intel.com>
+Signed-off-by: John W. Linville <linville at tuxdriver.com>
+---
+ net/mac80211/debugfs_key.c | 7 ++++---
+ 1 files changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/net/mac80211/debugfs_key.c b/net/mac80211/debugfs_key.c
+index 38e6101..59edcd9 100644
+--- a/net/mac80211/debugfs_key.c
++++ b/net/mac80211/debugfs_key.c
+@@ -225,9 +225,9 @@ KEY_OPS(key);
+ key, &key_##name##_ops);
+
+ void ieee80211_debugfs_key_add(struct ieee80211_key *key)
+- {
++{
+ static int keycount;
+- char buf[50];
++ char buf[100];
+ struct sta_info *sta;
+
+ if (!key->local->debugfs.keys)
+@@ -244,7 +244,8 @@ void ieee80211_debugfs_key_add(struct ieee80211_key *key)
+
+ sta = key->sta;
+ if (sta) {
+- sprintf(buf, "../../stations/%pM", sta->sta.addr);
++ sprintf(buf, "../../netdev:%s/stations/%pM",
++ sta->sdata->name, sta->sta.addr);
+ key->debugfs.stalink =
+ debugfs_create_symlink("station", key->debugfs.dir, buf);
+ }
+--
+1.7.4.4
+
diff --git a/mac80211-fix-work-removal-on-deauth-request.patch b/mac80211-fix-work-removal-on-deauth-request.patch
index 60b91d3..941b518 100644
--- a/mac80211-fix-work-removal-on-deauth-request.patch
+++ b/mac80211-fix-work-removal-on-deauth-request.patch
@@ -1,51 +1,7 @@
-Path: news.gmane.org!not-for-mail
-From: Johannes Berg <johannes-cdvu00un1VgdHxzADdlk8Q at public.gmane.org>
-Newsgroups: gmane.linux.kernel.wireless.general
-Subject: [PATCH 3.3] mac80211: fix work removal on deauth request
+From bc4934bc61d0a11fd62c5187ff83645628f8be8b Mon Sep 17 00:00:00 2001
+From: Johannes Berg <johannes.berg at intel.com>
Date: Wed, 18 Jan 2012 14:10:25 +0100
-Lines: 107
-Approved: news at gmane.org
-Message-ID: <1326892225.4778.5.camel at jlt3.sipsolutions.net>
-NNTP-Posting-Host: lo.gmane.org
-Mime-Version: 1.0
-Content-Type: text/plain; charset="UTF-8"
-Content-Transfer-Encoding: 7bit
-X-Trace: dough.gmane.org 1326892249 18013 80.91.229.12 (18 Jan 2012 13:10:49 GMT)
-X-Complaints-To: usenet at dough.gmane.org
-NNTP-Posting-Date: Wed, 18 Jan 2012 13:10:49 +0000 (UTC)
-Cc: linux-wireless <linux-wireless-u79uwXL29TY76Z2rM5mHXA at public.gmane.org>,
- Pontus Fuchs <pontus.fuchs-Re5JQEeQqe8AvxtiuMwx3w at public.gmane.org>
-To: John Linville <linville-2XuSBdqkA4R54TAoqtyWWQ at public.gmane.org>
-Original-X-From: linux-wireless-owner-u79uwXL29TY76Z2rM5mHXA at public.gmane.org Wed Jan 18 14:10:44 2012
-Return-path: <linux-wireless-owner-u79uwXL29TY76Z2rM5mHXA at public.gmane.org>
-Envelope-to: glkwg-linux-wireless-1dZseelyfdZg9hUCZPvPmw at public.gmane.org
-Original-Received: from vger.kernel.org ([209.132.180.67])
- by lo.gmane.org with esmtp (Exim 4.69)
- (envelope-from <linux-wireless-owner-u79uwXL29TY76Z2rM5mHXA at public.gmane.org>)
- id 1RnVHo-00044l-Aq
- for glkwg-linux-wireless-1dZseelyfdZg9hUCZPvPmw at public.gmane.org; Wed, 18 Jan 2012 14:10:44 +0100
-Original-Received: (majordomo-u79uwXL29TY76Z2rM5mHXA at public.gmane.org) by vger.kernel.org via listexpand
- id S1757410Ab2ARNK3 (ORCPT
- <rfc822;glkwg-linux-wireless at m.gmane.org>);
- Wed, 18 Jan 2012 08:10:29 -0500
-Original-Received: from he.sipsolutions.net ([78.46.109.217]:45023 "EHLO
- sipsolutions.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
- with ESMTP id S1754365Ab2ARNK2 (ORCPT
- <rfc822;linux-wireless-u79uwXL29TY76Z2rM5mHXA at public.gmane.org>);
- Wed, 18 Jan 2012 08:10:28 -0500
-Original-Received: by sipsolutions.net with esmtpsa (TLS1.0:RSA_AES_256_CBC_SHA1:32)
- (Exim 4.77)
- (envelope-from <johannes-cdvu00un1VgdHxzADdlk8Q at public.gmane.org>)
- id 1RnVHW-0004hf-Lx; Wed, 18 Jan 2012 14:10:26 +0100
-X-Mailer: Evolution 2.30.3
-Original-Sender: linux-wireless-owner-u79uwXL29TY76Z2rM5mHXA at public.gmane.org
-Precedence: bulk
-List-ID: <linux-wireless.vger.kernel.org>
-X-Mailing-List: linux-wireless-u79uwXL29TY76Z2rM5mHXA at public.gmane.org
-Xref: news.gmane.org gmane.linux.kernel.wireless.general:84095
-Archived-At: <http://permalink.gmane.org/gmane.linux.kernel.wireless.general/84095>
-
-From: Johannes Berg <johannes.berg-ral2JQCrhuEAvxtiuMwx3w at public.gmane.org>
+Subject: [PATCH 4/8] mac80211: fix work removal on deauth request
When deauth is requested while an auth or assoc
work item is in progress, we currently delete it
@@ -69,17 +25,20 @@ in cfg80211. This fix isn't very clean, but that
seems acceptable since I have patches pending to
remove this code completely.
-Cc: stable-u79uwXL29TY76Z2rM5mHXA at public.gmane.org
-Reported-by: Pontus Fuchs <pontus.fuchs-Re5JQEeQqe8AvxtiuMwx3w at public.gmane.org>
-Tested-by: Pontus Fuchs <pontus.fuchs-Re5JQEeQqe8AvxtiuMwx3w at public.gmane.org>
-Signed-off-by: Johannes Berg <johannes.berg-ral2JQCrhuEAvxtiuMwx3w at public.gmane.org>
+Cc: stable at vger.kernel.org
+Reported-by: Pontus Fuchs <pontus.fuchs at gmail.com>
+Tested-by: Pontus Fuchs <pontus.fuchs at gmail.com>
+Signed-off-by: Johannes Berg <johannes.berg at intel.com>
+Signed-off-by: John W. Linville <linville at tuxdriver.com>
---
net/mac80211/mlme.c | 38 +++++++++++++++++++++++++++-----------
- 1 file changed, 27 insertions(+), 11 deletions(-)
+ 1 files changed, 27 insertions(+), 11 deletions(-)
---- a/net/mac80211/mlme.c 2012-01-18 14:04:33.000000000 +0100
-+++ b/net/mac80211/mlme.c 2012-01-18 14:04:34.000000000 +0100
-@@ -2750,7 +2750,6 @@ int ieee80211_mgd_deauth(struct ieee8021
+diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
+index ecb4c84..295be92 100644
+--- a/net/mac80211/mlme.c
++++ b/net/mac80211/mlme.c
+@@ -2750,7 +2750,6 @@ int ieee80211_mgd_deauth(struct ieee80211_sub_if_data *sdata,
{
struct ieee80211_local *local = sdata->local;
struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
@@ -87,7 +46,7 @@ Signed-off-by: Johannes Berg <johannes.berg-ral2JQCrhuEAvxtiuMwx3w at public.gmane.
u8 bssid[ETH_ALEN];
bool assoc_bss = false;
-@@ -2763,30 +2762,47 @@ int ieee80211_mgd_deauth(struct ieee8021
+@@ -2763,30 +2762,47 @@ int ieee80211_mgd_deauth(struct ieee80211_sub_if_data *sdata,
assoc_bss = true;
} else {
bool not_auth_yet = false;
@@ -145,10 +104,6 @@ Signed-off-by: Johannes Berg <johannes.berg-ral2JQCrhuEAvxtiuMwx3w at public.gmane.
/*
* If somebody requests authentication and we haven't
* sent out an auth frame yet there's no need to send
-
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
-the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA at public.gmane.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
+--
+1.7.4.4
diff --git a/mac80211-set-bss_conf.idle-when-vif-is-connected.patch b/mac80211-set-bss_conf.idle-when-vif-is-connected.patch
new file mode 100644
index 0000000..42720d0
--- /dev/null
+++ b/mac80211-set-bss_conf.idle-when-vif-is-connected.patch
@@ -0,0 +1,37 @@
+From 405385f8ce7a2ed8f82e216d88b5282142e1288b Mon Sep 17 00:00:00 2001
+From: Eliad Peller <eliad at wizery.com>
+Date: Wed, 11 Jan 2012 13:11:50 +0200
+Subject: [PATCH 7/8] mac80211: set bss_conf.idle when vif is connected
+
+__ieee80211_recalc_idle() iterates through the vifs,
+sets bss_conf.idle = true if they are disconnected,
+and increases "count" if they are not (which later
+gets evaluated in order to determine whether the
+device is idle).
+
+However, the loop doesn't set bss_conf.idle = false
+(along with increasing "count"), causing the device
+idle state and the vif idle state to get out of sync
+in some cases.
+
+Signed-off-by: Eliad Peller <eliad at wizery.com>
+Signed-off-by: John W. Linville <linville at tuxdriver.com>
+---
+ net/mac80211/iface.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
+index e47768c..01a21c2 100644
+--- a/net/mac80211/iface.c
++++ b/net/mac80211/iface.c
+@@ -1314,6 +1314,7 @@ u32 __ieee80211_recalc_idle(struct ieee80211_local *local)
+ continue;
+ }
+ /* count everything else */
++ sdata->vif.bss_conf.idle = false;
+ count++;
+ }
+
+--
+1.7.4.4
+
diff --git a/mac80211-update-oper_channel-on-ibss-join.patch b/mac80211-update-oper_channel-on-ibss-join.patch
new file mode 100644
index 0000000..1a0d932
--- /dev/null
+++ b/mac80211-update-oper_channel-on-ibss-join.patch
@@ -0,0 +1,31 @@
+From ba1960257c5980f9b58057995ce3394bd8e48ca3 Mon Sep 17 00:00:00 2001
+From: Eliad Peller <eliad at wizery.com>
+Date: Tue, 10 Jan 2012 15:19:54 +0200
+Subject: [PATCH 6/8] mac80211: update oper_channel on ibss join
+
+Commit 13c40c5 ("mac80211: Add HT operation modes for IBSS") broke
+ibss operation by mistakenly removing the local->oper_channel
+update (causing ibss to start on the wrong channel). fix it.
+
+Signed-off-by: Eliad Peller <eliad at wizery.com>
+Acked-by: Simon Wunderlich <siwu at hrz.tu-chemnitz.de>
+Signed-off-by: John W. Linville <linville at tuxdriver.com>
+---
+ net/mac80211/ibss.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c
+index b3d76b7..a464396 100644
+--- a/net/mac80211/ibss.c
++++ b/net/mac80211/ibss.c
+@@ -106,6 +106,7 @@ static void __ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata,
+
+ sdata->drop_unencrypted = capability & WLAN_CAPABILITY_PRIVACY ? 1 : 0;
+
++ local->oper_channel = chan;
+ channel_type = ifibss->channel_type;
+ if (channel_type > NL80211_CHAN_HT20 &&
+ !cfg80211_can_beacon_sec_chan(local->hw.wiphy, chan, channel_type))
+--
+1.7.4.4
+
More information about the scm-commits
mailing list