u8 reserved[3];
 } __packed; /* RLC_CONFIG_CMD_API_S_VER_2 */
 
+#define IWL_MAX_BAID_OLD       16 /* MAX_IMMEDIATE_BA_API_D_VER_2 */
+#define IWL_MAX_BAID           32 /* MAX_IMMEDIATE_BA_API_D_VER_3 */
+
 /**
  * enum iwl_rx_baid_action - BAID allocation/config action
  * @IWL_RX_BAID_ACTION_ADD: add a new BAID session
 
        return ret;
 }
 
-#define IWL_MAX_RX_BA_SESSIONS 16
-
 static void iwl_mvm_sync_rxq_del_ba(struct iwl_mvm *mvm, u8 baid)
 {
        struct iwl_mvm_delba_data notif = {
        struct iwl_mvm_sta *mvm_sta = iwl_mvm_sta_from_mac80211(sta);
        struct iwl_mvm_baid_data *baid_data = NULL;
        int ret, baid;
+       u32 max_ba_id_sessions = iwl_mvm_has_new_tx_api(mvm) ? IWL_MAX_BAID :
+                                                              IWL_MAX_BAID_OLD;
 
        lockdep_assert_held(&mvm->mutex);
 
-       if (start && mvm->rx_ba_sessions >= IWL_MAX_RX_BA_SESSIONS) {
+       if (start && mvm->rx_ba_sessions >= max_ba_id_sessions) {
                IWL_WARN(mvm, "Not enough RX BA SESSIONS\n");
                return -ENOSPC;
        }