Skip to content

Commit 28e02bc

Browse files
committed
wifi: iwlwifi: mvm: avoid link lookup in statistics
We already iterate the link bss_conf/link_info and have the pointer, or know that deflink/bss_conf is used, so avoid an extra lookup and just pass the pointer. This may also avoid a crash when this is processed during restart, where the FW to link conf array (link_id_to_link_conf) may be NULLed out. Fixes: c1e458b ("wifi: iwlwifi: mvm: Move beacon filtering to be per link") Signed-off-by: Johannes Berg <[email protected]> Reviewed-by: Ilan Peer <[email protected]> Signed-off-by: Miri Korenblit <[email protected]> Link: https://patch.msgid.link/20240703064026.346a6ef67a86.Iba5d65d728ca9f58518c88d029496c1250670544@changeid Signed-off-by: Johannes Berg <[email protected]>
1 parent e715c93 commit 28e02bc

File tree

1 file changed

+6
-7
lines changed
  • drivers/net/wireless/intel/iwlwifi/mvm

1 file changed

+6
-7
lines changed

drivers/net/wireless/intel/iwlwifi/mvm/rx.c

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -557,12 +557,10 @@ struct iwl_mvm_stat_data_all_macs {
557557
};
558558

559559
static void iwl_mvm_update_link_sig(struct ieee80211_vif *vif, int sig,
560-
struct iwl_mvm_vif_link_info *link_info)
560+
struct iwl_mvm_vif_link_info *link_info,
561+
struct ieee80211_bss_conf *bss_conf)
561562
{
562563
struct iwl_mvm *mvm = iwl_mvm_vif_from_mac80211(vif)->mvm;
563-
struct ieee80211_bss_conf *bss_conf =
564-
iwl_mvm_rcu_fw_link_id_to_link_conf(mvm, link_info->fw_link_id,
565-
false);
566564
int thold = bss_conf->cqm_rssi_thold;
567565
int hyst = bss_conf->cqm_rssi_hyst;
568566
int last_event;
@@ -670,7 +668,7 @@ static void iwl_mvm_stat_iterator(void *_data, u8 *mac,
670668
mvmvif->deflink.beacon_stats.num_beacons;
671669

672670
/* This is used in pre-MLO API so use deflink */
673-
iwl_mvm_update_link_sig(vif, sig, &mvmvif->deflink);
671+
iwl_mvm_update_link_sig(vif, sig, &mvmvif->deflink, &vif->bss_conf);
674672
}
675673

676674
static void iwl_mvm_stat_iterator_all_macs(void *_data, u8 *mac,
@@ -705,7 +703,7 @@ static void iwl_mvm_stat_iterator_all_macs(void *_data, u8 *mac,
705703
sig = -le32_to_cpu(mac_stats->beacon_filter_average_energy);
706704

707705
/* This is used in pre-MLO API so use deflink */
708-
iwl_mvm_update_link_sig(vif, sig, &mvmvif->deflink);
706+
iwl_mvm_update_link_sig(vif, sig, &mvmvif->deflink, &vif->bss_conf);
709707
}
710708

711709
static inline void
@@ -921,7 +919,8 @@ iwl_mvm_stat_iterator_all_links(struct iwl_mvm *mvm,
921919
mvmvif->link[link_id]->beacon_stats.num_beacons;
922920

923921
sig = -le32_to_cpu(link_stats->beacon_filter_average_energy);
924-
iwl_mvm_update_link_sig(bss_conf->vif, sig, link_info);
922+
iwl_mvm_update_link_sig(bss_conf->vif, sig, link_info,
923+
bss_conf);
925924

926925
if (WARN_ONCE(mvmvif->id >= MAC_INDEX_AUX,
927926
"invalid mvmvif id: %d", mvmvif->id))

0 commit comments

Comments
 (0)