diff options
| author | Paolo Abeni <pabeni@redhat.com> | 2025-07-17 14:52:41 +0200 | 
|---|---|---|
| committer | Paolo Abeni <pabeni@redhat.com> | 2025-07-17 14:52:42 +0200 | 
| commit | e49f95dc8cdce2a686bd13861da152e7d2c19ccb (patch) | |
| tree | 08468d5780d210da200dfcd8b64e5c1f12511285 | |
| parent | 69b1b21ab90cf8e4ac4f8bb448f1496e71559b94 (diff) | |
| parent | bbc19fef578970158847a41d9b6b6b218034b8c2 (diff) | |
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
====================
Link: https://patch.msgid.link/20250717091831.18787-5-johannes@sipsolutions.net
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
| -rw-r--r-- | drivers/net/wireless/ath/ath12k/dp_rx.c | 3 | ||||
| -rw-r--r-- | drivers/net/wireless/intel/iwlwifi/fw/api/nvm-reg.h | 5 | ||||
| -rw-r--r-- | drivers/net/wireless/intel/iwlwifi/fw/regulatory.c | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mld/regulatory.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c | 6 | ||||
| -rw-r--r-- | drivers/net/wireless/intel/iwlwifi/pcie/tx.c | 8 | ||||
| -rw-r--r-- | include/net/cfg80211.h | 2 | 
7 files changed, 18 insertions, 11 deletions
| diff --git a/drivers/net/wireless/ath/ath12k/dp_rx.c b/drivers/net/wireless/ath/ath12k/dp_rx.c index 57648febc4a4..bd95dc88f9b2 100644 --- a/drivers/net/wireless/ath/ath12k/dp_rx.c +++ b/drivers/net/wireless/ath/ath12k/dp_rx.c @@ -1060,7 +1060,6 @@ int ath12k_dp_rx_peer_tid_setup(struct ath12k *ar, const u8 *peer_mac, int vdev_  	}  	rx_tid = &peer->rx_tid[tid]; -	paddr_aligned = rx_tid->qbuf.paddr_aligned;  	/* Update the tid queue if it is already setup */  	if (rx_tid->active) {  		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_  		}  		if (!ab->hw_params->reoq_lut_support) { +			paddr_aligned = rx_tid->qbuf.paddr_aligned;  			ret = ath12k_wmi_peer_rx_reorder_queue_setup(ar, vdev_id,  								     peer_mac,  								     paddr_aligned, tid, @@ -1098,6 +1098,7 @@ int ath12k_dp_rx_peer_tid_setup(struct ath12k *ar, const u8 *peer_mac, int vdev_  		return ret;  	} +	paddr_aligned = rx_tid->qbuf.paddr_aligned;  	if (ab->hw_params->reoq_lut_support) {  		/* Update the REO queue LUT at the corresponding peer id  		 * and tid with qaddr. diff --git a/drivers/net/wireless/intel/iwlwifi/fw/api/nvm-reg.h b/drivers/net/wireless/intel/iwlwifi/fw/api/nvm-reg.h index 5cdc09d465d4..e90f3187e55c 100644 --- a/drivers/net/wireless/intel/iwlwifi/fw/api/nvm-reg.h +++ b/drivers/net/wireless/intel/iwlwifi/fw/api/nvm-reg.h @@ -1,6 +1,6 @@  /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */  /* - * Copyright (C) 2012-2014, 2018-2024 Intel Corporation + * Copyright (C) 2012-2014, 2018-2025 Intel Corporation   * Copyright (C) 2013-2015 Intel Mobile Communications GmbH   * Copyright (C) 2016-2017 Intel Deutschland GmbH   */ @@ -754,7 +754,7 @@ struct iwl_lari_config_change_cmd_v10 {   *	according to the BIOS definitions.   *	For LARI cmd version 11 - bits 0:4 are supported.   *	For LARI cmd version 12 - bits 0:6 are supported and bits 7:31 are - *	reserved. No need to mask out the reserved bits. + *	reserved.   * @force_disable_channels_bitmap: Bitmap of disabled bands/channels.   *	Each bit represents a set of channels in a specific band that should be   *	disabled @@ -787,6 +787,7 @@ struct iwl_lari_config_change_cmd {  /* Activate UNII-1 (5.2GHz) for World Wide */  #define ACTIVATE_5G2_IN_WW_MASK			BIT(4)  #define CHAN_STATE_ACTIVE_BITMAP_CMD_V11	0x1F +#define CHAN_STATE_ACTIVE_BITMAP_CMD_V12	0x7F  /**   * struct iwl_pnvm_init_complete_ntfy - PNVM initialization complete diff --git a/drivers/net/wireless/intel/iwlwifi/fw/regulatory.c b/drivers/net/wireless/intel/iwlwifi/fw/regulatory.c index 74b90bd92c48..ebfba981cf89 100644 --- a/drivers/net/wireless/intel/iwlwifi/fw/regulatory.c +++ b/drivers/net/wireless/intel/iwlwifi/fw/regulatory.c @@ -614,6 +614,7 @@ int iwl_fill_lari_config(struct iwl_fw_runtime *fwrt,  	ret = iwl_bios_get_dsm(fwrt, DSM_FUNC_ACTIVATE_CHANNEL, &value);  	if (!ret) { +		value &= CHAN_STATE_ACTIVE_BITMAP_CMD_V12;  		if (cmd_ver < 8)  			value &= ~ACTIVATE_5G2_IN_WW_MASK; diff --git a/drivers/net/wireless/intel/iwlwifi/mld/regulatory.c b/drivers/net/wireless/intel/iwlwifi/mld/regulatory.c index 326c300470ea..436219d1ec5e 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/regulatory.c +++ b/drivers/net/wireless/intel/iwlwifi/mld/regulatory.c @@ -251,8 +251,10 @@ void iwl_mld_configure_lari(struct iwl_mld *mld)  			cpu_to_le32(value &= DSM_UNII4_ALLOW_BITMAP);  	ret = iwl_bios_get_dsm(fwrt, DSM_FUNC_ACTIVATE_CHANNEL, &value); -	if (!ret) +	if (!ret) { +		value &= CHAN_STATE_ACTIVE_BITMAP_CMD_V12;  		cmd.chan_state_active_bitmap = cpu_to_le32(value); +	}  	ret = iwl_bios_get_dsm(fwrt, DSM_FUNC_ENABLE_6E, &value);  	if (!ret) diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c b/drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c index c8f4f3a1d2eb..5a9c3b7976a1 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c @@ -546,8 +546,10 @@ again:  	}  	if (WARN_ON(trans->do_top_reset && -		    trans->mac_cfg->device_family < IWL_DEVICE_FAMILY_SC)) -		return -EINVAL; +		    trans->mac_cfg->device_family < IWL_DEVICE_FAMILY_SC)) { +		ret = -EINVAL; +		goto out; +	}  	/* we need to wait later - set state */  	if (trans->do_top_reset) diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/tx.c b/drivers/net/wireless/intel/iwlwifi/pcie/tx.c index bb467e2b1779..eee55428749c 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/tx.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/tx.c @@ -2101,10 +2101,10 @@ static void iwl_txq_gen1_update_byte_cnt_tbl(struct iwl_trans *trans,  	bc_ent = cpu_to_le16(len | (sta_id << 12)); -	scd_bc_tbl[txq_id * BC_TABLE_SIZE + write_ptr].tfd_offset = bc_ent; +	scd_bc_tbl[txq_id * TFD_QUEUE_BC_SIZE + write_ptr].tfd_offset = bc_ent;  	if (write_ptr < TFD_QUEUE_SIZE_BC_DUP) -		scd_bc_tbl[txq_id * BC_TABLE_SIZE + TFD_QUEUE_SIZE_MAX + write_ptr].tfd_offset = +		scd_bc_tbl[txq_id * TFD_QUEUE_BC_SIZE + TFD_QUEUE_SIZE_MAX + write_ptr].tfd_offset =  			bc_ent;  } @@ -2328,10 +2328,10 @@ static void iwl_txq_gen1_inval_byte_cnt_tbl(struct iwl_trans *trans,  	bc_ent = cpu_to_le16(1 | (sta_id << 12)); -	scd_bc_tbl[txq_id * BC_TABLE_SIZE + read_ptr].tfd_offset = bc_ent; +	scd_bc_tbl[txq_id * TFD_QUEUE_BC_SIZE + read_ptr].tfd_offset = bc_ent;  	if (read_ptr < TFD_QUEUE_SIZE_BC_DUP) -		scd_bc_tbl[txq_id * BC_TABLE_SIZE + TFD_QUEUE_SIZE_MAX + read_ptr].tfd_offset = +		scd_bc_tbl[txq_id * TFD_QUEUE_BC_SIZE + TFD_QUEUE_SIZE_MAX + read_ptr].tfd_offset =  			bc_ent;  } diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index d1848dc8ec99..10248d527616 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -2690,7 +2690,7 @@ struct cfg80211_scan_request {  	s8 tsf_report_link_id;  	/* keep last */ -	struct ieee80211_channel *channels[] __counted_by(n_channels); +	struct ieee80211_channel *channels[];  };  static inline void get_random_mask_addr(u8 *buf, const u8 *addr, const u8 *mask) | 
