]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 9 May 2014 05:31:24 +0000 (07:31 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 9 May 2014 05:31:24 +0000 (07:31 +0200)
added patches:
locks-allow-__break_lease-to-sleep-even-when-break_time-is-0.patch
mac80211-exclude-ap_vlan-interfaces-from-tx-power-calculation.patch
mac80211-fix-software-remain-on-channel-implementation.patch
mac80211-fix-wpa-with-vlan-on-ap-side-with-ps-sta-again.patch
rtlwifi-rtl8188ee-fix-too-long-disable-of-irqs.patch
rtlwifi-rtl8188ee-initialize-packet_beacon.patch
rtlwifi-rtl8192cu-fix-too-long-disable-of-irqs.patch
rtlwifi-rtl8192se-fix-regression-due-to-commit-1bf4bbb.patch
rtlwifi-rtl8192se-fix-too-long-disable-of-irqs.patch
rtlwifi-rtl8723ae-fix-too-long-disable-of-irqs.patch

queue-3.10/locks-allow-__break_lease-to-sleep-even-when-break_time-is-0.patch [new file with mode: 0644]
queue-3.10/mac80211-exclude-ap_vlan-interfaces-from-tx-power-calculation.patch [new file with mode: 0644]
queue-3.10/mac80211-fix-software-remain-on-channel-implementation.patch [new file with mode: 0644]
queue-3.10/mac80211-fix-wpa-with-vlan-on-ap-side-with-ps-sta-again.patch [new file with mode: 0644]
queue-3.10/rtlwifi-rtl8188ee-fix-too-long-disable-of-irqs.patch [new file with mode: 0644]
queue-3.10/rtlwifi-rtl8188ee-initialize-packet_beacon.patch [new file with mode: 0644]
queue-3.10/rtlwifi-rtl8192cu-fix-too-long-disable-of-irqs.patch [new file with mode: 0644]
queue-3.10/rtlwifi-rtl8192se-fix-regression-due-to-commit-1bf4bbb.patch [new file with mode: 0644]
queue-3.10/rtlwifi-rtl8192se-fix-too-long-disable-of-irqs.patch [new file with mode: 0644]
queue-3.10/rtlwifi-rtl8723ae-fix-too-long-disable-of-irqs.patch [new file with mode: 0644]
queue-3.10/series

diff --git a/queue-3.10/locks-allow-__break_lease-to-sleep-even-when-break_time-is-0.patch b/queue-3.10/locks-allow-__break_lease-to-sleep-even-when-break_time-is-0.patch
new file mode 100644 (file)
index 0000000..d28c8a3
--- /dev/null
@@ -0,0 +1,48 @@
+From 4991a628a789dc5954e98e79476d9808812292ec Mon Sep 17 00:00:00 2001
+From: Jeff Layton <jlayton@redhat.com>
+Date: Tue, 15 Apr 2014 08:44:12 -0400
+Subject: locks: allow __break_lease to sleep even when break_time is 0
+
+From: Jeff Layton <jlayton@redhat.com>
+
+commit 4991a628a789dc5954e98e79476d9808812292ec upstream.
+
+A fl->fl_break_time of 0 has a special meaning to the lease break code
+that basically means "never break the lease". knfsd uses this to ensure
+that leases don't disappear out from under it.
+
+Unfortunately, the code in __break_lease can end up passing this value
+to wait_event_interruptible as a timeout, which prevents it from going
+to sleep at all. This causes __break_lease to spin in a tight loop and
+causes soft lockups.
+
+Fix this by ensuring that we pass a minimum value of 1 as a timeout
+instead.
+
+Cc: J. Bruce Fields <bfields@fieldses.org>
+Reported-by: Terry Barnaby <terry1@beam.ltd.uk>
+Signed-off-by: Jeff Layton <jlayton@redhat.com>
+Signed-off-by: J. Bruce Fields <bfields@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/locks.c |    7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+--- a/fs/locks.c
++++ b/fs/locks.c
+@@ -1243,11 +1243,10 @@ int __break_lease(struct inode *inode, u
+ restart:
+       break_time = flock->fl_break_time;
+-      if (break_time != 0) {
++      if (break_time != 0)
+               break_time -= jiffies;
+-              if (break_time == 0)
+-                      break_time++;
+-      }
++      if (break_time == 0)
++              break_time++;
+       locks_insert_block(flock, new_fl);
+       unlock_flocks();
+       error = wait_event_interruptible_timeout(new_fl->fl_wait,
diff --git a/queue-3.10/mac80211-exclude-ap_vlan-interfaces-from-tx-power-calculation.patch b/queue-3.10/mac80211-exclude-ap_vlan-interfaces-from-tx-power-calculation.patch
new file mode 100644 (file)
index 0000000..a934b1e
--- /dev/null
@@ -0,0 +1,32 @@
+From 764152ff66f4a8be1f9d7981e542ffdaa5bd7aff Mon Sep 17 00:00:00 2001
+From: Felix Fietkau <nbd@openwrt.org>
+Date: Thu, 10 Apr 2014 15:06:48 +0200
+Subject: mac80211: exclude AP_VLAN interfaces from tx power calculation
+
+From: Felix Fietkau <nbd@openwrt.org>
+
+commit 764152ff66f4a8be1f9d7981e542ffdaa5bd7aff upstream.
+
+Their power value is initialized to zero. This patch fixes an issue
+where the configured power drops to the minimum value when AP_VLAN
+interfaces are created/removed.
+
+Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ net/mac80211/main.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/net/mac80211/main.c
++++ b/net/mac80211/main.c
+@@ -157,6 +157,8 @@ static u32 ieee80211_hw_conf_chan(struct
+       list_for_each_entry_rcu(sdata, &local->interfaces, list) {
+               if (!rcu_access_pointer(sdata->vif.chanctx_conf))
+                       continue;
++              if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
++                      continue;
+               power = min(power, sdata->vif.bss_conf.txpower);
+       }
+       rcu_read_unlock();
diff --git a/queue-3.10/mac80211-fix-software-remain-on-channel-implementation.patch b/queue-3.10/mac80211-fix-software-remain-on-channel-implementation.patch
new file mode 100644 (file)
index 0000000..24b1942
--- /dev/null
@@ -0,0 +1,40 @@
+From 115b943a6ea12656088fa1ff6634c0d30815e55b Mon Sep 17 00:00:00 2001
+From: Johannes Berg <johannes.berg@intel.com>
+Date: Thu, 27 Mar 2014 15:39:20 +0100
+Subject: mac80211: fix software remain-on-channel implementation
+
+From: Johannes Berg <johannes.berg@intel.com>
+
+commit 115b943a6ea12656088fa1ff6634c0d30815e55b upstream.
+
+Jouni reported that when doing off-channel transmissions mixed
+with on-channel transmissions, the on-channel ones ended up on
+the off-channel in some cases.
+
+The reason for that is that during the refactoring of the off-
+channel code, I lost the part that stopped all activity and as
+a consequence the on-channel frames (including data frames)
+were no longer queued but would be transmitted on the temporary
+channel.
+
+Fix this by simply restoring the lost activity stop call.
+
+Fixes: 2eb278e083549 ("mac80211: unify SW/offload remain-on-channel")
+Reported-by: Jouni Malinen <j@w1.fi>
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ net/mac80211/offchannel.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/net/mac80211/offchannel.c
++++ b/net/mac80211/offchannel.c
+@@ -355,6 +355,7 @@ void ieee80211_sw_roc_work(struct work_s
+               struct ieee80211_roc_work *dep;
+               /* start this ROC */
++              ieee80211_offchannel_stop_vifs(local);
+               /* switch channel etc */
+               ieee80211_recalc_idle(local);
diff --git a/queue-3.10/mac80211-fix-wpa-with-vlan-on-ap-side-with-ps-sta-again.patch b/queue-3.10/mac80211-fix-wpa-with-vlan-on-ap-side-with-ps-sta-again.patch
new file mode 100644 (file)
index 0000000..ec61f11
--- /dev/null
@@ -0,0 +1,42 @@
+From 112c44b2df0984121a52fbda89425843b8e1a457 Mon Sep 17 00:00:00 2001
+From: Michael Braun <michael-dev@fami-braun.de>
+Date: Thu, 6 Mar 2014 15:08:43 +0100
+Subject: mac80211: fix WPA with VLAN on AP side with ps-sta again
+
+From: Michael Braun <michael-dev@fami-braun.de>
+
+commit 112c44b2df0984121a52fbda89425843b8e1a457 upstream.
+
+commit de74a1d9032f4d37ea453ad2a647e1aff4cd2591
+  "mac80211: fix WPA with VLAN on AP side with ps-sta"
+fixed an issue where queued multicast packets would
+be sent out encrypted with the key of an other bss.
+
+commit "7cbf9d017dbb5e3276de7d527925d42d4c11e732"
+  "mac80211: fix oops on mesh PS broadcast forwarding"
+essentially reverted it, because vif.type cannot be AP_VLAN
+due to the check to vif.type in ieee80211_get_buffered_bc before.
+
+As the later commit intended to fix the MESH case, fix it
+by checking for IFTYPE_AP instead of IFTYPE_AP_VLAN.
+
+Fixes: 7cbf9d017dbb ("mac80211: fix oops on mesh PS broadcast forwarding")
+Signed-off-by: Michael Braun <michael-dev@fami-braun.de>
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ net/mac80211/tx.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/net/mac80211/tx.c
++++ b/net/mac80211/tx.c
+@@ -2711,7 +2711,7 @@ ieee80211_get_buffered_bc(struct ieee802
+                               cpu_to_le16(IEEE80211_FCTL_MOREDATA);
+               }
+-              if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
++              if (sdata->vif.type == NL80211_IFTYPE_AP)
+                       sdata = IEEE80211_DEV_TO_SUB_IF(skb->dev);
+               if (!ieee80211_tx_prepare(sdata, &tx, skb))
+                       break;
diff --git a/queue-3.10/rtlwifi-rtl8188ee-fix-too-long-disable-of-irqs.patch b/queue-3.10/rtlwifi-rtl8188ee-fix-too-long-disable-of-irqs.patch
new file mode 100644 (file)
index 0000000..a14ad3d
--- /dev/null
@@ -0,0 +1,78 @@
+From 6b6392715856d563719991e9ce95e773491a8983 Mon Sep 17 00:00:00 2001
+From: Larry Finger <Larry.Finger@lwfinger.net>
+Date: Tue, 4 Mar 2014 16:53:52 -0600
+Subject: rtlwifi: rtl8188ee: Fix too long disable of IRQs
+
+From: Larry Finger <Larry.Finger@lwfinger.net>
+
+commit 6b6392715856d563719991e9ce95e773491a8983 upstream.
+
+In commit f78bccd79ba3cd9d9664981b501d57bdb81ab8a4 entitled "rtlwifi:
+rtl8192ce: Fix too long disable of IRQs", Olivier Langlois
+<olivier@trillion01.com> fixed a problem caused by an extra long disabling
+of interrupts. This patch makes the same fix for rtl8188ee.
+
+Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/rtlwifi/rtl8188ee/hw.c |   20 ++++++++++++++++----
+ 1 file changed, 16 insertions(+), 4 deletions(-)
+
+--- a/drivers/net/wireless/rtlwifi/rtl8188ee/hw.c
++++ b/drivers/net/wireless/rtlwifi/rtl8188ee/hw.c
+@@ -1025,9 +1025,20 @@ int rtl88ee_hw_init(struct ieee80211_hw
+       bool rtstatus = true;
+       int err = 0;
+       u8 tmp_u1b, u1byte;
++      unsigned long flags;
+       RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, "Rtl8188EE hw init\n");
+       rtlpriv->rtlhal.being_init_adapter = true;
++      /* As this function can take a very long time (up to 350 ms)
++       * and can be called with irqs disabled, reenable the irqs
++       * to let the other devices continue being serviced.
++       *
++       * It is safe doing so since our own interrupts will only be enabled
++       * in a subsequent step.
++       */
++      local_save_flags(flags);
++      local_irq_enable();
++
+       rtlpriv->intf_ops->disable_aspm(hw);
+       tmp_u1b = rtl_read_byte(rtlpriv, REG_SYS_CLKR+1);
+@@ -1043,7 +1054,7 @@ int rtl88ee_hw_init(struct ieee80211_hw
+       if (rtstatus != true) {
+               RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, "Init MAC failed\n");
+               err = 1;
+-              return err;
++              goto exit;
+       }
+       err = rtl88e_download_fw(hw, false);
+@@ -1051,8 +1062,7 @@ int rtl88ee_hw_init(struct ieee80211_hw
+               RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING,
+                        "Failed to download FW. Init HW without FW now..\n");
+               err = 1;
+-              rtlhal->fw_ready = false;
+-              return err;
++              goto exit;
+       } else {
+               rtlhal->fw_ready = true;
+       }
+@@ -1135,10 +1145,12 @@ int rtl88ee_hw_init(struct ieee80211_hw
+       }
+       rtl_write_byte(rtlpriv, REG_NAV_CTRL+2,  ((30000+127)/128));
+       rtl88e_dm_init(hw);
++exit:
++      local_irq_restore(flags);
+       rtlpriv->rtlhal.being_init_adapter = false;
+       RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, "end of Rtl8188EE hw init %x\n",
+                err);
+-      return 0;
++      return err;
+ }
+ static enum version_8188e _rtl88ee_read_chip_version(struct ieee80211_hw *hw)
diff --git a/queue-3.10/rtlwifi-rtl8188ee-initialize-packet_beacon.patch b/queue-3.10/rtlwifi-rtl8188ee-initialize-packet_beacon.patch
new file mode 100644 (file)
index 0000000..ce1c914
--- /dev/null
@@ -0,0 +1,37 @@
+From 328e203fc35f0b4f6df1c4943f74cf553bcc04f8 Mon Sep 17 00:00:00 2001
+From: Colin Ian King <colin.king@canonical.com>
+Date: Mon, 21 Apr 2014 17:38:44 +0100
+Subject: rtlwifi: rtl8188ee: initialize packet_beacon
+
+From: Colin Ian King <colin.king@canonical.com>
+
+commit 328e203fc35f0b4f6df1c4943f74cf553bcc04f8 upstream.
+
+static code analysis from cppcheck reports:
+
+[drivers/net/wireless/rtlwifi/rtl8188ee/trx.c:322]:
+  (error) Uninitialized variable: packet_beacon
+
+packet_beacon is not initialized and hence packet_beacon
+contains garbage from the stack, so set it to false.
+
+Signed-off-by: Colin Ian King <colin.king@canonical.com>
+Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/rtlwifi/rtl8188ee/trx.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/rtlwifi/rtl8188ee/trx.c
++++ b/drivers/net/wireless/rtlwifi/rtl8188ee/trx.c
+@@ -293,7 +293,7 @@ static void _rtl88ee_translate_rx_signal
+       u8 *psaddr;
+       __le16 fc;
+       u16 type, ufc;
+-      bool match_bssid, packet_toself, packet_beacon, addr;
++      bool match_bssid, packet_toself, packet_beacon = false, addr;
+       tmp_buf = skb->data + pstatus->rx_drvinfo_size + pstatus->rx_bufshift;
diff --git a/queue-3.10/rtlwifi-rtl8192cu-fix-too-long-disable-of-irqs.patch b/queue-3.10/rtlwifi-rtl8192cu-fix-too-long-disable-of-irqs.patch
new file mode 100644 (file)
index 0000000..82c89b5
--- /dev/null
@@ -0,0 +1,60 @@
+From a53268be0cb9763f11da4f6fe3fb924cbe3a7d4a Mon Sep 17 00:00:00 2001
+From: Larry Finger <Larry.Finger@lwfinger.net>
+Date: Tue, 4 Mar 2014 16:53:50 -0600
+Subject: rtlwifi: rtl8192cu: Fix too long disable of IRQs
+
+From: Larry Finger <Larry.Finger@lwfinger.net>
+
+commit a53268be0cb9763f11da4f6fe3fb924cbe3a7d4a upstream.
+
+In commit f78bccd79ba3cd9d9664981b501d57bdb81ab8a4 entitled "rtlwifi:
+rtl8192ce: Fix too long disable of IRQs", Olivier Langlois
+<olivier@trillion01.com> fixed a problem caused by an extra long disabling
+of interrupts. This patch makes the same fix for rtl8192cu.
+
+Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/rtlwifi/rtl8192cu/hw.c |   15 ++++++++++++++-
+ 1 file changed, 14 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c
++++ b/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c
+@@ -985,6 +985,17 @@ int rtl92cu_hw_init(struct ieee80211_hw
+       struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw));
+       int err = 0;
+       static bool iqk_initialized;
++      unsigned long flags;
++
++      /* As this function can take a very long time (up to 350 ms)
++       * and can be called with irqs disabled, reenable the irqs
++       * to let the other devices continue being serviced.
++       *
++       * It is safe doing so since our own interrupts will only be enabled
++       * in a subsequent step.
++       */
++      local_save_flags(flags);
++      local_irq_enable();
+       rtlhal->hw_type = HARDWARE_TYPE_RTL8192CU;
+       err = _rtl92cu_init_mac(hw);
+@@ -997,7 +1008,7 @@ int rtl92cu_hw_init(struct ieee80211_hw
+               RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING,
+                        "Failed to download FW. Init HW without FW now..\n");
+               err = 1;
+-              return err;
++              goto exit;
+       }
+       rtlhal->last_hmeboxnum = 0; /* h2c */
+       _rtl92cu_phy_param_tab_init(hw);
+@@ -1034,6 +1045,8 @@ int rtl92cu_hw_init(struct ieee80211_hw
+       _InitPABias(hw);
+       _update_mac_setting(hw);
+       rtl92c_dm_init(hw);
++exit:
++      local_irq_restore(flags);
+       return err;
+ }
diff --git a/queue-3.10/rtlwifi-rtl8192se-fix-regression-due-to-commit-1bf4bbb.patch b/queue-3.10/rtlwifi-rtl8192se-fix-regression-due-to-commit-1bf4bbb.patch
new file mode 100644 (file)
index 0000000..6b450b3
--- /dev/null
@@ -0,0 +1,47 @@
+From 5f9186990ec4579ee5b7a99b3254c29eda479f36 Mon Sep 17 00:00:00 2001
+From: Larry Finger <Larry.Finger@lwfinger.net>
+Date: Fri, 25 Apr 2014 10:05:43 -0500
+Subject: rtlwifi: rtl8192se: Fix regression due to commit 1bf4bbb
+
+From: Larry Finger <Larry.Finger@lwfinger.net>
+
+commit 5f9186990ec4579ee5b7a99b3254c29eda479f36 upstream.
+
+Beginning with kernel 3.13, this driver fails on some systems. The problem
+was bisected to:
+
+Commit 1bf4bbb4024dcdab5e57634dd8ae1072d42a53ac
+Author: Felix Fietkau <nbd@openwrt.org>
+Title: mac80211: send control port protocol frames to the VO queue
+
+There is noting wrong with the above commit. The regression occurs because
+V0 queue on RTL8192SE cards uses priority 6, not the usual 7. The fix is to
+modify the rtl8192se routine that sets the correct transmit queue.
+
+Bug: https://bugzilla.kernel.org/show_bug.cgi?id=74541
+
+Reported-by: Alex Miller <almiller_1@yahoo.co.uk>
+Tested-by: Alex Miller <almiller_1@yahoo.co.uk>
+Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/rtlwifi/rtl8192se/trx.c |    6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/drivers/net/wireless/rtlwifi/rtl8192se/trx.c
++++ b/drivers/net/wireless/rtlwifi/rtl8192se/trx.c
+@@ -49,6 +49,12 @@ static u8 _rtl92se_map_hwqueue_to_fwqueu
+       if (ieee80211_is_nullfunc(fc))
+               return QSLT_HIGH;
++      /* Kernel commit 1bf4bbb4024dcdab changed EAPOL packets to use
++       * queue V0 at priority 7; however, the RTL8192SE appears to have
++       * that queue at priority 6
++       */
++      if (skb->priority == 7)
++              return QSLT_VO;
+       return skb->priority;
+ }
diff --git a/queue-3.10/rtlwifi-rtl8192se-fix-too-long-disable-of-irqs.patch b/queue-3.10/rtlwifi-rtl8192se-fix-too-long-disable-of-irqs.patch
new file mode 100644 (file)
index 0000000..dea8f92
--- /dev/null
@@ -0,0 +1,101 @@
+From 2610decdd0b3808ba20471a999835cfee5275f98 Mon Sep 17 00:00:00 2001
+From: Larry Finger <Larry.Finger@lwfinger.net>
+Date: Tue, 4 Mar 2014 16:53:51 -0600
+Subject: rtlwifi: rtl8192se: Fix too long disable of IRQs
+
+From: Larry Finger <Larry.Finger@lwfinger.net>
+
+commit 2610decdd0b3808ba20471a999835cfee5275f98 upstream.
+
+In commit f78bccd79ba3cd9d9664981b501d57bdb81ab8a4 entitled "rtlwifi:
+rtl8192ce: Fix too long disable of IRQs", Olivier Langlois
+<olivier@trillion01.com> fixed a problem caused by an extra long disabling
+of interrupts. This patch makes the same fix for rtl8192se.
+
+Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/rtlwifi/rtl8192se/hw.c |   27 +++++++++++++++++++++------
+ 1 file changed, 21 insertions(+), 6 deletions(-)
+
+--- a/drivers/net/wireless/rtlwifi/rtl8192se/hw.c
++++ b/drivers/net/wireless/rtlwifi/rtl8192se/hw.c
+@@ -955,7 +955,7 @@ int rtl92se_hw_init(struct ieee80211_hw
+       struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
+       struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw));
+       u8 tmp_byte = 0;
+-
++      unsigned long flags;
+       bool rtstatus = true;
+       u8 tmp_u1b;
+       int err = false;
+@@ -967,6 +967,16 @@ int rtl92se_hw_init(struct ieee80211_hw
+       rtlpci->being_init_adapter = true;
++      /* As this function can take a very long time (up to 350 ms)
++       * and can be called with irqs disabled, reenable the irqs
++       * to let the other devices continue being serviced.
++       *
++       * It is safe doing so since our own interrupts will only be enabled
++       * in a subsequent step.
++       */
++      local_save_flags(flags);
++      local_irq_enable();
++
+       rtlpriv->intf_ops->disable_aspm(hw);
+       /* 1. MAC Initialize */
+@@ -984,7 +994,8 @@ int rtl92se_hw_init(struct ieee80211_hw
+               RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING,
+                        "Failed to download FW. Init HW without FW now... "
+                        "Please copy FW into /lib/firmware/rtlwifi\n");
+-              return 1;
++              err = 1;
++              goto exit;
+       }
+       /* After FW download, we have to reset MAC register */
+@@ -997,7 +1008,8 @@ int rtl92se_hw_init(struct ieee80211_hw
+       /* 3. Initialize MAC/PHY Config by MACPHY_reg.txt */
+       if (!rtl92s_phy_mac_config(hw)) {
+               RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, "MAC Config failed\n");
+-              return rtstatus;
++              err = rtstatus;
++              goto exit;
+       }
+       /* because last function modify RCR, so we update
+@@ -1016,7 +1028,8 @@ int rtl92se_hw_init(struct ieee80211_hw
+       /* 4. Initialize BB After MAC Config PHY_reg.txt, AGC_Tab.txt */
+       if (!rtl92s_phy_bb_config(hw)) {
+               RT_TRACE(rtlpriv, COMP_INIT, DBG_EMERG, "BB Config failed\n");
+-              return rtstatus;
++              err = rtstatus;
++              goto exit;
+       }
+       /* 5. Initiailze RF RAIO_A.txt RF RAIO_B.txt */
+@@ -1033,7 +1046,8 @@ int rtl92se_hw_init(struct ieee80211_hw
+       if (!rtl92s_phy_rf_config(hw)) {
+               RT_TRACE(rtlpriv, COMP_INIT, DBG_DMESG, "RF Config failed\n");
+-              return rtstatus;
++              err = rtstatus;
++              goto exit;
+       }
+       /* After read predefined TXT, we must set BB/MAC/RF
+@@ -1122,8 +1136,9 @@ int rtl92se_hw_init(struct ieee80211_hw
+       rtlpriv->cfg->ops->led_control(hw, LED_CTL_POWER_ON);
+       rtl92s_dm_init(hw);
++exit:
++      local_irq_restore(flags);
+       rtlpci->being_init_adapter = false;
+-
+       return err;
+ }
diff --git a/queue-3.10/rtlwifi-rtl8723ae-fix-too-long-disable-of-irqs.patch b/queue-3.10/rtlwifi-rtl8723ae-fix-too-long-disable-of-irqs.patch
new file mode 100644 (file)
index 0000000..550e547
--- /dev/null
@@ -0,0 +1,70 @@
+From bfc1010c418a22cbebd8b1bd1e75dad6a527a609 Mon Sep 17 00:00:00 2001
+From: Larry Finger <Larry.Finger@lwfinger.net>
+Date: Tue, 4 Mar 2014 16:53:53 -0600
+Subject: rtlwifi: rtl8723ae: Fix too long disable of IRQs
+
+From: Larry Finger <Larry.Finger@lwfinger.net>
+
+commit bfc1010c418a22cbebd8b1bd1e75dad6a527a609 upstream.
+
+In commit f78bccd79ba3cd9d9664981b501d57bdb81ab8a4 entitled "rtlwifi:
+rtl8192ce: Fix too long disable of IRQs", Olivier Langlois
+<olivier@trillion01.com> fixed a problem caused by an extra long disabling
+of interrupts. This patch makes the same fix for rtl8723ae.
+
+Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/rtlwifi/rtl8723ae/hw.c |   18 +++++++++++++++---
+ 1 file changed, 15 insertions(+), 3 deletions(-)
+
+--- a/drivers/net/wireless/rtlwifi/rtl8723ae/hw.c
++++ b/drivers/net/wireless/rtlwifi/rtl8723ae/hw.c
+@@ -880,14 +880,25 @@ int rtl8723ae_hw_init(struct ieee80211_h
+       bool rtstatus = true;
+       int err;
+       u8 tmp_u1b;
++      unsigned long flags;
+       rtlpriv->rtlhal.being_init_adapter = true;
++      /* As this function can take a very long time (up to 350 ms)
++       * and can be called with irqs disabled, reenable the irqs
++       * to let the other devices continue being serviced.
++       *
++       * It is safe doing so since our own interrupts will only be enabled
++       * in a subsequent step.
++       */
++      local_save_flags(flags);
++      local_irq_enable();
++
+       rtlpriv->intf_ops->disable_aspm(hw);
+       rtstatus = _rtl8712e_init_mac(hw);
+       if (rtstatus != true) {
+               RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, "Init MAC failed\n");
+               err = 1;
+-              return err;
++              goto exit;
+       }
+       err = rtl8723ae_download_fw(hw);
+@@ -895,8 +906,7 @@ int rtl8723ae_hw_init(struct ieee80211_h
+               RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING,
+                        "Failed to download FW. Init HW without FW now..\n");
+               err = 1;
+-              rtlhal->fw_ready = false;
+-              return err;
++              goto exit;
+       } else {
+               rtlhal->fw_ready = true;
+       }
+@@ -971,6 +981,8 @@ int rtl8723ae_hw_init(struct ieee80211_h
+               RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, "under 1.5V\n");
+       }
+       rtl8723ae_dm_init(hw);
++exit:
++      local_irq_restore(flags);
+       rtlpriv->rtlhal.being_init_adapter = false;
+       return err;
+ }
index aed63f74c98e226c039f37c0d3e132a76b361663..44854bc6a29819a27e94cc659716e6f6dd5eecd7 100644 (file)
@@ -24,3 +24,13 @@ mach64-fix-cursor-when-character-width-is-not-a-multiple-of-8-pixels.patch
 b43-fix-machine-check-error-due-to-improper-access-of-b43_mmio_psm_phy_hdr.patch
 libata-ahci-accommodate-tag-ordered-controllers.patch
 iwlwifi-dvm-take-mutex-when-sending-sync-bt-config-command.patch
+mac80211-fix-wpa-with-vlan-on-ap-side-with-ps-sta-again.patch
+mac80211-fix-software-remain-on-channel-implementation.patch
+mac80211-exclude-ap_vlan-interfaces-from-tx-power-calculation.patch
+locks-allow-__break_lease-to-sleep-even-when-break_time-is-0.patch
+rtlwifi-rtl8723ae-fix-too-long-disable-of-irqs.patch
+rtlwifi-rtl8188ee-fix-too-long-disable-of-irqs.patch
+rtlwifi-rtl8192cu-fix-too-long-disable-of-irqs.patch
+rtlwifi-rtl8192se-fix-too-long-disable-of-irqs.patch
+rtlwifi-rtl8192se-fix-regression-due-to-commit-1bf4bbb.patch
+rtlwifi-rtl8188ee-initialize-packet_beacon.patch