Skip to content

Commit e49f95d

Browse files
author
Paolo Abeni
committed
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 ==================== Link: https://patch.msgid.link/[email protected] Signed-off-by: Paolo Abeni <[email protected]>
2 parents 69b1b21 + bbc19fe commit e49f95d

File tree

7 files changed

+18
-11
lines changed

7 files changed

+18
-11
lines changed

drivers/net/wireless/ath/ath12k/dp_rx.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1060,7 +1060,6 @@ int ath12k_dp_rx_peer_tid_setup(struct ath12k *ar, const u8 *peer_mac, int vdev_
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_
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_
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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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 {
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 {
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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -614,6 +614,7 @@ int iwl_fill_lari_config(struct iwl_fw_runtime *fwrt,
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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,8 +251,10 @@ void iwl_mld_configure_lari(struct iwl_mld *mld)
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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -546,8 +546,10 @@ int iwl_trans_pcie_gen2_start_fw(struct iwl_trans *trans,
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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2101,10 +2101,10 @@ static void iwl_txq_gen1_update_byte_cnt_tbl(struct iwl_trans *trans,
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,
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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2690,7 +2690,7 @@ struct cfg80211_scan_request {
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)

0 commit comments

Comments
 (0)