Skip to content

Commit e861041

Browse files
committed
Johannes Berg says: ==================== Just a handful of fixes, notably - iwlwifi: various build warning fixes (e.g. PM_SLEEP) - iwlwifi: fix operation when FW reset handshake times out - mac80211: drop pending frames on interface down * tag 'wireless-2025-04-11' of https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless: Revert "wifi: mac80211: Update skb's control block key in ieee80211_tx_dequeue()" wifi: iwlwifi: mld: Restart firmware on iwl_mld_no_wowlan_resume() error wifi: iwlwifi: pcie: set state to no-FW before reset handshake wifi: wl1251: fix memory leak in wl1251_tx_work wifi: brcmfmac: fix memory leak in brcmf_get_module_param wifi: iwlwifi: mld: silence uninitialized variable warning wifi: mac80211: Purge vif txq in ieee80211_do_stop() wifi: mac80211: Update skb's control block key in ieee80211_tx_dequeue() wifi: at76c50x: fix use after free access in at76_disconnect wifi: add wireless list to MAINTAINERS iwlwifi: mld: fix building with CONFIG_PM_SLEEP disabled wifi: iwlwifi: mld: fix PM_SLEEP -Wundef warning wifi: iwlwifi: mld: reduce scope for uninitialized variable ==================== Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
2 parents 9767870 + 0937cb5 commit e861041

File tree

10 files changed

+33
-13
lines changed

10 files changed

+33
-13
lines changed

MAINTAINERS

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6335,6 +6335,7 @@ F: Documentation/process/cve.rst
63356335

63366336
CW1200 WLAN driver
63376337
S: Orphan
6338+
63386339
F: drivers/net/wireless/st/
63396340
F: include/linux/platform_data/net-cw1200.h
63406341

@@ -14285,6 +14286,7 @@ S: Odd fixes
1428514286
F: drivers/net/ethernet/marvell/sk*
1428614287

1428714288
MARVELL LIBERTAS WIRELESS DRIVER
14289+
1428814290
1428914291
S: Orphan
1429014292
F: drivers/net/wireless/marvell/libertas/
@@ -19748,6 +19750,7 @@ F: drivers/media/tuners/qt1010*
1974819750

1974919751
QUALCOMM ATH12K WIRELESS DRIVER
1975019752
M: Jeff Johnson <[email protected]>
19753+
1975119754
1975219755
S: Supported
1975319756
W: https://wireless.wiki.kernel.org/en/users/Drivers/ath12k
@@ -19757,6 +19760,7 @@ N: ath12k
1975719760

1975819761
QUALCOMM ATHEROS ATH10K WIRELESS DRIVER
1975919762
M: Jeff Johnson <[email protected]>
19763+
1976019764
1976119765
S: Supported
1976219766
W: https://wireless.wiki.kernel.org/en/users/Drivers/ath10k
@@ -19766,6 +19770,7 @@ N: ath10k
1976619770

1976719771
QUALCOMM ATHEROS ATH11K WIRELESS DRIVER
1976819772
M: Jeff Johnson <[email protected]>
19773+
1976919774
1977019775
S: Supported
1977119776
W: https://wireless.wiki.kernel.org/en/users/Drivers/ath11k
@@ -22139,6 +22144,7 @@ F: drivers/platform/x86/touchscreen_dmi.c
2213922144

2214022145
SILICON LABS WIRELESS DRIVERS (for WFxxx series)
2214122146
M: Jérôme Pouiller <[email protected]>
22147+
2214222148
S: Supported
2214322149
F: Documentation/devicetree/bindings/net/wireless/silabs,wfx.yaml
2214422150
F: drivers/net/wireless/silabs/

drivers/net/wireless/atmel/at76c50x-usb.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2552,7 +2552,7 @@ static void at76_disconnect(struct usb_interface *interface)
25522552

25532553
wiphy_info(priv->hw->wiphy, "disconnecting\n");
25542554
at76_delete_device(priv);
2555-
usb_put_dev(priv->udev);
2555+
usb_put_dev(interface_to_usbdev(interface));
25562556
dev_info(&interface->dev, "disconnected\n");
25572557
}
25582558

drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -561,8 +561,10 @@ struct brcmf_mp_device *brcmf_get_module_param(struct device *dev,
561561
if (!found) {
562562
/* No platform data for this device, try OF and DMI data */
563563
brcmf_dmi_probe(settings, chip, chiprev);
564-
if (brcmf_of_probe(dev, bus_type, settings) == -EPROBE_DEFER)
564+
if (brcmf_of_probe(dev, bus_type, settings) == -EPROBE_DEFER) {
565+
kfree(settings);
565566
return ERR_PTR(-EPROBE_DEFER);
567+
}
566568
brcmf_acpi_probe(dev, bus_type, settings);
567569
}
568570
return settings;

drivers/net/wireless/intel/iwlwifi/mld/d3.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1895,7 +1895,6 @@ int iwl_mld_wowlan_resume(struct iwl_mld *mld)
18951895
int link_id;
18961896
int ret;
18971897
bool fw_err = false;
1898-
bool keep_connection;
18991898

19001899
lockdep_assert_wiphy(mld->wiphy);
19011900

@@ -1965,19 +1964,18 @@ int iwl_mld_wowlan_resume(struct iwl_mld *mld)
19651964
iwl_mld_process_netdetect_res(mld, bss_vif, &resume_data);
19661965
mld->netdetect = false;
19671966
} else {
1968-
keep_connection =
1967+
bool keep_connection =
19691968
iwl_mld_process_wowlan_status(mld, bss_vif,
19701969
resume_data.wowlan_status);
19711970

19721971
/* EMLSR state will be cleared if the connection is not kept */
19731972
if (keep_connection)
19741973
iwl_mld_unblock_emlsr(mld, bss_vif,
19751974
IWL_MLD_EMLSR_BLOCKED_WOWLAN);
1975+
else
1976+
ieee80211_resume_disconnect(bss_vif);
19761977
}
19771978

1978-
if (!mld->netdetect && !keep_connection)
1979-
ieee80211_resume_disconnect(bss_vif);
1980-
19811979
goto out;
19821980

19831981
err:

drivers/net/wireless/intel/iwlwifi/mld/debugfs.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -396,8 +396,8 @@ static ssize_t iwl_dbgfs_tas_get_status_read(struct iwl_mld *mld, char *buf,
396396
.data[0] = &cmd,
397397
};
398398
struct iwl_dhc_tas_status_resp *resp = NULL;
399+
u32 resp_len = 0;
399400
ssize_t pos = 0;
400-
u32 resp_len;
401401
u32 status;
402402
int ret;
403403

drivers/net/wireless/intel/iwlwifi/mld/iface.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ struct iwl_mld_vif {
166166

167167
struct iwl_mld_emlsr emlsr;
168168

169-
#if CONFIG_PM_SLEEP
169+
#ifdef CONFIG_PM_SLEEP
170170
struct iwl_mld_wowlan_data wowlan_data;
171171
#endif
172172
#ifdef CONFIG_IWLWIFI_DEBUGFS

drivers/net/wireless/intel/iwlwifi/mld/mac80211.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -475,8 +475,8 @@ static
475475
int iwl_mld_mac80211_start(struct ieee80211_hw *hw)
476476
{
477477
struct iwl_mld *mld = IWL_MAC80211_GET_MLD(hw);
478-
int ret;
479478
bool in_d3 = false;
479+
int ret = 0;
480480

481481
lockdep_assert_wiphy(mld->wiphy);
482482

@@ -537,7 +537,8 @@ void iwl_mld_mac80211_stop(struct ieee80211_hw *hw, bool suspend)
537537
/* if the suspend flow fails the fw is in error. Stop it here, and it
538538
* will be started upon wakeup
539539
*/
540-
if (!suspend || iwl_mld_no_wowlan_suspend(mld))
540+
if (!suspend ||
541+
(IS_ENABLED(CONFIG_PM_SLEEP) && iwl_mld_no_wowlan_suspend(mld)))
541542
iwl_mld_stop_fw(mld);
542543

543544
/* HW is stopped, no more coming RX. OTOH, the worker can't run as the
@@ -1943,6 +1944,7 @@ static void iwl_mld_sta_rc_update(struct ieee80211_hw *hw,
19431944
}
19441945
}
19451946

1947+
#ifdef CONFIG_PM_SLEEP
19461948
static void iwl_mld_set_wakeup(struct ieee80211_hw *hw, bool enabled)
19471949
{
19481950
struct iwl_mld *mld = IWL_MAC80211_GET_MLD(hw);
@@ -1994,6 +1996,7 @@ static int iwl_mld_resume(struct ieee80211_hw *hw)
19941996

19951997
return 0;
19961998
}
1999+
#endif
19972000

19982001
static int iwl_mld_alloc_ptk_pn(struct iwl_mld *mld,
19992002
struct iwl_mld_sta *mld_sta,

drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,14 @@ static void _iwl_trans_pcie_gen2_stop_device(struct iwl_trans *trans)
147147
return;
148148

149149
if (trans->state >= IWL_TRANS_FW_STARTED &&
150-
trans_pcie->fw_reset_handshake)
150+
trans_pcie->fw_reset_handshake) {
151+
/*
152+
* Reset handshake can dump firmware on timeout, but that
153+
* should assume that the firmware is already dead.
154+
*/
155+
trans->state = IWL_TRANS_NO_FW;
151156
iwl_trans_pcie_fw_reset_handshake(trans);
157+
}
152158

153159
trans_pcie->is_down = true;
154160

drivers/net/wireless/ti/wl1251/tx.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,8 +342,10 @@ void wl1251_tx_work(struct work_struct *work)
342342
while ((skb = skb_dequeue(&wl->tx_queue))) {
343343
if (!woken_up) {
344344
ret = wl1251_ps_elp_wakeup(wl);
345-
if (ret < 0)
345+
if (ret < 0) {
346+
skb_queue_head(&wl->tx_queue, skb);
346347
goto out;
348+
}
347349
woken_up = true;
348350
}
349351

net/mac80211/iface.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -659,6 +659,9 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, bool going_do
659659
if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
660660
ieee80211_txq_remove_vlan(local, sdata);
661661

662+
if (sdata->vif.txq)
663+
ieee80211_txq_purge(sdata->local, to_txq_info(sdata->vif.txq));
664+
662665
sdata->bss = NULL;
663666

664667
if (local->open_count == 0)

0 commit comments

Comments
 (0)