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
10601060 }
10611061
10621062 rx_tid = &peer->rx_tid[tid];
1063− paddr_aligned = rx_tid->qbuf.paddr_aligned;
10641063 /* Update the tid queue if it is already setup */
10651064 if (rx_tid->active) {
10661065 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
10721071 }
10731072
10741073 if (!ab->hw_params->reoq_lut_support) {
1074+ paddr_aligned = rx_tid->qbuf.paddr_aligned;
10751075 ret = ath12k_wmi_peer_rx_reorder_queue_setup(ar, vdev_id,
10761076 peer_mac,
10771077 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
10981098 return ret;
10991099 }
11001100
1101+ paddr_aligned = rx_tid->qbuf.paddr_aligned;
11011102 if (ab->hw_params->reoq_lut_support) {
11021103 /* Update the REO queue LUT at the corresponding peer id
11031104 * and tid with qaddr.
drivers/net/wireless/intel/iwlwifi/fw/api/nvm-reg.h+3−2
@@ -1,6 +1,6 @@
11 /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
22 /*
3− * Copyright (C) 2012-2014, 2018-2024 Intel Corporation
3+ * Copyright (C) 2012-2014, 2018-2025 Intel Corporation
44 * Copyright (C) 2013-2015 Intel Mobile Communications GmbH
55 * Copyright (C) 2016-2017 Intel Deutschland GmbH
66 */
@@ -754,7 +754,7 @@ struct iwl_lari_config_change_cmd_v10 { · 747 unmodified lines
754754 * according to the BIOS definitions.
755755 * For LARI cmd version 11 - bits 0:4 are supported.
756756 * 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.
758758 * @force_disable_channels_bitmap: Bitmap of disabled bands/channels.
759759 * Each bit represents a set of channels in a specific band that should be
760760 * disabled
@@ -787,6 +787,7 @@ struct iwl_lari_config_change_cmd { · 26 unmodified lines
787787 /* Activate UNII-1 (5.2GHz) for World Wide */
788788 #define ACTIVATE_5G2_IN_WW_MASK BIT(4)
789789 #define CHAN_STATE_ACTIVE_BITMAP_CMD_V11 0x1F
790+#define CHAN_STATE_ACTIVE_BITMAP_CMD_V12 0x7F
790791
791792 /**
792793 * 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
614614
615615 ret = iwl_bios_get_dsm(fwrt, DSM_FUNC_ACTIVATE_CHANNEL, &value);
616616 if (!ret) {
617+ value &= CHAN_STATE_ACTIVE_BITMAP_CMD_V12;
617618 if (cmd_ver < 8)
618619 value &= ~ACTIVATE_5G2_IN_WW_MASK;
619620
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
251251 cpu_to_le32(value &= DSM_UNII4_ALLOW_BITMAP);
252252
253253 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;
255256 cmd.chan_state_active_bitmap = cpu_to_le32(value);
257+ }
256258
257259 ret = iwl_bios_get_dsm(fwrt, DSM_FUNC_ENABLE_6E, &value);
258260 if (!ret)
drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c+4−2
@@ -546,8 +546,10 @@ again: · 545 unmodified lines
546546 }
547547
548548 if (WARN_ON(trans->do_top_reset &&
549− trans->mac_cfg->device_family < IWL_DEVICE_FAMILY_SC))
550− return -EINVAL;
549+ trans->mac_cfg->device_family < IWL_DEVICE_FAMILY_SC)) {
550+ ret = -EINVAL;
551+ goto out;
552+ }
551553
552554 /* we need to wait later - set state */
553555 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
21012101
21022102 bc_ent = cpu_to_le16(len | (sta_id << 12));
21032103
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;
21052105
21062106 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 =
21082108 bc_ent;
21092109 }
21102110
@@ -2328,10 +2328,10 @@ static void iwl_txq_gen1_inval_byte_cnt_tbl(struct iwl_trans *trans, · 217 unmodified lines
23282328
23292329 bc_ent = cpu_to_le16(1 | (sta_id << 12));
23302330
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;
23322332
23332333 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 =
23352335 bc_ent;
23362336 }
23372337
include/net/cfg80211.h+1−1
@@ -2690,7 +2690,7 @@ struct cfg80211_scan_request { · 2689 unmodified lines
26902690 s8 tsf_report_link_id;
26912691
26922692 /* keep last */
2693− struct ieee80211_channel *channels[] __counted_by(n_channels);
2693+ struct ieee80211_channel *channels[];
26942694 };
26952695
26962696 static inline void get_random_mask_addr(u8 *buf, const u8 *addr, const u8 *mask)