static void mt76_sta_rate_tbl_update(struct ieee80211_hw *hw, struct ieee80211_vif *vif, struct ieee80211_sta *sta) { struct mt76_dev *dev = hw->priv; struct mt76_sta *msta = (struct mt76_sta *) sta->drv_priv; struct ieee80211_sta_rates *rates = rcu_dereference(sta->rates); struct ieee80211_tx_rate rate = {}; if (!rates) return; rate.idx = rates->rate[0].idx; rate.flags = rates->rate[0].flags; mt76_mac_wcid_set_rate(dev, &msta->wcid, &rate); }
static void mt76_sta_rate_tbl_update(struct ieee80211_hw *hw, struct ieee80211_vif *vif, struct ieee80211_sta *sta) { struct mt7601u_dev *dev = hw->priv; struct mt76_sta *msta = (struct mt76_sta *) sta->drv_priv; struct ieee80211_sta_rates *rates; struct ieee80211_tx_rate rate = {}; rcu_read_lock(); rates = rcu_dereference(sta->rates); if (!rates) goto out; rate.idx = rates->rate[0].idx; rate.flags = rates->rate[0].flags; mt76_mac_wcid_set_rate(dev, &msta->wcid, &rate); out: rcu_read_unlock(); }