On 8/21/2024 11:37 PM, Kalle Valo wrote: > From: Kalle Valo <quic_kvalo@xxxxxxxxxxx> > > As ath12k is now converted to use wiphy lock we can convert > ath12k_sta_rc_update_wk() to use wiphy_work_queue(). This is just for > consistency. > > Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3 > > Signed-off-by: Kalle Valo <quic_kvalo@xxxxxxxxxxx> > --- > drivers/net/wireless/ath/ath12k/core.h | 2 +- > drivers/net/wireless/ath/ath12k/mac.c | 17 +++++++++-------- > 2 files changed, 10 insertions(+), 9 deletions(-) > > diff --git a/drivers/net/wireless/ath/ath12k/core.h b/drivers/net/wireless/ath/ath12k/core.h > index 7fad2150d9bd..cc28185be650 100644 > --- a/drivers/net/wireless/ath/ath12k/core.h > +++ b/drivers/net/wireless/ath/ath12k/core.h > @@ -445,7 +445,7 @@ struct ath12k_sta { > u32 smps; > enum hal_pn_type pn_type; > > - struct work_struct update_wk; > + struct wiphy_work update_wk; > struct rate_info txrate; > struct rate_info last_txrate; > u64 rx_duration; > diff --git a/drivers/net/wireless/ath/ath12k/mac.c b/drivers/net/wireless/ath/ath12k/mac.c > index 80db9004cdd7..8bf7b026f8e4 100644 > --- a/drivers/net/wireless/ath/ath12k/mac.c > +++ b/drivers/net/wireless/ath/ath12k/mac.c > @@ -4258,9 +4258,9 @@ static int ath12k_station_disassoc(struct ath12k *ar, > return 0; > } > > -static void ath12k_sta_rc_update_wk(struct work_struct *wk) > +static void ath12k_sta_rc_update_wk(struct wiphy *wiphy, struct wiphy_work *work) > { > - struct ath12k *ar; > + struct ath12k *ar = wiphy_priv(wiphy); wiphy_priv() returns pointer to ieee80211_local, not ath12k. > struct ath12k_vif *arvif; > struct ath12k_sta *arsta; > struct ieee80211_sta *sta; > @@ -4274,10 +4274,11 @@ static void ath12k_sta_rc_update_wk(struct work_struct *wk) > struct ath12k_wmi_peer_assoc_arg peer_arg; > enum wmi_phy_mode peer_phymode; > > - arsta = container_of(wk, struct ath12k_sta, update_wk); > + lockdep_assert_wiphy(wiphy); > + > + arsta = container_of(work, struct ath12k_sta, update_wk); > sta = container_of((void *)arsta, struct ieee80211_sta, drv_priv); > arvif = arsta->arvif; > - ar = arvif->ar; > > if (WARN_ON(ath12k_mac_vif_chan(arvif->vif, &def))) > return; > @@ -4571,7 +4572,7 @@ static int ath12k_mac_op_sta_state(struct ieee80211_hw *hw, > /* cancel must be done outside the mutex to avoid deadlock */ > if ((old_state == IEEE80211_STA_NONE && > new_state == IEEE80211_STA_NOTEXIST)) > - cancel_work_sync(&arsta->update_wk); > + wiphy_work_cancel(hw->wiphy, &arsta->update_wk); > > ar = ath12k_get_ar_by_vif(hw, vif); > if (!ar) { > @@ -4585,7 +4586,7 @@ static int ath12k_mac_op_sta_state(struct ieee80211_hw *hw, > new_state == IEEE80211_STA_NONE) { > memset(arsta, 0, sizeof(*arsta)); > arsta->arvif = arvif; > - INIT_WORK(&arsta->update_wk, ath12k_sta_rc_update_wk); > + wiphy_work_init(&arsta->update_wk, ath12k_sta_rc_update_wk); > > ret = ath12k_mac_station_add(ar, vif, sta); > if (ret) > @@ -4792,7 +4793,7 @@ static void ath12k_mac_op_sta_rc_update(struct ieee80211_hw *hw, > > spin_unlock_bh(&ar->data_lock); > > - ieee80211_queue_work(hw, &arsta->update_wk); > + wiphy_work_queue(hw->wiphy, &arsta->update_wk); > } > > static int ath12k_conf_tx_uapsd(struct ath12k_vif *arvif, > @@ -8065,7 +8066,7 @@ static void ath12k_mac_set_bitrate_mask_iter(void *data, > arsta->changed |= IEEE80211_RC_SUPP_RATES_CHANGED; > spin_unlock_bh(&ar->data_lock); > > - ieee80211_queue_work(ath12k_ar_to_hw(ar), &arsta->update_wk); > + wiphy_work_queue(ath12k_ar_to_hw(ar)->wiphy, &arsta->update_wk); > } > > static void ath12k_mac_disable_peer_fixed_rate(void *data,