OSDN Git Service

wifi: iwlwifi: mvm: update iwl_mvm_tx_reclaim() for MLO
authorGregory Greenman <gregory.greenman@intel.com>
Tue, 28 Mar 2023 07:59:08 +0000 (10:59 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 30 Mar 2023 10:07:56 +0000 (12:07 +0200)
vif->bss_conf is used in this function only when TLC is not offloaded,
so not in MLO flow. Simplify the related "if" condition and call
iwl_mvm_hwrate_to_tx_status() only for driver rate scale.

Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20230328104949.c6826d5b5477.Ib56ec6025c0da3a381aaf88e71085ce9b96a9e65@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/tx.c

index 1737f2a..61a95ee 100644 (file)
@@ -1976,9 +1976,11 @@ static void iwl_mvm_tx_reclaim(struct iwl_mvm *mvm, int sta_id, int tid,
         * possible (i.e. first MPDU in the aggregation wasn't acked)
         * Still it's important to update RS about sent vs. acked.
         */
-       if (!is_flush && skb_queue_empty(&reclaimed_skbs)) {
+       if (!is_flush && skb_queue_empty(&reclaimed_skbs) &&
+           !iwl_mvm_has_tlc_offload(mvm)) {
                struct ieee80211_chanctx_conf *chanctx_conf = NULL;
 
+               /* no TLC offload, so non-MLD mode */
                if (mvmsta->vif)
                        chanctx_conf =
                                rcu_dereference(mvmsta->vif->bss_conf.chanctx_conf);
@@ -1989,11 +1991,8 @@ static void iwl_mvm_tx_reclaim(struct iwl_mvm *mvm, int sta_id, int tid,
                tx_info->band = chanctx_conf->def.chan->band;
                iwl_mvm_hwrate_to_tx_status(mvm->fw, rate, tx_info);
 
-               if (!iwl_mvm_has_tlc_offload(mvm)) {
-                       IWL_DEBUG_TX_REPLY(mvm,
-                                          "No reclaim. Update rs directly\n");
-                       iwl_mvm_rs_tx_status(mvm, sta, tid, tx_info, false);
-               }
+               IWL_DEBUG_TX_REPLY(mvm, "No reclaim. Update rs directly\n");
+               iwl_mvm_rs_tx_status(mvm, sta, tid, tx_info, false);
        }
 
 out: