struct ieee80211_sta *sta, unsigned int tid)
 {
        struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta);
-       enum nl80211_band band = mvmsta->vif->bss_conf.chandef.chan->band;
        u8 ac = tid_to_mac80211_ac[tid];
+       enum nl80211_band band;
        unsigned int txf;
-       int lmac = iwl_mvm_get_lmac_id(mvm->fw, band);
+       unsigned int val;
+       int lmac;
 
        /* For HE redirect to trigger based fifos */
        if (sta->deflink.he_cap.has_he && !WARN_ON(!iwl_mvm_has_new_tx_api(mvm)))
         * We also want to have the start of the next packet inside the
         * fifo to be able to send bursts.
         */
-       return min_t(unsigned int, mvmsta->max_amsdu_len,
+       val = mvmsta->max_amsdu_len;
+
+       if (hweight16(sta->valid_links) <= 1) {
+               if (sta->valid_links) {
+                       struct ieee80211_bss_conf *link_conf;
+                       unsigned int link = ffs(sta->valid_links) - 1;
+
+                       rcu_read_lock();
+                       link_conf = rcu_dereference(mvmsta->vif->link_conf[link]);
+                       if (WARN_ON(!link_conf))
+                               band = NL80211_BAND_2GHZ;
+                       else
+                               band = link_conf->chandef.chan->band;
+                       rcu_read_unlock();
+               } else {
+                       band = mvmsta->vif->bss_conf.chandef.chan->band;
+               }
+
+               lmac = iwl_mvm_get_lmac_id(mvm->fw, band);
+       } else if (fw_has_capa(&mvm->fw->ucode_capa,
+                              IWL_UCODE_TLV_CAPA_CDB_SUPPORT)) {
+               /* for real MLO restrict to both LMACs if they exist */
+               lmac = IWL_LMAC_5G_INDEX;
+               val = min_t(unsigned int, val,
+                           mvm->fwrt.smem_cfg.lmac[lmac].txfifo_size[txf] - 256);
+               lmac = IWL_LMAC_24G_INDEX;
+       } else {
+               lmac = IWL_LMAC_24G_INDEX;
+       }
+
+       return min_t(unsigned int, val,
                     mvm->fwrt.smem_cfg.lmac[lmac].txfifo_size[txf] - 256);
 }