mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
Merge tag 'ath-next-20251111' of git://git.kernel.org/pub/scm/linux/kernel/git/ath/ath
Jeff Johnson says: ================== ath.git patches for v6.19 (#2) Just one 2-patch series for this PR. Once pulled into wireless-next, ath-next will fast-forward, and that will provide the baseline for merging ath12k-ng into ath-next. ================== Link: https://patch.msgid.link/15a98cae-0274-45f4-9b8e-be6fa9720884@oss.qualcomm.com Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
|
||||
*/
|
||||
|
||||
@@ -1250,7 +1249,6 @@ void ath12k_fw_stats_reset(struct ath12k *ar)
|
||||
spin_lock_bh(&ar->data_lock);
|
||||
ath12k_fw_stats_free(&ar->fw_stats);
|
||||
ar->fw_stats.num_vdev_recvd = 0;
|
||||
ar->fw_stats.num_bcn_recvd = 0;
|
||||
spin_unlock_bh(&ar->data_lock);
|
||||
}
|
||||
|
||||
|
||||
@@ -646,7 +646,6 @@ struct ath12k_fw_stats {
|
||||
struct list_head vdevs;
|
||||
struct list_head bcn;
|
||||
u32 num_vdev_recvd;
|
||||
u32 num_bcn_recvd;
|
||||
};
|
||||
|
||||
struct ath12k_dbg_htt_stats {
|
||||
|
||||
@@ -1286,6 +1286,7 @@ static int ath12k_open_vdev_stats(struct inode *inode, struct file *file)
|
||||
|
||||
ath12k_wmi_fw_stats_dump(ar, &ar->fw_stats, param.stats_id,
|
||||
buf);
|
||||
ath12k_fw_stats_reset(ar);
|
||||
|
||||
file->private_data = no_free_ptr(buf);
|
||||
|
||||
@@ -1352,12 +1353,7 @@ static int ath12k_open_bcn_stats(struct inode *inode, struct file *file)
|
||||
|
||||
ath12k_wmi_fw_stats_dump(ar, &ar->fw_stats, param.stats_id,
|
||||
buf);
|
||||
/* since beacon stats request is looped for all active VDEVs, saved fw
|
||||
* stats is not freed for each request until done for all active VDEVs
|
||||
*/
|
||||
spin_lock_bh(&ar->data_lock);
|
||||
ath12k_fw_stats_bcn_free(&ar->fw_stats.bcn);
|
||||
spin_unlock_bh(&ar->data_lock);
|
||||
ath12k_fw_stats_reset(ar);
|
||||
|
||||
file->private_data = no_free_ptr(buf);
|
||||
|
||||
@@ -1418,6 +1414,7 @@ static int ath12k_open_pdev_stats(struct inode *inode, struct file *file)
|
||||
|
||||
ath12k_wmi_fw_stats_dump(ar, &ar->fw_stats, param.stats_id,
|
||||
buf);
|
||||
ath12k_fw_stats_reset(ar);
|
||||
|
||||
file->private_data = no_free_ptr(buf);
|
||||
|
||||
|
||||
@@ -5079,8 +5079,6 @@ int ath12k_mac_get_fw_stats(struct ath12k *ar,
|
||||
if (ah->state != ATH12K_HW_STATE_ON)
|
||||
return -ENETDOWN;
|
||||
|
||||
ath12k_fw_stats_reset(ar);
|
||||
|
||||
reinit_completion(&ar->fw_stats_complete);
|
||||
reinit_completion(&ar->fw_stats_done);
|
||||
|
||||
@@ -5178,6 +5176,7 @@ static int ath12k_mac_op_get_txpower(struct ieee80211_hw *hw,
|
||||
ar->chan_tx_pwr = pdev->chan_tx_power / 2;
|
||||
spin_unlock_bh(&ar->data_lock);
|
||||
ar->last_tx_power_update = jiffies;
|
||||
ath12k_fw_stats_reset(ar);
|
||||
|
||||
send_tx_power:
|
||||
*dbm = ar->chan_tx_pwr;
|
||||
@@ -13208,14 +13207,18 @@ static void ath12k_mac_op_sta_statistics(struct ieee80211_hw *hw,
|
||||
|
||||
if (!signal &&
|
||||
ahsta->ahvif->vdev_type == WMI_VDEV_TYPE_STA &&
|
||||
!(ath12k_mac_get_fw_stats(ar, ¶ms)))
|
||||
!(ath12k_mac_get_fw_stats(ar, ¶ms))) {
|
||||
signal = arsta->rssi_beacon;
|
||||
ath12k_fw_stats_reset(ar);
|
||||
}
|
||||
|
||||
params.stats_id = WMI_REQUEST_RSSI_PER_CHAIN_STAT;
|
||||
if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_CHAIN_SIGNAL)) &&
|
||||
ahsta->ahvif->vdev_type == WMI_VDEV_TYPE_STA &&
|
||||
!(ath12k_mac_get_fw_stats(ar, ¶ms)))
|
||||
!(ath12k_mac_get_fw_stats(ar, ¶ms))) {
|
||||
ath12k_mac_put_chain_rssi(sinfo, arsta);
|
||||
ath12k_fw_stats_reset(ar);
|
||||
}
|
||||
|
||||
spin_lock_bh(&ar->data_lock);
|
||||
noise_floor = ath12k_pdev_get_noise_floor(ar);
|
||||
@@ -13299,8 +13302,10 @@ static void ath12k_mac_op_link_sta_statistics(struct ieee80211_hw *hw,
|
||||
|
||||
if (!signal &&
|
||||
ahsta->ahvif->vdev_type == WMI_VDEV_TYPE_STA &&
|
||||
!(ath12k_mac_get_fw_stats(ar, ¶ms)))
|
||||
!(ath12k_mac_get_fw_stats(ar, ¶ms))) {
|
||||
signal = arsta->rssi_beacon;
|
||||
ath12k_fw_stats_reset(ar);
|
||||
}
|
||||
|
||||
if (signal) {
|
||||
link_sinfo->signal =
|
||||
|
||||
@@ -8089,8 +8089,6 @@ void ath12k_wmi_fw_stats_dump(struct ath12k *ar,
|
||||
buf[len - 1] = 0;
|
||||
else
|
||||
buf[len] = 0;
|
||||
|
||||
ath12k_fw_stats_reset(ar);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -8487,18 +8485,10 @@ static void ath12k_wmi_fw_stats_process(struct ath12k *ar,
|
||||
ath12k_warn(ab, "empty beacon stats");
|
||||
return;
|
||||
}
|
||||
/* Mark end until we reached the count of all started VDEVs
|
||||
* within the PDEV
|
||||
*/
|
||||
if (ar->num_started_vdevs)
|
||||
is_end = ((++ar->fw_stats.num_bcn_recvd) ==
|
||||
ar->num_started_vdevs);
|
||||
|
||||
list_splice_tail_init(&stats->bcn,
|
||||
&ar->fw_stats.bcn);
|
||||
|
||||
if (is_end)
|
||||
complete(&ar->fw_stats_done);
|
||||
complete(&ar->fw_stats_done);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user