* [PATCH 00/12] iwlwifi: updates intended for v5.15 2021-08-02 part 2 @ 2021-08-02 14:28 Luca Coelho 2021-08-02 14:28 ` [PATCH 01/12] iwlwifi: mvm: remove trigger EAPOL time event Luca Coelho ` (11 more replies) 0 siblings, 12 replies; 14+ messages in thread From: Luca Coelho @ 2021-08-02 14:28 UTC (permalink / raw) To: kvalo; +Cc: luca, linux-wireless From: Luca Coelho <luciano.coelho@intel.com> Hi, Here's the second set of patches intended for v5.15. It's the usual development, new features, cleanups and bugfixes. The changes are: * A bunch of janitorial clean-ups; * Clean-ups in the TX code; * Small fix for SMPS; * Some other small fixes, clean-ups and improvements. As usual, I'm pushing this to a pending branch, for kbuild bot, and will send a pull-request later. Please review. Cheers, Luca. Johannes Berg (5): iwlwifi: mvm: set replay counter on key install iwlwifi: mvm: restrict FW SMPS request iwlwifi: mvm: avoid static queue number aliasing iwlwifi: mvm: clean up number of HW queues iwlwifi: mvm: treat MMPDUs in iwl_mvm_mac_tx() as bcast Luca Coelho (2): iwlwifi: pcie: remove spaces from queue names iwlwifi: mvm: remove check for vif in iwl_mvm_vif_from_mac80211() Mordechay Goodstein (1): iwlwifi: mvm: remove trigger EAPOL time event Tom Rix (1): iwlwifi: remove trailing semicolon in macro definition Wei Yongjun (1): iwlwifi: mvm: fix old-style static const declaration Zhang Qilong (1): iwlwifi: mvm: fix a memory leak in iwl_mvm_mac_ctxt_beacon_changed Zheng Yongjun (1): iwlwifi: use DEFINE_MUTEX() for mutex lock drivers/net/wireless/intel/iwlwifi/dvm/rx.c | 2 +- .../net/wireless/intel/iwlwifi/fw/api/coex.h | 2 +- drivers/net/wireless/intel/iwlwifi/iwl-drv.c | 4 +- .../net/wireless/intel/iwlwifi/mvm/mac-ctxt.c | 4 +- .../net/wireless/intel/iwlwifi/mvm/mac80211.c | 27 +++--- drivers/net/wireless/intel/iwlwifi/mvm/mvm.h | 2 - drivers/net/wireless/intel/iwlwifi/mvm/ops.c | 35 ++++++-- drivers/net/wireless/intel/iwlwifi/mvm/rfi.c | 2 +- drivers/net/wireless/intel/iwlwifi/mvm/sta.c | 83 ++++++++++++++++--- .../wireless/intel/iwlwifi/pcie/internal.h | 10 +-- 10 files changed, 121 insertions(+), 50 deletions(-) -- 2.32.0 ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH 01/12] iwlwifi: mvm: remove trigger EAPOL time event 2021-08-02 14:28 [PATCH 00/12] iwlwifi: updates intended for v5.15 2021-08-02 part 2 Luca Coelho @ 2021-08-02 14:28 ` Luca Coelho 2021-08-26 20:33 ` Luca Coelho 2021-08-02 14:28 ` [PATCH 02/12] iwlwifi: mvm: set replay counter on key install Luca Coelho ` (10 subsequent siblings) 11 siblings, 1 reply; 14+ messages in thread From: Luca Coelho @ 2021-08-02 14:28 UTC (permalink / raw) To: kvalo; +Cc: luca, linux-wireless From: Mordechay Goodstein <mordechay.goodstein@intel.com> EAPOL failure results in deauthentication with various reasons, not related to AUTH failure specifically, so we just merge AUTH failure with failed to assoc to AP. Signed-off-by: Mordechay Goodstein <mordechay.goodstein@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> --- drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c index 70ebecb73c24..3a7f756c4545 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c @@ -5035,22 +5035,14 @@ static void iwl_mvm_event_mlme_callback_ini(struct iwl_mvm *mvm, struct ieee80211_vif *vif, const struct ieee80211_mlme_event *mlme) { - if (mlme->data == ASSOC_EVENT && (mlme->status == MLME_DENIED || - mlme->status == MLME_TIMEOUT)) { + if ((mlme->data == ASSOC_EVENT || mlme->data == AUTH_EVENT) && + (mlme->status == MLME_DENIED || mlme->status == MLME_TIMEOUT)) { iwl_dbg_tlv_time_point(&mvm->fwrt, IWL_FW_INI_TIME_POINT_ASSOC_FAILED, NULL); return; } - if (mlme->data == AUTH_EVENT && (mlme->status == MLME_DENIED || - mlme->status == MLME_TIMEOUT)) { - iwl_dbg_tlv_time_point(&mvm->fwrt, - IWL_FW_INI_TIME_POINT_EAPOL_FAILED, - NULL); - return; - } - if (mlme->data == DEAUTH_RX_EVENT || mlme->data == DEAUTH_TX_EVENT) { iwl_dbg_tlv_time_point(&mvm->fwrt, IWL_FW_INI_TIME_POINT_DEASSOC, -- 2.32.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 01/12] iwlwifi: mvm: remove trigger EAPOL time event 2021-08-02 14:28 ` [PATCH 01/12] iwlwifi: mvm: remove trigger EAPOL time event Luca Coelho @ 2021-08-26 20:33 ` Luca Coelho 0 siblings, 0 replies; 14+ messages in thread From: Luca Coelho @ 2021-08-26 20:33 UTC (permalink / raw) To: Luca Coelho; +Cc: kvalo, linux-wireless Luca Coelho <luca@coelho.fi> wrote: > From: Mordechay Goodstein <mordechay.goodstein@intel.com> > > EAPOL failure results in deauthentication with various reasons, not > related to AUTH failure specifically, so we just merge AUTH failure > with failed to assoc to AP. > > Signed-off-by: Mordechay Goodstein <mordechay.goodstein@intel.com> > Signed-off-by: Luca Coelho <luciano.coelho@intel.com> 12 patches applied to iwlwifi-next.git, thanks. 1a81bddf7f47 iwlwifi: mvm: remove trigger EAPOL time event a6dfbd040e26 iwlwifi: mvm: set replay counter on key install de34d1c1d30d iwlwifi: mvm: restrict FW SMPS request 02289645a085 iwlwifi: pcie: remove spaces from queue names c1868c0b7889 iwlwifi: mvm: remove check for vif in iwl_mvm_vif_from_mac80211() cd7ae5493448 iwlwifi: mvm: fix old-style static const declaration 0f5d44ac6e55 iwlwifi: mvm: fix a memory leak in iwl_mvm_mac_ctxt_beacon_changed 2b06127df02f iwlwifi: remove trailing semicolon in macro definition 5993c90ccb56 iwlwifi: use DEFINE_MUTEX() for mutex lock c6ce1c74ef29 iwlwifi: mvm: avoid static queue number aliasing 366fc672d625 iwlwifi: mvm: clean up number of HW queues 105167830d5f iwlwifi: mvm: treat MMPDUs in iwl_mvm_mac_tx() as bcast ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH 02/12] iwlwifi: mvm: set replay counter on key install 2021-08-02 14:28 [PATCH 00/12] iwlwifi: updates intended for v5.15 2021-08-02 part 2 Luca Coelho 2021-08-02 14:28 ` [PATCH 01/12] iwlwifi: mvm: remove trigger EAPOL time event Luca Coelho @ 2021-08-02 14:28 ` Luca Coelho 2021-08-02 14:28 ` [PATCH 03/12] iwlwifi: mvm: restrict FW SMPS request Luca Coelho ` (9 subsequent siblings) 11 siblings, 0 replies; 14+ messages in thread From: Luca Coelho @ 2021-08-02 14:28 UTC (permalink / raw) To: kvalo; +Cc: luca, linux-wireless From: Johannes Berg <johannes.berg@intel.com> When installing a (new) key, set the replay counter so that after FW restart the firmware has the correct value of the replay counters. This doesn't have a large effect - for frames that reach the driver, it will do a replay check, and when installing a new key, the counter is normally zero to start with (not for GTK though, if joining the BSS for the first time). Since this only affects frames handled entirely by the FW, and that's restricted to a few unicast management frames, the only affect here is for those after a firmware restart. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> --- drivers/net/wireless/intel/iwlwifi/mvm/sta.c | 53 ++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/sta.c b/drivers/net/wireless/intel/iwlwifi/mvm/sta.c index 9c45a64c5009..0ec84d8ff9e6 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/sta.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/sta.c @@ -3190,6 +3190,20 @@ static struct iwl_mvm_sta *iwl_mvm_get_key_sta(struct iwl_mvm *mvm, return NULL; } +static int iwl_mvm_pn_cmp(const u8 *pn1, const u8 *pn2, int len) +{ + int i; + + for (i = len - 1; i >= 0; i--) { + if (pn1[i] > pn2[i]) + return 1; + if (pn1[i] < pn2[i]) + return -1; + } + + return 0; +} + static int iwl_mvm_send_sta_key(struct iwl_mvm *mvm, u32 sta_id, struct ieee80211_key_conf *key, bool mcast, @@ -3274,6 +3288,45 @@ static int iwl_mvm_send_sta_key(struct iwl_mvm *mvm, u.cmd.common.key_flags = key_flags; u.cmd.common.sta_id = sta_id; + if (key->cipher == WLAN_CIPHER_SUITE_TKIP) + i = 0; + else + i = -1; + + for (; i < IEEE80211_NUM_TIDS; i++) { + struct ieee80211_key_seq seq = {}; + u8 _rx_pn[IEEE80211_MAX_PN_LEN] = {}, *rx_pn = _rx_pn; + int rx_pn_len = 8; + + ieee80211_get_key_rx_seq(key, i, &seq); + + if (key->cipher == WLAN_CIPHER_SUITE_TKIP) { + rx_pn[0] = seq.tkip.iv16; + rx_pn[1] = seq.tkip.iv16 >> 8; + /* hole at 2/3 in FW format */ + rx_pn[4] = seq.tkip.iv32; + rx_pn[5] = seq.tkip.iv32 >> 8; + rx_pn[6] = seq.tkip.iv32 >> 16; + rx_pn[7] = seq.tkip.iv32 >> 24; + } else if (key_flags & cpu_to_le16(STA_KEY_FLG_EXT)) { + rx_pn = seq.hw.seq; + rx_pn_len = seq.hw.seq_len; + } else { + rx_pn[0] = seq.ccmp.pn[0]; + rx_pn[1] = seq.ccmp.pn[1]; + /* hole at 2/3 in FW format */ + rx_pn[4] = seq.ccmp.pn[2]; + rx_pn[5] = seq.ccmp.pn[3]; + rx_pn[6] = seq.ccmp.pn[4]; + rx_pn[7] = seq.ccmp.pn[5]; + } + + if (iwl_mvm_pn_cmp(rx_pn, (u8 *)&u.cmd.common.rx_secur_seq_cnt, + rx_pn_len) > 0) + memcpy(&u.cmd.common.rx_secur_seq_cnt, rx_pn, + rx_pn_len); + } + if (new_api) { u.cmd.transmit_seq_cnt = cpu_to_le64(pn); size = sizeof(u.cmd); -- 2.32.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 03/12] iwlwifi: mvm: restrict FW SMPS request 2021-08-02 14:28 [PATCH 00/12] iwlwifi: updates intended for v5.15 2021-08-02 part 2 Luca Coelho 2021-08-02 14:28 ` [PATCH 01/12] iwlwifi: mvm: remove trigger EAPOL time event Luca Coelho 2021-08-02 14:28 ` [PATCH 02/12] iwlwifi: mvm: set replay counter on key install Luca Coelho @ 2021-08-02 14:28 ` Luca Coelho 2021-08-02 14:28 ` [PATCH 04/12] iwlwifi: pcie: remove spaces from queue names Luca Coelho ` (8 subsequent siblings) 11 siblings, 0 replies; 14+ messages in thread From: Luca Coelho @ 2021-08-02 14:28 UTC (permalink / raw) To: kvalo; +Cc: luca, linux-wireless From: Johannes Berg <johannes.berg@intel.com> The firmware SMPS request should only be honoured if the connection is currently with HE and on 160 MHz, so check that and then potentially reapply any request if the BW changes. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> --- drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 3 +++ drivers/net/wireless/intel/iwlwifi/mvm/ops.c | 11 +++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c index 3a7f756c4545..b2072e19b5dc 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c @@ -2440,6 +2440,9 @@ static void iwl_mvm_bss_info_changed_station(struct iwl_mvm *mvm, IWL_DEBUG_MAC80211(mvm, "arp filter changed\n"); iwl_mvm_configure_bcast_filter(mvm); } + + if (changes & BSS_CHANGED_BANDWIDTH) + iwl_mvm_apply_fw_smps_request(vif); } static int iwl_mvm_start_ap_ibss(struct ieee80211_hw *hw, diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c index 880cf2042531..564ccfbd15bd 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c @@ -214,11 +214,14 @@ void iwl_mvm_apply_fw_smps_request(struct ieee80211_vif *vif) { struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); struct iwl_mvm *mvm = mvmvif->mvm; + enum ieee80211_smps_mode mode = IEEE80211_SMPS_AUTOMATIC; - iwl_mvm_update_smps(mvm, vif, IWL_MVM_SMPS_REQ_FW, - mvm->fw_static_smps_request ? - IEEE80211_SMPS_STATIC : - IEEE80211_SMPS_AUTOMATIC); + if (mvm->fw_static_smps_request && + vif->bss_conf.chandef.width == NL80211_CHAN_WIDTH_160 && + vif->bss_conf.he_support) + mode = IEEE80211_SMPS_STATIC; + + iwl_mvm_update_smps(mvm, vif, IWL_MVM_SMPS_REQ_FW, mode); } static void iwl_mvm_intf_dual_chain_req(void *data, u8 *mac, -- 2.32.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 04/12] iwlwifi: pcie: remove spaces from queue names 2021-08-02 14:28 [PATCH 00/12] iwlwifi: updates intended for v5.15 2021-08-02 part 2 Luca Coelho ` (2 preceding siblings ...) 2021-08-02 14:28 ` [PATCH 03/12] iwlwifi: mvm: restrict FW SMPS request Luca Coelho @ 2021-08-02 14:28 ` Luca Coelho 2021-08-02 14:28 ` [PATCH 05/12] iwlwifi: mvm: remove check for vif in iwl_mvm_vif_from_mac80211() Luca Coelho ` (7 subsequent siblings) 11 siblings, 0 replies; 14+ messages in thread From: Luca Coelho @ 2021-08-02 14:28 UTC (permalink / raw) To: kvalo; +Cc: luca, linux-wireless From: Luca Coelho <luciano.coelho@intel.com> If we use spaces in the queue names, we get files with spaces in their name in procfs, which is ugly. Remove the spaces. Reported-by: Joe Perches <joe@perches.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> --- drivers/net/wireless/intel/iwlwifi/pcie/internal.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/internal.h b/drivers/net/wireless/intel/iwlwifi/pcie/internal.h index 6c3b0403b68f..a43e56c7689f 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/internal.h +++ b/drivers/net/wireless/intel/iwlwifi/pcie/internal.h @@ -678,19 +678,19 @@ static inline const char *queue_name(struct device *dev, IWL_SHARED_IRQ_FIRST_RSS ? 1 : 0; if (i == 0) - return DRV_NAME ": shared IRQ"; + return DRV_NAME ":shared_IRQ"; return devm_kasprintf(dev, GFP_KERNEL, - DRV_NAME ": queue %d", i + vec); + DRV_NAME ":queue_%d", i + vec); } if (i == 0) - return DRV_NAME ": default queue"; + return DRV_NAME ":default_queue"; if (i == trans_p->alloc_vecs - 1) - return DRV_NAME ": exception"; + return DRV_NAME ":exception"; return devm_kasprintf(dev, GFP_KERNEL, - DRV_NAME ": queue %d", i); + DRV_NAME ":queue_%d", i); } static inline void iwl_enable_rfkill_int(struct iwl_trans *trans) -- 2.32.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 05/12] iwlwifi: mvm: remove check for vif in iwl_mvm_vif_from_mac80211() 2021-08-02 14:28 [PATCH 00/12] iwlwifi: updates intended for v5.15 2021-08-02 part 2 Luca Coelho ` (3 preceding siblings ...) 2021-08-02 14:28 ` [PATCH 04/12] iwlwifi: pcie: remove spaces from queue names Luca Coelho @ 2021-08-02 14:28 ` Luca Coelho 2021-08-02 14:28 ` [PATCH 06/12] iwlwifi: mvm: fix old-style static const declaration Luca Coelho ` (6 subsequent siblings) 11 siblings, 0 replies; 14+ messages in thread From: Luca Coelho @ 2021-08-02 14:28 UTC (permalink / raw) To: kvalo; +Cc: luca, linux-wireless From: Luca Coelho <luciano.coelho@intel.com> This check is useless, because we would return NULL in that case and none of the callers actually check that the return value was not NULL before accessing it. Signed-off-by: Luca Coelho <luciano.coelho@intel.com> --- drivers/net/wireless/intel/iwlwifi/mvm/mvm.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h index b50942f28bb7..82a53cbf4342 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h @@ -431,8 +431,6 @@ struct iwl_mvm_vif { static inline struct iwl_mvm_vif * iwl_mvm_vif_from_mac80211(struct ieee80211_vif *vif) { - if (!vif) - return NULL; return (void *)vif->drv_priv; } -- 2.32.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 06/12] iwlwifi: mvm: fix old-style static const declaration 2021-08-02 14:28 [PATCH 00/12] iwlwifi: updates intended for v5.15 2021-08-02 part 2 Luca Coelho ` (4 preceding siblings ...) 2021-08-02 14:28 ` [PATCH 05/12] iwlwifi: mvm: remove check for vif in iwl_mvm_vif_from_mac80211() Luca Coelho @ 2021-08-02 14:28 ` Luca Coelho 2021-08-02 14:28 ` [PATCH 07/12] iwlwifi: mvm: fix a memory leak in iwl_mvm_mac_ctxt_beacon_changed Luca Coelho ` (5 subsequent siblings) 11 siblings, 0 replies; 14+ messages in thread From: Luca Coelho @ 2021-08-02 14:28 UTC (permalink / raw) To: kvalo; +Cc: luca, linux-wireless From: Wei Yongjun <weiyongjun1@huawei.com> GCC reports warning as follows: drivers/net/wireless/intel/iwlwifi/mvm/rfi.c:14:1: warning: 'static' is not at beginning of declaration [-Wold-style-declaration] 14 | const static struct iwl_rfi_lut_entry iwl_rfi_table[IWL_RFI_LUT_SIZE] = { | ^~~~~ Move static to the beginning of declaration. Fixes: 21254908cbe9 ("iwlwifi: mvm: add RFI-M support") Reported-by: Hulk Robot <hulkci@huawei.com> Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> --- drivers/net/wireless/intel/iwlwifi/mvm/rfi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rfi.c b/drivers/net/wireless/intel/iwlwifi/mvm/rfi.c index 0b818067067c..44344216a1a9 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/rfi.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/rfi.c @@ -11,7 +11,7 @@ * DDR needs frequency in units of 16.666MHz, so provide FW with the * frequency values in the adjusted format. */ -const static struct iwl_rfi_lut_entry iwl_rfi_table[IWL_RFI_LUT_SIZE] = { +static const struct iwl_rfi_lut_entry iwl_rfi_table[IWL_RFI_LUT_SIZE] = { /* LPDDR4 */ /* frequency 3733MHz */ -- 2.32.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 07/12] iwlwifi: mvm: fix a memory leak in iwl_mvm_mac_ctxt_beacon_changed 2021-08-02 14:28 [PATCH 00/12] iwlwifi: updates intended for v5.15 2021-08-02 part 2 Luca Coelho ` (5 preceding siblings ...) 2021-08-02 14:28 ` [PATCH 06/12] iwlwifi: mvm: fix old-style static const declaration Luca Coelho @ 2021-08-02 14:28 ` Luca Coelho 2021-08-02 14:28 ` [PATCH 08/12] iwlwifi: remove trailing semicolon in macro definition Luca Coelho ` (4 subsequent siblings) 11 siblings, 0 replies; 14+ messages in thread From: Luca Coelho @ 2021-08-02 14:28 UTC (permalink / raw) To: kvalo; +Cc: luca, linux-wireless From: Zhang Qilong <zhangqilong3@huawei.com> If beacon_inject_active is true, we will return without freeing beacon. Fid that by freeing it before returning. Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com> [reworded the commit message] Signed-off-by: Luca Coelho <luciano.coelho@intel.com> --- drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c index 76a658cb5493..2fbc1a3bbdca 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c @@ -1008,8 +1008,10 @@ int iwl_mvm_mac_ctxt_beacon_changed(struct iwl_mvm *mvm, return -ENOMEM; #ifdef CONFIG_IWLWIFI_DEBUGFS - if (mvm->beacon_inject_active) + if (mvm->beacon_inject_active) { + dev_kfree_skb(beacon); return -EBUSY; + } #endif ret = iwl_mvm_mac_ctxt_send_beacon(mvm, vif, beacon); -- 2.32.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 08/12] iwlwifi: remove trailing semicolon in macro definition 2021-08-02 14:28 [PATCH 00/12] iwlwifi: updates intended for v5.15 2021-08-02 part 2 Luca Coelho ` (6 preceding siblings ...) 2021-08-02 14:28 ` [PATCH 07/12] iwlwifi: mvm: fix a memory leak in iwl_mvm_mac_ctxt_beacon_changed Luca Coelho @ 2021-08-02 14:28 ` Luca Coelho 2021-08-02 14:28 ` [PATCH 09/12] iwlwifi: use DEFINE_MUTEX() for mutex lock Luca Coelho ` (3 subsequent siblings) 11 siblings, 0 replies; 14+ messages in thread From: Luca Coelho @ 2021-08-02 14:28 UTC (permalink / raw) To: kvalo; +Cc: luca, linux-wireless From: Tom Rix <trix@redhat.com> The macro use will already have a semicolon. Signed-off-by: Tom Rix <trix@redhat.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> --- drivers/net/wireless/intel/iwlwifi/dvm/rx.c | 2 +- drivers/net/wireless/intel/iwlwifi/fw/api/coex.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/rx.c b/drivers/net/wireless/intel/iwlwifi/dvm/rx.c index 80475c7a6fba..3cd7b423c588 100644 --- a/drivers/net/wireless/intel/iwlwifi/dvm/rx.c +++ b/drivers/net/wireless/intel/iwlwifi/dvm/rx.c @@ -318,7 +318,7 @@ iwlagn_accumulative_statistics(struct iwl_priv *priv, (__le32 *)&priv->delta_stats._name, \ (__le32 *)&priv->max_delta_stats._name, \ (__le32 *)&priv->accum_stats._name, \ - sizeof(*_name)); + sizeof(*_name)) ACCUM(common); ACCUM(rx_non_phy); diff --git a/drivers/net/wireless/intel/iwlwifi/fw/api/coex.h b/drivers/net/wireless/intel/iwlwifi/fw/api/coex.h index 01580c9175f3..3e81e9369224 100644 --- a/drivers/net/wireless/intel/iwlwifi/fw/api/coex.h +++ b/drivers/net/wireless/intel/iwlwifi/fw/api/coex.h @@ -142,7 +142,7 @@ enum iwl_bt_mxbox_dw3 { "\t%s: %d%s", \ #_field, \ BT_MBOX_MSG(notif, _num, _field), \ - true ? "\n" : ", "); + true ? "\n" : ", ") enum iwl_bt_activity_grading { BT_OFF = 0, BT_ON_NO_CONNECTION = 1, -- 2.32.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 09/12] iwlwifi: use DEFINE_MUTEX() for mutex lock 2021-08-02 14:28 [PATCH 00/12] iwlwifi: updates intended for v5.15 2021-08-02 part 2 Luca Coelho ` (7 preceding siblings ...) 2021-08-02 14:28 ` [PATCH 08/12] iwlwifi: remove trailing semicolon in macro definition Luca Coelho @ 2021-08-02 14:28 ` Luca Coelho 2021-08-02 14:28 ` [PATCH 10/12] iwlwifi: mvm: avoid static queue number aliasing Luca Coelho ` (2 subsequent siblings) 11 siblings, 0 replies; 14+ messages in thread From: Luca Coelho @ 2021-08-02 14:28 UTC (permalink / raw) To: kvalo; +Cc: luca, linux-wireless From: Zheng Yongjun <zhengyongjun3@huawei.com> mutex lock can be initialized automatically with DEFINE_MUTEX() rather than explicitly calling mutex_init(). Signed-off-by: Zheng Yongjun <zhengyongjun3@huawei.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> --- drivers/net/wireless/intel/iwlwifi/iwl-drv.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c index 977dce686bdb..77124b8b235e 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c +++ b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c @@ -78,7 +78,7 @@ enum { }; /* Protects the table contents, i.e. the ops pointer & drv list */ -static struct mutex iwlwifi_opmode_table_mtx; +static DEFINE_MUTEX(iwlwifi_opmode_table_mtx); static struct iwlwifi_opmode_table { const char *name; /* name: iwldvm, iwlmvm, etc */ const struct iwl_op_mode_ops *ops; /* pointer to op_mode ops */ @@ -1754,8 +1754,6 @@ static int __init iwl_drv_init(void) { int i, err; - mutex_init(&iwlwifi_opmode_table_mtx); - for (i = 0; i < ARRAY_SIZE(iwlwifi_opmode_table); i++) INIT_LIST_HEAD(&iwlwifi_opmode_table[i].drv); -- 2.32.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 10/12] iwlwifi: mvm: avoid static queue number aliasing 2021-08-02 14:28 [PATCH 00/12] iwlwifi: updates intended for v5.15 2021-08-02 part 2 Luca Coelho ` (8 preceding siblings ...) 2021-08-02 14:28 ` [PATCH 09/12] iwlwifi: use DEFINE_MUTEX() for mutex lock Luca Coelho @ 2021-08-02 14:28 ` Luca Coelho 2021-08-02 14:28 ` [PATCH 11/12] iwlwifi: mvm: clean up number of HW queues Luca Coelho 2021-08-02 14:28 ` [PATCH 12/12] iwlwifi: mvm: treat MMPDUs in iwl_mvm_mac_tx() as bcast Luca Coelho 11 siblings, 0 replies; 14+ messages in thread From: Luca Coelho @ 2021-08-02 14:28 UTC (permalink / raw) To: kvalo; +Cc: luca, linux-wireless From: Johannes Berg <johannes.berg@intel.com> When TVQM is enabled (iwl_mvm_has_new_tx_api() is true), then queue numbers are just sequentially assigned 0, 1, 2, ... Prior to TVQM, in DQA, there were some statically allocated queue numbers: * IWL_MVM_DQA_AUX_QUEUE == 1, * both IWL_MVM_DQA_INJECT_MONITOR_QUEUE and IWL_MVM_DQA_P2P_DEVICE_QUEUE == 2, and * IWL_MVM_DQA_AP_PROBE_RESP_QUEUE == 9. Now, these values are assigned to the members mvm->aux_queue, mvm->snif_queue, mvm->probe_queue and mvm->p2p_dev_queue by default. Normally, this doesn't really matter, and if TVQM is in fact available we override them to the real values after allocating a queue for use there. However, this allocation doesn't always happen. For example, for mvm->p2p_dev_queue (== 2) it only happens when the P2P Device interface is started, if any. If it's not started, the value in mvm->p2p_dev_queue remains 2. This wouldn't really matter all that much if it weren't for iwl_mvm_is_static_queue() which checks a queue number against one of those four static numbers. Now, if no P2P Device or monitor interface is added then queue 2 may be dynamically allocated, yet alias mvm->p2p_dev_queue or mvm->snif_queue, and thus iwl_mvm_is_static_queue() erroneously returns true for it. If it then gets full, all interface queues are stopped, instead of just backpressuring against the one TXQ that's really the only affected one. This clearly can lead to issues, as everything is stopped even if just a single TXQ filled its corresponding HW queue, if it happens to have an appropriate number (2 or 9, AUX is always reassigned.) Due to a mac80211 bug, this also led to a situation in which the queues remained stopped across a deauthentication and then attempts to connect to a new AP started failing, but that's fixed separately. Fix all of this by simply initializing the queue numbers to the invalid value until they're used, if TVQM is enabled, and also setting them back to that value when the queues are later freed again. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> --- drivers/net/wireless/intel/iwlwifi/mvm/ops.c | 24 +++++++++++++--- drivers/net/wireless/intel/iwlwifi/mvm/sta.c | 30 ++++++++++++-------- 2 files changed, 38 insertions(+), 16 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c index 564ccfbd15bd..f1aa31150318 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c @@ -795,10 +795,26 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg, mvm->fw_restart = iwlwifi_mod_params.fw_restart ? -1 : 0; - mvm->aux_queue = IWL_MVM_DQA_AUX_QUEUE; - mvm->snif_queue = IWL_MVM_DQA_INJECT_MONITOR_QUEUE; - mvm->probe_queue = IWL_MVM_DQA_AP_PROBE_RESP_QUEUE; - mvm->p2p_dev_queue = IWL_MVM_DQA_P2P_DEVICE_QUEUE; + if (iwl_mvm_has_new_tx_api(mvm)) { + /* + * If we have the new TX/queue allocation API initialize them + * all to invalid numbers. We'll rewrite the ones that we need + * later, but that doesn't happen for all of them all of the + * time (e.g. P2P Device is optional), and if a dynamic queue + * ends up getting number 2 (IWL_MVM_DQA_P2P_DEVICE_QUEUE) then + * iwl_mvm_is_static_queue() erroneously returns true, and we + * might have things getting stuck. + */ + mvm->aux_queue = IWL_MVM_INVALID_QUEUE; + mvm->snif_queue = IWL_MVM_INVALID_QUEUE; + mvm->probe_queue = IWL_MVM_INVALID_QUEUE; + mvm->p2p_dev_queue = IWL_MVM_INVALID_QUEUE; + } else { + mvm->aux_queue = IWL_MVM_DQA_AUX_QUEUE; + mvm->snif_queue = IWL_MVM_DQA_INJECT_MONITOR_QUEUE; + mvm->probe_queue = IWL_MVM_DQA_AP_PROBE_RESP_QUEUE; + mvm->p2p_dev_queue = IWL_MVM_DQA_P2P_DEVICE_QUEUE; + } mvm->sf_state = SF_UNINIT; if (iwl_mvm_has_unified_ucode(mvm)) diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/sta.c b/drivers/net/wireless/intel/iwlwifi/mvm/sta.c index 0ec84d8ff9e6..84953d7e5f09 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/sta.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/sta.c @@ -316,8 +316,9 @@ static int iwl_mvm_invalidate_sta_queue(struct iwl_mvm *mvm, int queue, } static int iwl_mvm_disable_txq(struct iwl_mvm *mvm, struct ieee80211_sta *sta, - int queue, u8 tid, u8 flags) + u16 *queueptr, u8 tid, u8 flags) { + int queue = *queueptr; struct iwl_scd_txq_cfg_cmd cmd = { .scd_queue = queue, .action = SCD_CFG_DISABLE_QUEUE, @@ -326,6 +327,7 @@ static int iwl_mvm_disable_txq(struct iwl_mvm *mvm, struct ieee80211_sta *sta, if (iwl_mvm_has_new_tx_api(mvm)) { iwl_trans_txq_free(mvm->trans, queue); + *queueptr = IWL_MVM_INVALID_QUEUE; return 0; } @@ -487,6 +489,7 @@ static int iwl_mvm_free_inactive_queue(struct iwl_mvm *mvm, int queue, u8 sta_id, tid; unsigned long disable_agg_tids = 0; bool same_sta; + u16 queue_tmp = queue; int ret; lockdep_assert_held(&mvm->mutex); @@ -509,7 +512,7 @@ static int iwl_mvm_free_inactive_queue(struct iwl_mvm *mvm, int queue, iwl_mvm_invalidate_sta_queue(mvm, queue, disable_agg_tids, false); - ret = iwl_mvm_disable_txq(mvm, old_sta, queue, tid, 0); + ret = iwl_mvm_disable_txq(mvm, old_sta, &queue_tmp, tid, 0); if (ret) { IWL_ERR(mvm, "Failed to free inactive queue %d (ret=%d)\n", @@ -1184,6 +1187,7 @@ static int iwl_mvm_sta_alloc_queue(struct iwl_mvm *mvm, unsigned int wdg_timeout = iwl_mvm_get_wd_timeout(mvm, mvmsta->vif, false, false); int queue = -1; + u16 queue_tmp; unsigned long disable_agg_tids = 0; enum iwl_mvm_agg_state queue_state; bool shared_queue = false, inc_ssn; @@ -1332,7 +1336,8 @@ static int iwl_mvm_sta_alloc_queue(struct iwl_mvm *mvm, return 0; out_err: - iwl_mvm_disable_txq(mvm, sta, queue, tid, 0); + queue_tmp = queue; + iwl_mvm_disable_txq(mvm, sta, &queue_tmp, tid, 0); return ret; } @@ -1779,7 +1784,7 @@ static void iwl_mvm_disable_sta_queues(struct iwl_mvm *mvm, if (mvm_sta->tid_data[i].txq_id == IWL_MVM_INVALID_QUEUE) continue; - iwl_mvm_disable_txq(mvm, sta, mvm_sta->tid_data[i].txq_id, i, + iwl_mvm_disable_txq(mvm, sta, &mvm_sta->tid_data[i].txq_id, i, 0); mvm_sta->tid_data[i].txq_id = IWL_MVM_INVALID_QUEUE; } @@ -1987,7 +1992,7 @@ static int iwl_mvm_add_int_sta_with_queue(struct iwl_mvm *mvm, int macidx, ret = iwl_mvm_add_int_sta_common(mvm, sta, addr, macidx, maccolor); if (ret) { if (!iwl_mvm_has_new_tx_api(mvm)) - iwl_mvm_disable_txq(mvm, NULL, *queue, + iwl_mvm_disable_txq(mvm, NULL, queue, IWL_MAX_TID_COUNT, 0); return ret; } @@ -2060,7 +2065,7 @@ int iwl_mvm_rm_snif_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif) if (WARN_ON_ONCE(mvm->snif_sta.sta_id == IWL_MVM_INVALID_STA)) return -EINVAL; - iwl_mvm_disable_txq(mvm, NULL, mvm->snif_queue, IWL_MAX_TID_COUNT, 0); + iwl_mvm_disable_txq(mvm, NULL, &mvm->snif_queue, IWL_MAX_TID_COUNT, 0); ret = iwl_mvm_rm_sta_common(mvm, mvm->snif_sta.sta_id); if (ret) IWL_WARN(mvm, "Failed sending remove station\n"); @@ -2077,7 +2082,7 @@ int iwl_mvm_rm_aux_sta(struct iwl_mvm *mvm) if (WARN_ON_ONCE(mvm->aux_sta.sta_id == IWL_MVM_INVALID_STA)) return -EINVAL; - iwl_mvm_disable_txq(mvm, NULL, mvm->aux_queue, IWL_MAX_TID_COUNT, 0); + iwl_mvm_disable_txq(mvm, NULL, &mvm->aux_queue, IWL_MAX_TID_COUNT, 0); ret = iwl_mvm_rm_sta_common(mvm, mvm->aux_sta.sta_id); if (ret) IWL_WARN(mvm, "Failed sending remove station\n"); @@ -2173,7 +2178,7 @@ static void iwl_mvm_free_bcast_sta_queues(struct iwl_mvm *mvm, struct ieee80211_vif *vif) { struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); - int queue; + u16 *queueptr, queue; lockdep_assert_held(&mvm->mutex); @@ -2182,10 +2187,10 @@ static void iwl_mvm_free_bcast_sta_queues(struct iwl_mvm *mvm, switch (vif->type) { case NL80211_IFTYPE_AP: case NL80211_IFTYPE_ADHOC: - queue = mvm->probe_queue; + queueptr = &mvm->probe_queue; break; case NL80211_IFTYPE_P2P_DEVICE: - queue = mvm->p2p_dev_queue; + queueptr = &mvm->p2p_dev_queue; break; default: WARN(1, "Can't free bcast queue on vif type %d\n", @@ -2193,7 +2198,8 @@ static void iwl_mvm_free_bcast_sta_queues(struct iwl_mvm *mvm, return; } - iwl_mvm_disable_txq(mvm, NULL, queue, IWL_MAX_TID_COUNT, 0); + queue = *queueptr; + iwl_mvm_disable_txq(mvm, NULL, queueptr, IWL_MAX_TID_COUNT, 0); if (iwl_mvm_has_new_tx_api(mvm)) return; @@ -2428,7 +2434,7 @@ int iwl_mvm_rm_mcast_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif) iwl_mvm_flush_sta(mvm, &mvmvif->mcast_sta, true); - iwl_mvm_disable_txq(mvm, NULL, mvmvif->cab_queue, 0, 0); + iwl_mvm_disable_txq(mvm, NULL, &mvmvif->cab_queue, 0, 0); ret = iwl_mvm_rm_sta_common(mvm, mvmvif->mcast_sta.sta_id); if (ret) -- 2.32.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 11/12] iwlwifi: mvm: clean up number of HW queues 2021-08-02 14:28 [PATCH 00/12] iwlwifi: updates intended for v5.15 2021-08-02 part 2 Luca Coelho ` (9 preceding siblings ...) 2021-08-02 14:28 ` [PATCH 10/12] iwlwifi: mvm: avoid static queue number aliasing Luca Coelho @ 2021-08-02 14:28 ` Luca Coelho 2021-08-02 14:28 ` [PATCH 12/12] iwlwifi: mvm: treat MMPDUs in iwl_mvm_mac_tx() as bcast Luca Coelho 11 siblings, 0 replies; 14+ messages in thread From: Luca Coelho @ 2021-08-02 14:28 UTC (permalink / raw) To: kvalo; +Cc: luca, linux-wireless From: Johannes Berg <johannes.berg@intel.com> Since switching to mac80211 TXQs, we no longer need to advertise more hardware queues than ACs, since we don't even set QUEUE_CONTROL anyway, so the vif->hw_queue[] mapping array won't be used. All we need (at least for now) is for hw->queues to indicate that we have enough queues to handle QoS. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> --- drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c index b2072e19b5dc..f38d2476d5a3 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c @@ -390,7 +390,7 @@ int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm) if (mvm->trans->max_skb_frags) hw->netdev_features = NETIF_F_HIGHDMA | NETIF_F_SG; - hw->queues = IEEE80211_MAX_QUEUES; + hw->queues = IEEE80211_NUM_ACS; hw->offchannel_tx_hw_queue = IWL_MVM_OFFCHANNEL_QUEUE; hw->radiotap_mcs_details |= IEEE80211_RADIOTAP_MCS_HAVE_FEC | IEEE80211_RADIOTAP_MCS_HAVE_STBC; -- 2.32.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 12/12] iwlwifi: mvm: treat MMPDUs in iwl_mvm_mac_tx() as bcast 2021-08-02 14:28 [PATCH 00/12] iwlwifi: updates intended for v5.15 2021-08-02 part 2 Luca Coelho ` (10 preceding siblings ...) 2021-08-02 14:28 ` [PATCH 11/12] iwlwifi: mvm: clean up number of HW queues Luca Coelho @ 2021-08-02 14:28 ` Luca Coelho 11 siblings, 0 replies; 14+ messages in thread From: Luca Coelho @ 2021-08-02 14:28 UTC (permalink / raw) To: kvalo; +Cc: luca, linux-wireless From: Johannes Berg <johannes.berg@intel.com> There's no need for all the complicated conditions here, any bufferable MMPDUs or MMPDUs for client interfaces are already coming through the TXQ interface, not iwl_mvm_mac_tx(). Simplify the logic. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> --- drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c index f38d2476d5a3..c60c0b49d7f7 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c @@ -762,11 +762,11 @@ static void iwl_mvm_mac_tx(struct ieee80211_hw *hw, !test_bit(IWL_MVM_STATUS_ROC_AUX_RUNNING, &mvm->status)) goto drop; - /* treat non-bufferable MMPDUs on AP interfaces as broadcast */ - if ((info->control.vif->type == NL80211_IFTYPE_AP || - info->control.vif->type == NL80211_IFTYPE_ADHOC) && - ieee80211_is_mgmt(hdr->frame_control) && - !ieee80211_is_bufferable_mmpdu(hdr->frame_control)) + /* + * bufferable MMPDUs or MMPDUs on STA interfaces come via TXQs + * so we treat the others as broadcast + */ + if (ieee80211_is_mgmt(hdr->frame_control)) sta = NULL; /* If there is no sta, and it's not offchannel - send through AP */ -- 2.32.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
end of thread, other threads:[~2021-08-26 20:33 UTC | newest] Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-08-02 14:28 [PATCH 00/12] iwlwifi: updates intended for v5.15 2021-08-02 part 2 Luca Coelho 2021-08-02 14:28 ` [PATCH 01/12] iwlwifi: mvm: remove trigger EAPOL time event Luca Coelho 2021-08-26 20:33 ` Luca Coelho 2021-08-02 14:28 ` [PATCH 02/12] iwlwifi: mvm: set replay counter on key install Luca Coelho 2021-08-02 14:28 ` [PATCH 03/12] iwlwifi: mvm: restrict FW SMPS request Luca Coelho 2021-08-02 14:28 ` [PATCH 04/12] iwlwifi: pcie: remove spaces from queue names Luca Coelho 2021-08-02 14:28 ` [PATCH 05/12] iwlwifi: mvm: remove check for vif in iwl_mvm_vif_from_mac80211() Luca Coelho 2021-08-02 14:28 ` [PATCH 06/12] iwlwifi: mvm: fix old-style static const declaration Luca Coelho 2021-08-02 14:28 ` [PATCH 07/12] iwlwifi: mvm: fix a memory leak in iwl_mvm_mac_ctxt_beacon_changed Luca Coelho 2021-08-02 14:28 ` [PATCH 08/12] iwlwifi: remove trailing semicolon in macro definition Luca Coelho 2021-08-02 14:28 ` [PATCH 09/12] iwlwifi: use DEFINE_MUTEX() for mutex lock Luca Coelho 2021-08-02 14:28 ` [PATCH 10/12] iwlwifi: mvm: avoid static queue number aliasing Luca Coelho 2021-08-02 14:28 ` [PATCH 11/12] iwlwifi: mvm: clean up number of HW queues Luca Coelho 2021-08-02 14:28 ` [PATCH 12/12] iwlwifi: mvm: treat MMPDUs in iwl_mvm_mac_tx() as bcast Luca Coelho
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.