From 4abd7be2dc23d23e7f003a47842e01252c935a18 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 5 Aug 2014 10:51:46 -0700 Subject: [PATCH] 3.14-stable patches added patches: arm-dts-dra7-evm-make-vdda_1v8_phy-supply-always-on.patch revert-mac80211-move-bufferable-mmpdu-check-to-fix-ap-mode-scan.patch staging-vt6655-fix-warning-on-boot-handle_irq_event_percpu.patch --- ...m-make-vdda_1v8_phy-supply-always-on.patch | 43 ++++++++++ ...able-mmpdu-check-to-fix-ap-mode-scan.patch | 85 +++++++++++++++++++ queue-3.14/series | 3 + ...ning-on-boot-handle_irq_event_percpu.patch | 52 ++++++++++++ 4 files changed, 183 insertions(+) create mode 100644 queue-3.14/arm-dts-dra7-evm-make-vdda_1v8_phy-supply-always-on.patch create mode 100644 queue-3.14/revert-mac80211-move-bufferable-mmpdu-check-to-fix-ap-mode-scan.patch create mode 100644 queue-3.14/staging-vt6655-fix-warning-on-boot-handle_irq_event_percpu.patch diff --git a/queue-3.14/arm-dts-dra7-evm-make-vdda_1v8_phy-supply-always-on.patch b/queue-3.14/arm-dts-dra7-evm-make-vdda_1v8_phy-supply-always-on.patch new file mode 100644 index 00000000000..6040b3071a1 --- /dev/null +++ b/queue-3.14/arm-dts-dra7-evm-make-vdda_1v8_phy-supply-always-on.patch @@ -0,0 +1,43 @@ +From e120fb459693bbc1ac3eabdd65c3659d7cfbfd2a Mon Sep 17 00:00:00 2001 +From: Roger Quadros +Date: Fri, 4 Jul 2014 12:55:43 +0300 +Subject: ARM: dts: dra7-evm: Make VDDA_1V8_PHY supply always on + +From: Roger Quadros + +commit e120fb459693bbc1ac3eabdd65c3659d7cfbfd2a upstream. + +After clarification from the hardware team it was found that +this 1.8V PHY supply can't be switched OFF when SoC is Active. + +Since the PHY IPs don't contain isolation logic built in the design to +allow the power rail to be switched off, there is a very high risk +of IP reliability and additional leakage paths which can result in +additional power consumption. + +The only scenario where this rail can be switched off is part of Power on +reset sequencing, but it needs to be kept always-on during operation. + +This patch is required for proper functionality of USB, SATA +and PCIe on DRA7-evm. + +CC: Rajendra Nayak +CC: Tero Kristo +Signed-off-by: Roger Quadros +Signed-off-by: Tony Lindgren +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/boot/dts/dra7-evm.dts | 1 + + 1 file changed, 1 insertion(+) + +--- a/arch/arm/boot/dts/dra7-evm.dts ++++ b/arch/arm/boot/dts/dra7-evm.dts +@@ -182,6 +182,7 @@ + regulator-name = "ldo3"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; ++ regulator-always-on; + regulator-boot-on; + }; + diff --git a/queue-3.14/revert-mac80211-move-bufferable-mmpdu-check-to-fix-ap-mode-scan.patch b/queue-3.14/revert-mac80211-move-bufferable-mmpdu-check-to-fix-ap-mode-scan.patch new file mode 100644 index 00000000000..3fe48bb2087 --- /dev/null +++ b/queue-3.14/revert-mac80211-move-bufferable-mmpdu-check-to-fix-ap-mode-scan.patch @@ -0,0 +1,85 @@ +From 08b9939997df30e42a228e1ecb97f99e9c8ea84e Mon Sep 17 00:00:00 2001 +From: Johannes Berg +Date: Mon, 7 Jul 2014 12:01:11 +0200 +Subject: Revert "mac80211: move "bufferable MMPDU" check to fix AP mode scan" + +From: Johannes Berg + +commit 08b9939997df30e42a228e1ecb97f99e9c8ea84e upstream. + +This reverts commit 277d916fc2e959c3f106904116bb4f7b1148d47a as it was +at least breaking iwlwifi by setting the IEEE80211_TX_CTL_NO_PS_BUFFER +flag in all kinds of interface modes, not only for AP mode where it is +appropriate. + +To avoid reintroducing the original problem, explicitly check for probe +request frames in the multicast buffering code. + +Fixes: 277d916fc2e9 ("mac80211: move "bufferable MMPDU" check to fix AP mode scan") +Signed-off-by: Johannes Berg +Signed-off-by: Greg Kroah-Hartman + + +--- + net/mac80211/tx.c | 27 +++++++++++++-------------- + 1 file changed, 13 insertions(+), 14 deletions(-) + +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -414,6 +414,9 @@ ieee80211_tx_h_multicast_ps_buf(struct i + if (ieee80211_has_order(hdr->frame_control)) + return TX_CONTINUE; + ++ if (ieee80211_is_probe_req(hdr->frame_control)) ++ return TX_CONTINUE; ++ + if (tx->local->hw.flags & IEEE80211_HW_QUEUE_CONTROL) + info->hw_queue = tx->sdata->vif.cab_queue; + +@@ -464,6 +467,7 @@ ieee80211_tx_h_unicast_ps_buf(struct iee + { + struct sta_info *sta = tx->sta; + struct ieee80211_tx_info *info = IEEE80211_SKB_CB(tx->skb); ++ struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)tx->skb->data; + struct ieee80211_local *local = tx->local; + + if (unlikely(!sta)) +@@ -474,6 +478,15 @@ ieee80211_tx_h_unicast_ps_buf(struct iee + !(info->flags & IEEE80211_TX_CTL_NO_PS_BUFFER))) { + int ac = skb_get_queue_mapping(tx->skb); + ++ /* only deauth, disassoc and action are bufferable MMPDUs */ ++ if (ieee80211_is_mgmt(hdr->frame_control) && ++ !ieee80211_is_deauth(hdr->frame_control) && ++ !ieee80211_is_disassoc(hdr->frame_control) && ++ !ieee80211_is_action(hdr->frame_control)) { ++ info->flags |= IEEE80211_TX_CTL_NO_PS_BUFFER; ++ return TX_CONTINUE; ++ } ++ + ps_dbg(sta->sdata, "STA %pM aid %d: PS buffer for AC %d\n", + sta->sta.addr, sta->sta.aid, ac); + if (tx->local->total_ps_buffered >= TOTAL_MAX_TX_BUFFER) +@@ -532,22 +545,8 @@ ieee80211_tx_h_unicast_ps_buf(struct iee + static ieee80211_tx_result debug_noinline + ieee80211_tx_h_ps_buf(struct ieee80211_tx_data *tx) + { +- struct ieee80211_tx_info *info = IEEE80211_SKB_CB(tx->skb); +- struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)tx->skb->data; +- + if (unlikely(tx->flags & IEEE80211_TX_PS_BUFFERED)) + return TX_CONTINUE; +- +- /* only deauth, disassoc and action are bufferable MMPDUs */ +- if (ieee80211_is_mgmt(hdr->frame_control) && +- !ieee80211_is_deauth(hdr->frame_control) && +- !ieee80211_is_disassoc(hdr->frame_control) && +- !ieee80211_is_action(hdr->frame_control)) { +- if (tx->flags & IEEE80211_TX_UNICAST) +- info->flags |= IEEE80211_TX_CTL_NO_PS_BUFFER; +- return TX_CONTINUE; +- } +- + if (tx->flags & IEEE80211_TX_UNICAST) + return ieee80211_tx_h_unicast_ps_buf(tx); + else diff --git a/queue-3.14/series b/queue-3.14/series index 1c85cd3809d..593b81f13ed 100644 --- a/queue-3.14/series +++ b/queue-3.14/series @@ -28,3 +28,6 @@ x86-espfix-make-espfix64-a-kconfig-option-fix-uml.patch x86-espfix-make-it-possible-to-disable-16-bit-support.patch x86_64-entry-xen-do-not-invoke-espfix64-on-xen.patch pinctrl-dra-dt-bindings-fix-pull-enable-disable.patch +arm-dts-dra7-evm-make-vdda_1v8_phy-supply-always-on.patch +staging-vt6655-fix-warning-on-boot-handle_irq_event_percpu.patch +revert-mac80211-move-bufferable-mmpdu-check-to-fix-ap-mode-scan.patch diff --git a/queue-3.14/staging-vt6655-fix-warning-on-boot-handle_irq_event_percpu.patch b/queue-3.14/staging-vt6655-fix-warning-on-boot-handle_irq_event_percpu.patch new file mode 100644 index 00000000000..917b2b7c54f --- /dev/null +++ b/queue-3.14/staging-vt6655-fix-warning-on-boot-handle_irq_event_percpu.patch @@ -0,0 +1,52 @@ +From 6cff1f6ad4c615319c1a146b2aa0af1043c5e9f5 Mon Sep 17 00:00:00 2001 +From: Malcolm Priestley +Date: Wed, 23 Jul 2014 21:35:11 +0100 +Subject: staging: vt6655: Fix Warning on boot handle_irq_event_percpu. + +From: Malcolm Priestley + +commit 6cff1f6ad4c615319c1a146b2aa0af1043c5e9f5 upstream. + +WARNING: CPU: 0 PID: 929 at /home/apw/COD/linux/kernel/irq/handle.c:147 handle_irq_event_percpu+0x1d1/0x1e0() +irq 17 handler device_intr+0x0/0xa80 [vt6655_stage] enabled interrupts + +Using spin_lock_irqsave appears to fix this. + +Signed-off-by: Malcolm Priestley +Signed-off-by: Greg Kroah-Hartman + + +--- + drivers/staging/vt6655/device_main.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +--- a/drivers/staging/vt6655/device_main.c ++++ b/drivers/staging/vt6655/device_main.c +@@ -2430,6 +2430,7 @@ static irqreturn_t device_intr(int irq + int handled = 0; + unsigned char byData = 0; + int ii = 0; ++ unsigned long flags; + // unsigned char byRSSI; + + MACvReadISR(pDevice->PortOffset, &pDevice->dwIsr); +@@ -2455,7 +2456,8 @@ static irqreturn_t device_intr(int irq + + handled = 1; + MACvIntDisable(pDevice->PortOffset); +- spin_lock_irq(&pDevice->lock); ++ ++ spin_lock_irqsave(&pDevice->lock, flags); + + //Make sure current page is 0 + VNSvInPortB(pDevice->PortOffset + MAC_REG_PAGE1SEL, &byOrgPageSel); +@@ -2696,7 +2698,8 @@ static irqreturn_t device_intr(int irq + MACvSelectPage1(pDevice->PortOffset); + } + +- spin_unlock_irq(&pDevice->lock); ++ spin_unlock_irqrestore(&pDevice->lock, flags); ++ + MACvIntEnable(pDevice->PortOffset, IMR_MASK_VALUE); + + return IRQ_RETVAL(handled); -- 2.47.3