All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH AUTOSEL 5.10 01/44] wifi: rt2x00: restart beacon queue when hardware reset
@ 2024-01-16 19:59 Sasha Levin
  2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 02/44] selftests/bpf: satisfy compiler by having explicit return in btf test Sasha Levin
                   ` (42 more replies)
  0 siblings, 43 replies; 58+ messages in thread
From: Sasha Levin @ 2024-01-16 19:59 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Shiji Yang, Stanislaw Gruszka, Kalle Valo, Sasha Levin,
	linux-wireless

From: Shiji Yang <yangshiji66@outlook.com>

[ Upstream commit a11d965a218f0cd95b13fe44d0bcd8a20ce134a8 ]

When a hardware reset is triggered, all registers are reset, so all
queues are forced to stop in hardware interface. However, mac80211
will not automatically stop the queue. If we don't manually stop the
beacon queue, the queue will be deadlocked and unable to start again.
This patch fixes the issue where Apple devices cannot connect to the
AP after calling ieee80211_restart_hw().

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Acked-by: Stanislaw Gruszka <stf_xl@wp.pl>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/TYAP286MB031530EB6D98DCE4DF20766CBCA4A@TYAP286MB0315.JPNP286.PROD.OUTLOOK.COM
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/ralink/rt2x00/rt2x00dev.c |  3 +++
 drivers/net/wireless/ralink/rt2x00/rt2x00mac.c | 11 +++++++++++
 2 files changed, 14 insertions(+)

diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
index b04f76551ca4..be3c153ab3b0 100644
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
@@ -101,6 +101,7 @@ void rt2x00lib_disable_radio(struct rt2x00_dev *rt2x00dev)
 	rt2x00link_stop_tuner(rt2x00dev);
 	rt2x00queue_stop_queues(rt2x00dev);
 	rt2x00queue_flush_queues(rt2x00dev, true);
+	rt2x00queue_stop_queue(rt2x00dev->bcn);
 
 	/*
 	 * Disable radio.
@@ -1272,6 +1273,7 @@ int rt2x00lib_start(struct rt2x00_dev *rt2x00dev)
 	rt2x00dev->intf_ap_count = 0;
 	rt2x00dev->intf_sta_count = 0;
 	rt2x00dev->intf_associated = 0;
+	rt2x00dev->intf_beaconing = 0;
 
 	/* Enable the radio */
 	retval = rt2x00lib_enable_radio(rt2x00dev);
@@ -1298,6 +1300,7 @@ void rt2x00lib_stop(struct rt2x00_dev *rt2x00dev)
 	rt2x00dev->intf_ap_count = 0;
 	rt2x00dev->intf_sta_count = 0;
 	rt2x00dev->intf_associated = 0;
+	rt2x00dev->intf_beaconing = 0;
 }
 
 static inline void rt2x00lib_set_if_combinations(struct rt2x00_dev *rt2x00dev)
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c b/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c
index 2f68a31072ae..795bd3b0ebd8 100644
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c
@@ -599,6 +599,17 @@ void rt2x00mac_bss_info_changed(struct ieee80211_hw *hw,
 	 */
 	if (changes & BSS_CHANGED_BEACON_ENABLED) {
 		mutex_lock(&intf->beacon_skb_mutex);
+
+		/*
+		 * Clear the 'enable_beacon' flag and clear beacon because
+		 * the beacon queue has been stopped after hardware reset.
+		 */
+		if (test_bit(DEVICE_STATE_RESET, &rt2x00dev->flags) &&
+		    intf->enable_beacon) {
+			intf->enable_beacon = false;
+			rt2x00queue_clear_beacon(rt2x00dev, vif);
+		}
+
 		if (!bss_conf->enable_beacon && intf->enable_beacon) {
 			rt2x00dev->intf_beaconing--;
 			intf->enable_beacon = false;
-- 
2.43.0


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

end of thread, other threads:[~2024-01-16 21:31 UTC | newest]

Thread overview: 58+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-16 19:59 [PATCH AUTOSEL 5.10 01/44] wifi: rt2x00: restart beacon queue when hardware reset Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 02/44] selftests/bpf: satisfy compiler by having explicit return in btf test Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 03/44] selftests/bpf: Fix pyperf180 compilation failure with clang18 Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 04/44] scsi: lpfc: Fix possible file string name overflow when updating firmware Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 05/44] PCI: Add no PM reset quirk for NVIDIA Spectrum devices Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 06/44] bonding: return -ENOMEM instead of BUG in alb_upper_dev_walk Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 07/44] wifi: ieee80211: fix PV1 frame control field name Sasha Levin
2024-01-16 21:31   ` Johannes Berg
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 08/44] scsi: arcmsr: Support new PCI device IDs 1883 and 1886 Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 09/44] ARM: dts: imx7d: Fix coresight funnel ports Sasha Levin
2024-01-16 19:59   ` Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 10/44] ARM: dts: imx7s: Fix lcdif compatible Sasha Levin
2024-01-16 19:59   ` Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 11/44] ARM: dts: imx7s: Fix nand-controller #size-cells Sasha Levin
2024-01-16 19:59   ` Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 12/44] wifi: ath9k: Fix potential array-index-out-of-bounds read in ath9k_htc_txstatus() Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 13/44] bpf: Add map and need_defer parameters to .map_fd_put_ptr() Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 14/44] bpf: Set need_defer as false when clearing fd array during map free Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 15/44] scsi: libfc: Don't schedule abort twice Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 16/44] scsi: libfc: Fix up timeout error in fc_fcp_rec_error() Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 17/44] net: mvmdio: Avoid excessive sleeps in polled mode Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 18/44] bpf: Guard stack limits against 32bit overflow Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 19/44] bpf: Set uattr->batch.count as zero before batched update or deletion Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 20/44] ARM: dts: rockchip: fix rk3036 hdmi ports node Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 21/44] ARM: dts: imx25/27-eukrea: Fix RTC node name Sasha Levin
2024-01-16 19:59   ` Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 22/44] ARM: dts: imx: Use flash@0,0 pattern Sasha Levin
2024-01-16 19:59   ` Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 23/44] ARM: dts: imx27: Fix sram node Sasha Levin
2024-01-16 19:59   ` Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 24/44] ARM: dts: imx1: " Sasha Levin
2024-01-16 19:59   ` Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 25/44] ionic: pass opcode to devcmd_wait Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 26/44] block/rnbd-srv: Check for unlikely string overflow Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 27/44] ARM: dts: imx25: Fix the iim compatible string Sasha Levin
2024-01-16 19:59   ` Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 28/44] ARM: dts: imx25/27: Pass timing0 Sasha Levin
2024-01-16 19:59   ` Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 29/44] ARM: dts: imx27-apf27dev: Fix LED name Sasha Levin
2024-01-16 19:59   ` Sasha Levin
2024-01-16 19:59 ` [PATCH AUTOSEL 5.10 30/44] ARM: dts: imx23-sansa: Use preferred i2c-gpios properties Sasha Levin
2024-01-16 19:59   ` Sasha Levin
2024-01-16 20:00 ` [PATCH AUTOSEL 5.10 31/44] ARM: dts: imx23/28: Fix the DMA controller node name Sasha Levin
2024-01-16 20:00   ` Sasha Levin
2024-01-16 20:00 ` [PATCH AUTOSEL 5.10 32/44] net: dsa: mv88e6xxx: Fix mv88e6352_serdes_get_stats error path Sasha Levin
2024-01-16 20:00 ` [PATCH AUTOSEL 5.10 33/44] block: prevent an integer overflow in bvec_try_merge_hw_page Sasha Levin
2024-01-16 20:00 ` [PATCH AUTOSEL 5.10 34/44] md: Whenassemble the array, consult the superblock of the freshest device Sasha Levin
2024-01-16 20:00 ` [PATCH AUTOSEL 5.10 35/44] arm64: dts: qcom: msm8996: Fix 'in-ports' is a required property Sasha Levin
2024-01-16 20:00 ` [PATCH AUTOSEL 5.10 36/44] arm64: dts: qcom: msm8998: Fix 'out-ports' " Sasha Levin
2024-01-16 20:00 ` [PATCH AUTOSEL 5.10 37/44] wifi: rtl8xxxu: Add additional USB IDs for RTL8192EU devices Sasha Levin
2024-01-16 20:00 ` [PATCH AUTOSEL 5.10 38/44] libbpf: Fix NULL pointer dereference in bpf_object__collect_prog_relos Sasha Levin
2024-01-16 20:00 ` [PATCH AUTOSEL 5.10 39/44] wifi: rtlwifi: add calculate_bit_shift() Sasha Levin
2024-01-16 20:00 ` [PATCH AUTOSEL 5.10 40/44] wifi: rtlwifi: rtl8723{be,ae}: using calculate_bit_shift() Sasha Levin
2024-01-16 20:00 ` [PATCH AUTOSEL 5.10 41/44] wifi: cfg80211: free beacon_ies when overridden from hidden BSS Sasha Levin
2024-01-16 20:00 ` [PATCH AUTOSEL 5.10 42/44] Bluetooth: qca: Set both WIDEBAND_SPEECH and LE_STATES quirks for QCA2066 Sasha Levin
2024-01-16 20:00 ` [PATCH AUTOSEL 5.10 43/44] Bluetooth: L2CAP: Fix possible multiple reject send Sasha Levin
2024-01-16 20:00 ` [Intel-wired-lan] [PATCH AUTOSEL 5.10 44/44] i40e: Fix VF disable behavior to block all traffic Sasha Levin
2024-01-16 20:00   ` Sasha Levin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.