diff -Nru backport-iwlwifi-dkms-11510/debian/changelog backport-iwlwifi-dkms-84.11517-git6d876484/debian/changelog --- backport-iwlwifi-dkms-11510/debian/changelog 2023-10-31 14:39:23.000000000 +0800 +++ backport-iwlwifi-dkms-84.11517-git6d876484/debian/changelog 2023-12-19 15:52:19.000000000 +0800 @@ -1,3 +1,11 @@ +backport-iwlwifi-dkms (1:84.11517-git6d876484-0ubuntu1) noble; urgency=low + + [You-Sheng Yang] + * Migrate to upstream core84 release (LP: #2046871) + - add debian epoch for version scheme migration + + -- You-Sheng Yang Tue, 19 Dec 2023 15:52:19 +0800 + backport-iwlwifi-dkms (11510-0ubuntu1) noble; urgency=low [You-Sheng Yang] diff -Nru backport-iwlwifi-dkms-11510/drivers/net/wireless/intel/iwlwifi/fw/img.h backport-iwlwifi-dkms-84.11517-git6d876484/drivers/net/wireless/intel/iwlwifi/fw/img.h --- backport-iwlwifi-dkms-11510/drivers/net/wireless/intel/iwlwifi/fw/img.h 2023-10-04 04:18:43.000000000 +0800 +++ backport-iwlwifi-dkms-84.11517-git6d876484/drivers/net/wireless/intel/iwlwifi/fw/img.h 2023-10-10 22:29:12.000000000 +0800 @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ /* - * Copyright (C) 2005-2014, 2018-2022 Intel Corporation + * Copyright (C) 2005-2014, 2018-2023 Intel Corporation * Copyright (C) 2013-2015 Intel Mobile Communications GmbH * Copyright (C) 2016 Intel Deutschland GmbH */ @@ -198,7 +198,7 @@ struct iwl_fw { u32 ucode_ver; - char fw_version[64]; + char fw_version[128]; /* ucode images */ struct fw_img img[IWL_UCODE_TYPE_MAX]; diff -Nru backport-iwlwifi-dkms-11510/drivers/net/wireless/intel/iwlwifi/mvm/d3.c backport-iwlwifi-dkms-84.11517-git6d876484/drivers/net/wireless/intel/iwlwifi/mvm/d3.c --- backport-iwlwifi-dkms-11510/drivers/net/wireless/intel/iwlwifi/mvm/d3.c 2023-10-04 04:18:43.000000000 +0800 +++ backport-iwlwifi-dkms-84.11517-git6d876484/drivers/net/wireless/intel/iwlwifi/mvm/d3.c 2023-10-10 22:29:12.000000000 +0800 @@ -1130,14 +1130,7 @@ return ret; } - /* - * This needs to be unlocked due to lock ordering - * constraints. Since we're in the suspend path - * that isn't really a problem though. - */ - mutex_unlock(&mvm->mutex); ret = iwl_mvm_wowlan_config_key_params(mvm, vif); - mutex_lock(&mvm->mutex); if (ret) return ret; @@ -2497,7 +2490,7 @@ struct iwl_wowlan_status_data *status) { int i; - bool keep; + bool keep = false; struct iwl_mvm_sta *mvm_ap_sta; if (!status) @@ -2525,18 +2518,12 @@ mvm_ap_sta->tid_data[i].seq_number >> 4); } - /* now we have all the data we need, unlock to avoid mac80211 issues */ - mutex_unlock(&mvm->mutex); - iwl_mvm_report_wakeup_reasons(mvm, vif, status); keep = iwl_mvm_setup_connection_keep(mvm, vif, status); - - return keep; - out_unlock: mutex_unlock(&mvm->mutex); - return false; + return keep; } #define ND_QUERY_BUF_LEN (sizeof(struct iwl_scan_offload_profile_match) * \ diff -Nru backport-iwlwifi-dkms-11510/drivers/net/wireless/intel/iwlwifi/mvm/mld-mac80211.c backport-iwlwifi-dkms-84.11517-git6d876484/drivers/net/wireless/intel/iwlwifi/mvm/mld-mac80211.c --- backport-iwlwifi-dkms-11510/drivers/net/wireless/intel/iwlwifi/mvm/mld-mac80211.c 2023-10-04 04:18:43.000000000 +0800 +++ backport-iwlwifi-dkms-84.11517-git6d876484/drivers/net/wireless/intel/iwlwifi/mvm/mld-mac80211.c 2023-10-10 22:29:12.000000000 +0800 @@ -744,7 +744,7 @@ } } - if (WARN_ON(!new_active_links)) + if (!new_active_links) return; if (vif->active_links != new_active_links) diff -Nru backport-iwlwifi-dkms-11510/drivers/net/wireless/intel/iwlwifi/mvm/tx.c backport-iwlwifi-dkms-84.11517-git6d876484/drivers/net/wireless/intel/iwlwifi/mvm/tx.c --- backport-iwlwifi-dkms-11510/drivers/net/wireless/intel/iwlwifi/mvm/tx.c 2023-10-04 04:18:43.000000000 +0800 +++ backport-iwlwifi-dkms-84.11517-git6d876484/drivers/net/wireless/intel/iwlwifi/mvm/tx.c 2023-10-10 22:29:12.000000000 +0800 @@ -2279,7 +2279,7 @@ WARN_ON(!iwl_mvm_has_new_tx_api(mvm)); if (iwl_fw_lookup_notif_ver(mvm->fw, LONG_GROUP, TXPATH_FLUSH, 0) > 0) - cmd.flags |= CMD_WANT_SKB; + cmd.flags |= CMD_WANT_SKB | CMD_SEND_IN_RFKILL; IWL_DEBUG_TX_QUEUES(mvm, "flush for sta id %d tid mask 0x%x\n", sta_id, tids); diff -Nru backport-iwlwifi-dkms-11510/include/net/mac80211.h backport-iwlwifi-dkms-84.11517-git6d876484/include/net/mac80211.h --- backport-iwlwifi-dkms-11510/include/net/mac80211.h 2023-10-04 04:18:43.000000000 +0800 +++ backport-iwlwifi-dkms-84.11517-git6d876484/include/net/mac80211.h 2023-10-10 22:29:12.000000000 +0800 @@ -5811,12 +5811,11 @@ * ieee80211_remove_key - remove the given key * @keyconf: the parameter passed with the set key * + * Context: Must be called with the wiphy mutex held. + * * Remove the given key. If the key was uploaded to the hardware at the * time this function is called, it is not deleted in the hardware but * instead assumed to have been removed already. - * - * Note that due to locking considerations this function can (currently) - * only be called during key iteration (ieee80211_iter_keys().) */ void ieee80211_remove_key(struct ieee80211_key_conf *keyconf); @@ -6370,12 +6369,12 @@ * @iter: iterator function that will be called for each key * @iter_data: custom data to pass to the iterator function * + * Context: Must be called with wiphy mutex held; can sleep. + * * This function can be used to iterate all the keys known to * mac80211, even those that weren't previously programmed into * the device. This is intended for use in WoWLAN if the device - * needs reprogramming of the keys during suspend. Note that due - * to locking reasons, it is also only safe to call this at few - * spots since it must hold the RTNL and be able to sleep. + * needs reprogramming of the keys during suspend. * * The order in which the keys are iterated matches the order * in which they were originally installed and handed to the @@ -7436,6 +7435,9 @@ * @vif: interface to set active links on * @active_links: the new active links bitmap * + * Context: Must be called with wiphy mutex held; may sleep; calls + * back into the driver. + * * This changes the active links on an interface. The interface * must be in client mode (in AP mode, all links are always active), * and @active_links must be a subset of the vif's valid_links. @@ -7443,6 +7445,7 @@ * If a link is switched off and another is switched on at the same * time (e.g. active_links going from 0x1 to 0x10) then you will get * a sequence of calls like + * * - change_vif_links(0x11) * - unassign_vif_chanctx(link_id=0) * - change_sta_links(0x11) for each affected STA (the AP) @@ -7452,10 +7455,6 @@ * - change_sta_links(0x10) for each affected STA (the AP) * - assign_vif_chanctx(link_id=4) * - change_vif_links(0x10) - * - * Note: This function acquires some mac80211 locks and must not - * be called with any driver locks held that could cause a - * lock dependency inversion. Best call it without locks. */ int ieee80211_set_active_links(struct ieee80211_vif *vif, u16 active_links); diff -Nru backport-iwlwifi-dkms-11510/net/mac80211/agg-tx.c backport-iwlwifi-dkms-84.11517-git6d876484/net/mac80211/agg-tx.c --- backport-iwlwifi-dkms-11510/net/mac80211/agg-tx.c 2023-10-04 04:18:43.000000000 +0800 +++ backport-iwlwifi-dkms-84.11517-git6d876484/net/mac80211/agg-tx.c 2023-10-10 22:29:12.000000000 +0800 @@ -507,7 +507,7 @@ { struct tid_ampdu_tx *tid_tx; struct ieee80211_local *local = sta->local; - struct ieee80211_sub_if_data *sdata; + struct ieee80211_sub_if_data *sdata = sta->sdata; struct ieee80211_ampdu_params params = { .sta = &sta->sta, .action = IEEE80211_AMPDU_TX_START, @@ -535,7 +535,6 @@ */ synchronize_net(); - sdata = sta->sdata; params.ssn = sta->tid_seq[tid] >> 4; ret = drv_ampdu_action(local, sdata, ¶ms); tid_tx->ssn = params.ssn; @@ -549,9 +548,6 @@ */ set_bit(HT_AGG_STATE_DRV_READY, &tid_tx->state); } else if (ret) { - if (!sdata) - return; - ht_dbg(sdata, "BA request denied - HW unavailable for %pM tid %d\n", sta->sta.addr, tid); diff -Nru backport-iwlwifi-dkms-11510/net/mac80211/driver-ops.c backport-iwlwifi-dkms-84.11517-git6d876484/net/mac80211/driver-ops.c --- backport-iwlwifi-dkms-11510/net/mac80211/driver-ops.c 2023-10-04 04:18:43.000000000 +0800 +++ backport-iwlwifi-dkms-84.11517-git6d876484/net/mac80211/driver-ops.c 2023-10-10 22:29:12.000000000 +0800 @@ -417,9 +417,6 @@ might_sleep(); lockdep_assert_wiphy(local->hw.wiphy); - if (!sdata) - return -EIO; - sdata = get_bss_sdata(sdata); if (!check_sdata_in_driver(sdata)) return -EIO; diff -Nru backport-iwlwifi-dkms-11510/net/mac80211/ieee80211_i.h backport-iwlwifi-dkms-84.11517-git6d876484/net/mac80211/ieee80211_i.h --- backport-iwlwifi-dkms-11510/net/mac80211/ieee80211_i.h 2023-10-04 04:18:43.000000000 +0800 +++ backport-iwlwifi-dkms-84.11517-git6d876484/net/mac80211/ieee80211_i.h 2023-10-10 22:29:12.000000000 +0800 @@ -2647,7 +2647,7 @@ struct link_sta_info *link_sta); #if IS_ENABLED(CPTCFG_MAC80211_KUNIT_TEST) -#define EXPORT_SYMBOL_IF_MAC80211_KUNIT(sym) EXPORT_SYMBOL(sym) +#define EXPORT_SYMBOL_IF_MAC80211_KUNIT(sym) EXPORT_SYMBOL_IF_KUNIT(sym) #define VISIBLE_IF_MAC80211_KUNIT ieee80211_rx_result ieee80211_drop_unencrypted_mgmt(struct ieee80211_rx_data *rx); #else diff -Nru backport-iwlwifi-dkms-11510/net/mac80211/sta_info.c backport-iwlwifi-dkms-84.11517-git6d876484/net/mac80211/sta_info.c --- backport-iwlwifi-dkms-11510/net/mac80211/sta_info.c 2023-10-04 04:18:43.000000000 +0800 +++ backport-iwlwifi-dkms-84.11517-git6d876484/net/mac80211/sta_info.c 2023-10-10 22:29:12.000000000 +0800 @@ -1414,6 +1414,20 @@ * after _part1 and before _part2! */ + /* + * There's a potential race in _part1 where we set WLAN_STA_BLOCK_BA + * but someone might have just gotten past a check, and not yet into + * queuing the work/creating the data/etc. + * + * Do another round of destruction so that the worker is certainly + * canceled before we later free the station. + * + * Since this is after synchronize_rcu()/synchronize_net() we're now + * certain that nobody can actually hold a reference to the STA and + * be calling e.g. ieee80211_start_tx_ba_session(). + */ + ieee80211_sta_tear_down_BA_sessions(sta, AGG_STOP_DESTROY_STA); + might_sleep(); lockdep_assert_wiphy(local->hw.wiphy); diff -Nru backport-iwlwifi-dkms-11510/versions backport-iwlwifi-dkms-84.11517-git6d876484/versions --- backport-iwlwifi-dkms-11510/versions 2023-10-04 04:18:43.000000000 +0800 +++ backport-iwlwifi-dkms-84.11517-git6d876484/versions 2023-10-10 22:29:12.000000000 +0800 @@ -2,4 +2,4 @@ BACKPORTED_KERNEL_VERSION="(see git)" BACKPORTED_KERNEL_NAME="iwlwifi" BACKPORTS_BUILD_TSTAMP=__DATE__ \" \" __TIME__ -BACKPORTS_GIT_TRACKED="iwlwifi-stack-public:master:11510:0106cce5" +BACKPORTS_GIT_TRACKED="iwlwifi-stack-public:master:11517:9e6823c8"