History

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

Johannes Berg says: ==================== Couple of fixes: - ath12k performance regression from -rc1 - cfg80211 counted_by() removal for scan request as it doesn't match usage and keeps complaining - iwlwifi crash with certain older devices - iwlwifi missing an error path unlock - iwlwifi compatibility with certain BIOS updates * tag 'wireless-2025-07-17' of https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless: wifi: iwlwifi: Fix botched indexing conversion wifi: cfg80211: remove scan request n_channels counted_by wifi: ath12k: Fix packets received in WBM error ring with REO LUT enabled wifi: iwlwifi: mask reserved bits in chan_state_active_bitmap wifi: iwlwifi: pcie: fix locking on invalid TOP reset ====================

Paolo Abeni committed 1 year ago

Commit e49f95d2 parents 69b1b21 bbc19fe7 files · +18 −11Browse files

Unified · Split

7 files
  1. drivers/net/wireless/ath/ath12k/dp_rx.c +2 −1
  2. drivers/net/wireless/intel/iwlwifi/fw/api/nvm-reg.h +3 −2
  3. drivers/net/wireless/intel/iwlwifi/fw/regulatory.c +1 −0
  4. drivers/net/wireless/intel/iwlwifi/mld/regulatory.c +3 −1
  5. drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c +4 −2
  6. drivers/net/wireless/intel/iwlwifi/pcie/tx.c +4 −4
  7. include/net/cfg80211.h +1 −1
drivers/net/wireless/ath/ath12k/dp_rx.c+2−1
@@ -1060,7 +1060,6 @@ int ath12k_dp_rx_peer_tid_setup(struct ath12k *ar, const u8 *peer_mac, int vdev_ · 1059 unmodified lines
1060 }1060 }
1061 1061
1062 rx_tid = &peer->rx_tid[tid];1062 rx_tid = &peer->rx_tid[tid];
1063 paddr_aligned = rx_tid->qbuf.paddr_aligned;
1064 /* Update the tid queue if it is already setup */1063 /* Update the tid queue if it is already setup */
1065 if (rx_tid->active) {1064 if (rx_tid->active) {
1066 ret = ath12k_peer_rx_tid_reo_update(ar, peer, rx_tid,1065 ret = ath12k_peer_rx_tid_reo_update(ar, peer, rx_tid,
@@ -1072,6 +1071,7 @@ int ath12k_dp_rx_peer_tid_setup(struct ath12k *ar, const u8 *peer_mac, int vdev_ · 5 unmodified lines
1072 }1071 }
1073 1072
1074 if (!ab->hw_params->reoq_lut_support) {1073 if (!ab->hw_params->reoq_lut_support) {
1074 paddr_aligned = rx_tid->qbuf.paddr_aligned;
1075 ret = ath12k_wmi_peer_rx_reorder_queue_setup(ar, vdev_id,1075 ret = ath12k_wmi_peer_rx_reorder_queue_setup(ar, vdev_id,
1076 peer_mac,1076 peer_mac,
1077 paddr_aligned, tid,1077 paddr_aligned, tid,
@@ -1098,6 +1098,7 @@ int ath12k_dp_rx_peer_tid_setup(struct ath12k *ar, const u8 *peer_mac, int vdev_ · 20 unmodified lines
1098 return ret;1098 return ret;
1099 }1099 }
1100 1100
1101 paddr_aligned = rx_tid->qbuf.paddr_aligned;
1101 if (ab->hw_params->reoq_lut_support) {1102 if (ab->hw_params->reoq_lut_support) {
1102 /* Update the REO queue LUT at the corresponding peer id1103 /* Update the REO queue LUT at the corresponding peer id
1103 * and tid with qaddr.1104 * and tid with qaddr.
drivers/net/wireless/intel/iwlwifi/fw/api/nvm-reg.h+3−2
@@ -1,6 +1,6 @@
1/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */1/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
2/*2/*
3 * Copyright (C) 2012-2014, 2018-2024 Intel Corporation3 * Copyright (C) 2012-2014, 2018-2025 Intel Corporation
4 * Copyright (C) 2013-2015 Intel Mobile Communications GmbH4 * Copyright (C) 2013-2015 Intel Mobile Communications GmbH
5 * Copyright (C) 2016-2017 Intel Deutschland GmbH5 * Copyright (C) 2016-2017 Intel Deutschland GmbH
6 */6 */
@@ -754,7 +754,7 @@ struct iwl_lari_config_change_cmd_v10 { · 747 unmodified lines
754 * according to the BIOS definitions.754 * according to the BIOS definitions.
755 * For LARI cmd version 11 - bits 0:4 are supported.755 * For LARI cmd version 11 - bits 0:4 are supported.
756 * For LARI cmd version 12 - bits 0:6 are supported and bits 7:31 are756 * For LARI cmd version 12 - bits 0:6 are supported and bits 7:31 are
757 * reserved. No need to mask out the reserved bits.757 * reserved.
758 * @force_disable_channels_bitmap: Bitmap of disabled bands/channels.758 * @force_disable_channels_bitmap: Bitmap of disabled bands/channels.
759 * Each bit represents a set of channels in a specific band that should be759 * Each bit represents a set of channels in a specific band that should be
760 * disabled760 * disabled
@@ -787,6 +787,7 @@ struct iwl_lari_config_change_cmd { · 26 unmodified lines
787/* Activate UNII-1 (5.2GHz) for World Wide */787/* Activate UNII-1 (5.2GHz) for World Wide */
788#define ACTIVATE_5G2_IN_WW_MASK BIT(4)788#define ACTIVATE_5G2_IN_WW_MASK BIT(4)
789#define CHAN_STATE_ACTIVE_BITMAP_CMD_V11 0x1F789#define CHAN_STATE_ACTIVE_BITMAP_CMD_V11 0x1F
790#define CHAN_STATE_ACTIVE_BITMAP_CMD_V12 0x7F
790 791
791/**792/**
792 * struct iwl_pnvm_init_complete_ntfy - PNVM initialization complete793 * struct iwl_pnvm_init_complete_ntfy - PNVM initialization complete
drivers/net/wireless/intel/iwlwifi/fw/regulatory.c+1−0
@@ -614,6 +614,7 @@ int iwl_fill_lari_config(struct iwl_fw_runtime *fwrt, · 613 unmodified lines
614 614
615 ret = iwl_bios_get_dsm(fwrt, DSM_FUNC_ACTIVATE_CHANNEL, &value);615 ret = iwl_bios_get_dsm(fwrt, DSM_FUNC_ACTIVATE_CHANNEL, &value);
616 if (!ret) {616 if (!ret) {
617 value &= CHAN_STATE_ACTIVE_BITMAP_CMD_V12;
617 if (cmd_ver < 8)618 if (cmd_ver < 8)
618 value &= ~ACTIVATE_5G2_IN_WW_MASK;619 value &= ~ACTIVATE_5G2_IN_WW_MASK;
619 620
drivers/net/wireless/intel/iwlwifi/mld/regulatory.c+3−1
@@ -251,8 +251,10 @@ void iwl_mld_configure_lari(struct iwl_mld *mld) · 250 unmodified lines
251 cpu_to_le32(value &= DSM_UNII4_ALLOW_BITMAP);251 cpu_to_le32(value &= DSM_UNII4_ALLOW_BITMAP);
252 252
253 ret = iwl_bios_get_dsm(fwrt, DSM_FUNC_ACTIVATE_CHANNEL, &value);253 ret = iwl_bios_get_dsm(fwrt, DSM_FUNC_ACTIVATE_CHANNEL, &value);
254 if (!ret)254 if (!ret) {
255 value &= CHAN_STATE_ACTIVE_BITMAP_CMD_V12;
255 cmd.chan_state_active_bitmap = cpu_to_le32(value);256 cmd.chan_state_active_bitmap = cpu_to_le32(value);
257 }
256 258
257 ret = iwl_bios_get_dsm(fwrt, DSM_FUNC_ENABLE_6E, &value);259 ret = iwl_bios_get_dsm(fwrt, DSM_FUNC_ENABLE_6E, &value);
258 if (!ret)260 if (!ret)
drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c+4−2
@@ -546,8 +546,10 @@ again: · 545 unmodified lines
546 }546 }
547 547
548 if (WARN_ON(trans->do_top_reset &&548 if (WARN_ON(trans->do_top_reset &&
549 trans->mac_cfg->device_family < IWL_DEVICE_FAMILY_SC))549 trans->mac_cfg->device_family < IWL_DEVICE_FAMILY_SC)) {
550 return -EINVAL;550 ret = -EINVAL;
551 goto out;
552 }
551 553
552 /* we need to wait later - set state */554 /* we need to wait later - set state */
553 if (trans->do_top_reset)555 if (trans->do_top_reset)
drivers/net/wireless/intel/iwlwifi/pcie/tx.c+4−4
@@ -2101,10 +2101,10 @@ static void iwl_txq_gen1_update_byte_cnt_tbl(struct iwl_trans *trans, · 2100 unmodified lines
2101 2101
2102 bc_ent = cpu_to_le16(len | (sta_id << 12));2102 bc_ent = cpu_to_le16(len | (sta_id << 12));
2103 2103
2104 scd_bc_tbl[txq_id * BC_TABLE_SIZE + write_ptr].tfd_offset = bc_ent;2104 scd_bc_tbl[txq_id * TFD_QUEUE_BC_SIZE + write_ptr].tfd_offset = bc_ent;
2105 2105
2106 if (write_ptr < TFD_QUEUE_SIZE_BC_DUP)2106 if (write_ptr < TFD_QUEUE_SIZE_BC_DUP)
2107 scd_bc_tbl[txq_id * BC_TABLE_SIZE + TFD_QUEUE_SIZE_MAX + write_ptr].tfd_offset =2107 scd_bc_tbl[txq_id * TFD_QUEUE_BC_SIZE + TFD_QUEUE_SIZE_MAX + write_ptr].tfd_offset =
2108 bc_ent;2108 bc_ent;
2109}2109}
2110 2110
@@ -2328,10 +2328,10 @@ static void iwl_txq_gen1_inval_byte_cnt_tbl(struct iwl_trans *trans, · 217 unmodified lines
2328 2328
2329 bc_ent = cpu_to_le16(1 | (sta_id << 12));2329 bc_ent = cpu_to_le16(1 | (sta_id << 12));
2330 2330
2331 scd_bc_tbl[txq_id * BC_TABLE_SIZE + read_ptr].tfd_offset = bc_ent;2331 scd_bc_tbl[txq_id * TFD_QUEUE_BC_SIZE + read_ptr].tfd_offset = bc_ent;
2332 2332
2333 if (read_ptr < TFD_QUEUE_SIZE_BC_DUP)2333 if (read_ptr < TFD_QUEUE_SIZE_BC_DUP)
2334 scd_bc_tbl[txq_id * BC_TABLE_SIZE + TFD_QUEUE_SIZE_MAX + read_ptr].tfd_offset =2334 scd_bc_tbl[txq_id * TFD_QUEUE_BC_SIZE + TFD_QUEUE_SIZE_MAX + read_ptr].tfd_offset =
2335 bc_ent;2335 bc_ent;
2336}2336}
2337 2337
include/net/cfg80211.h+1−1
@@ -2690,7 +2690,7 @@ struct cfg80211_scan_request { · 2689 unmodified lines
2690 s8 tsf_report_link_id;2690 s8 tsf_report_link_id;
2691 2691
2692 /* keep last */2692 /* keep last */
2693 struct ieee80211_channel *channels[] __counted_by(n_channels);2693 struct ieee80211_channel *channels[];
2694};2694};
2695 2695
2696static inline void get_random_mask_addr(u8 *buf, const u8 *addr, const u8 *mask)2696static inline void get_random_mask_addr(u8 *buf, const u8 *addr, const u8 *mask)