Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'wireless-2025-04-11' of https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless

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/20250411142354.24419-3-johannes@sipsolutions.net
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

+33 -13
+6
MAINTAINERS
··· 6335 6335 6336 6336 CW1200 WLAN driver 6337 6337 S: Orphan 6338 + L: linux-wireless@vger.kernel.org 6338 6339 F: drivers/net/wireless/st/ 6339 6340 F: include/linux/platform_data/net-cw1200.h 6340 6341 ··· 14286 14285 F: drivers/net/ethernet/marvell/sk* 14287 14286 14288 14287 MARVELL LIBERTAS WIRELESS DRIVER 14288 + L: linux-wireless@vger.kernel.org 14289 14289 L: libertas-dev@lists.infradead.org 14290 14290 S: Orphan 14291 14291 F: drivers/net/wireless/marvell/libertas/ ··· 19750 19748 19751 19749 QUALCOMM ATH12K WIRELESS DRIVER 19752 19750 M: Jeff Johnson <jjohnson@kernel.org> 19751 + L: linux-wireless@vger.kernel.org 19753 19752 L: ath12k@lists.infradead.org 19754 19753 S: Supported 19755 19754 W: https://wireless.wiki.kernel.org/en/users/Drivers/ath12k ··· 19760 19757 19761 19758 QUALCOMM ATHEROS ATH10K WIRELESS DRIVER 19762 19759 M: Jeff Johnson <jjohnson@kernel.org> 19760 + L: linux-wireless@vger.kernel.org 19763 19761 L: ath10k@lists.infradead.org 19764 19762 S: Supported 19765 19763 W: https://wireless.wiki.kernel.org/en/users/Drivers/ath10k ··· 19770 19766 19771 19767 QUALCOMM ATHEROS ATH11K WIRELESS DRIVER 19772 19768 M: Jeff Johnson <jjohnson@kernel.org> 19769 + L: linux-wireless@vger.kernel.org 19773 19770 L: ath11k@lists.infradead.org 19774 19771 S: Supported 19775 19772 W: https://wireless.wiki.kernel.org/en/users/Drivers/ath11k ··· 22144 22139 22145 22140 SILICON LABS WIRELESS DRIVERS (for WFxxx series) 22146 22141 M: Jérôme Pouiller <jerome.pouiller@silabs.com> 22142 + L: linux-wireless@vger.kernel.org 22147 22143 S: Supported 22148 22144 F: Documentation/devicetree/bindings/net/wireless/silabs,wfx.yaml 22149 22145 F: drivers/net/wireless/silabs/
+1 -1
drivers/net/wireless/atmel/at76c50x-usb.c
··· 2552 2552 2553 2553 wiphy_info(priv->hw->wiphy, "disconnecting\n"); 2554 2554 at76_delete_device(priv); 2555 - usb_put_dev(priv->udev); 2555 + usb_put_dev(interface_to_usbdev(interface)); 2556 2556 dev_info(&interface->dev, "disconnected\n"); 2557 2557 } 2558 2558
+3 -1
drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
··· 561 561 if (!found) { 562 562 /* No platform data for this device, try OF and DMI data */ 563 563 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); 565 566 return ERR_PTR(-EPROBE_DEFER); 567 + } 566 568 brcmf_acpi_probe(dev, bus_type, settings); 567 569 } 568 570 return settings;
+3 -5
drivers/net/wireless/intel/iwlwifi/mld/d3.c
··· 1895 1895 int link_id; 1896 1896 int ret; 1897 1897 bool fw_err = false; 1898 - bool keep_connection; 1899 1898 1900 1899 lockdep_assert_wiphy(mld->wiphy); 1901 1900 ··· 1964 1965 iwl_mld_process_netdetect_res(mld, bss_vif, &resume_data); 1965 1966 mld->netdetect = false; 1966 1967 } else { 1967 - keep_connection = 1968 + bool keep_connection = 1968 1969 iwl_mld_process_wowlan_status(mld, bss_vif, 1969 1970 resume_data.wowlan_status); 1970 1971 ··· 1972 1973 if (keep_connection) 1973 1974 iwl_mld_unblock_emlsr(mld, bss_vif, 1974 1975 IWL_MLD_EMLSR_BLOCKED_WOWLAN); 1976 + else 1977 + ieee80211_resume_disconnect(bss_vif); 1975 1978 } 1976 - 1977 - if (!mld->netdetect && !keep_connection) 1978 - ieee80211_resume_disconnect(bss_vif); 1979 1979 1980 1980 goto out; 1981 1981
+1 -1
drivers/net/wireless/intel/iwlwifi/mld/debugfs.c
··· 396 396 .data[0] = &cmd, 397 397 }; 398 398 struct iwl_dhc_tas_status_resp *resp = NULL; 399 + u32 resp_len = 0; 399 400 ssize_t pos = 0; 400 - u32 resp_len; 401 401 u32 status; 402 402 int ret; 403 403
+1 -1
drivers/net/wireless/intel/iwlwifi/mld/iface.h
··· 166 166 167 167 struct iwl_mld_emlsr emlsr; 168 168 169 - #if CONFIG_PM_SLEEP 169 + #ifdef CONFIG_PM_SLEEP 170 170 struct iwl_mld_wowlan_data wowlan_data; 171 171 #endif 172 172 #ifdef CONFIG_IWLWIFI_DEBUGFS
+5 -2
drivers/net/wireless/intel/iwlwifi/mld/mac80211.c
··· 475 475 int iwl_mld_mac80211_start(struct ieee80211_hw *hw) 476 476 { 477 477 struct iwl_mld *mld = IWL_MAC80211_GET_MLD(hw); 478 - int ret; 479 478 bool in_d3 = false; 479 + int ret = 0; 480 480 481 481 lockdep_assert_wiphy(mld->wiphy); 482 482 ··· 537 537 /* if the suspend flow fails the fw is in error. Stop it here, and it 538 538 * will be started upon wakeup 539 539 */ 540 - if (!suspend || iwl_mld_no_wowlan_suspend(mld)) 540 + if (!suspend || 541 + (IS_ENABLED(CONFIG_PM_SLEEP) && iwl_mld_no_wowlan_suspend(mld))) 541 542 iwl_mld_stop_fw(mld); 542 543 543 544 /* HW is stopped, no more coming RX. OTOH, the worker can't run as the ··· 1944 1943 } 1945 1944 } 1946 1945 1946 + #ifdef CONFIG_PM_SLEEP 1947 1947 static void iwl_mld_set_wakeup(struct ieee80211_hw *hw, bool enabled) 1948 1948 { 1949 1949 struct iwl_mld *mld = IWL_MAC80211_GET_MLD(hw); ··· 1996 1994 1997 1995 return 0; 1998 1996 } 1997 + #endif 1999 1998 2000 1999 static int iwl_mld_alloc_ptk_pn(struct iwl_mld *mld, 2001 2000 struct iwl_mld_sta *mld_sta,
+7 -1
drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c
··· 147 147 return; 148 148 149 149 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; 151 156 iwl_trans_pcie_fw_reset_handshake(trans); 157 + } 152 158 153 159 trans_pcie->is_down = true; 154 160
+3 -1
drivers/net/wireless/ti/wl1251/tx.c
··· 342 342 while ((skb = skb_dequeue(&wl->tx_queue))) { 343 343 if (!woken_up) { 344 344 ret = wl1251_ps_elp_wakeup(wl); 345 - if (ret < 0) 345 + if (ret < 0) { 346 + skb_queue_head(&wl->tx_queue, skb); 346 347 goto out; 348 + } 347 349 woken_up = true; 348 350 } 349 351
+3
net/mac80211/iface.c
··· 659 659 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) 660 660 ieee80211_txq_remove_vlan(local, sdata); 661 661 662 + if (sdata->vif.txq) 663 + ieee80211_txq_purge(sdata->local, to_txq_info(sdata->vif.txq)); 664 + 662 665 sdata->bss = NULL; 663 666 664 667 if (local->open_count == 0)