wifi: iwlwifi: dvm: clean up rs_get_rate() logic
The logic here is rather convoluted - we cannot get here with lq_sta being NULL as mac80211 will (no longer) call us like that, and since I removed the rate_control_send_low() call in this function there's no longer any point in setting priv_sta to NULL either. So the only thing that remains to check is if we have actually initialized our lq_sta->drv pointer, and exit if we didn't in which case we'll use the data mac80211 already set up for the low rate usage. Reviewed-by: Luciano Coelho <luciano.coelho@intel.com> Link: https://msgid.link/20240510170500.a4cdb41825eb.Id202bcc967c32829f70ab1412f8893b6eb7f78e2@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
@@ -2673,20 +2673,16 @@ static void rs_get_rate(void *priv_r, struct ieee80211_sta *sta, void *priv_sta,
|
||||
IWL_DEBUG_RATE_LIMIT(priv, "rate scale calculate new rate for skb\n");
|
||||
|
||||
/* Get max rate if user set max rate */
|
||||
if (lq_sta) {
|
||||
lq_sta->max_rate_idx = fls(txrc->rate_idx_mask) - 1;
|
||||
if ((sband->band == NL80211_BAND_5GHZ) &&
|
||||
(lq_sta->max_rate_idx != -1))
|
||||
lq_sta->max_rate_idx += IWL_FIRST_OFDM_RATE;
|
||||
if ((lq_sta->max_rate_idx < 0) ||
|
||||
(lq_sta->max_rate_idx >= IWL_RATE_COUNT))
|
||||
lq_sta->max_rate_idx = -1;
|
||||
}
|
||||
lq_sta->max_rate_idx = fls(txrc->rate_idx_mask) - 1;
|
||||
if (sband->band == NL80211_BAND_5GHZ && lq_sta->max_rate_idx != -1)
|
||||
lq_sta->max_rate_idx += IWL_FIRST_OFDM_RATE;
|
||||
if (lq_sta->max_rate_idx < 0 || lq_sta->max_rate_idx >= IWL_RATE_COUNT)
|
||||
lq_sta->max_rate_idx = -1;
|
||||
|
||||
/* Treat uninitialized rate scaling data same as non-existing. */
|
||||
if (lq_sta && !lq_sta->drv) {
|
||||
if (!lq_sta->drv) {
|
||||
IWL_DEBUG_RATE(priv, "Rate scaling not initialized yet.\n");
|
||||
priv_sta = NULL;
|
||||
/* mac80211 already set up the data for using low rates */
|
||||
return;
|
||||
}
|
||||
|
||||
rate_idx = lq_sta->last_txrate_idx;
|
||||
@@ -2756,7 +2752,6 @@ void iwl_rs_rate_init(struct iwl_priv *priv, struct ieee80211_sta *sta, u8 sta_i
|
||||
lq_sta = &sta_priv->lq_sta;
|
||||
sband = hw->wiphy->bands[conf->chandef.chan->band];
|
||||
|
||||
|
||||
lq_sta->lq.sta_id = sta_id;
|
||||
|
||||
for (j = 0; j < LQ_SIZE; j++)
|
||||
|
||||
Reference in New Issue
Block a user