lockdep_assert_held(&ag->mutex);
 
-       /* If more than one devices are grouped, then inter MLO
-        * functionality can work still independent of whether internally
-        * each device supports single_chip_mlo or not.
-        * Only when there is one device, then disable for WCN chipsets
-        * till the required driver implementation is in place.
-        */
        if (ag->num_devices == 1) {
                ab = ag->ab[0];
-
-               /* WCN chipsets does not advertise in firmware features
-                * hence skip checking
-                */
-               if (ab->hw_params->def_num_link)
+               /* QCN9274 firmware uses firmware IE for MLO advertisement */
+               if (ab->fw.fw_features_valid) {
+                       ag->mlo_capable =
+                               ath12k_fw_feature_supported(ab, ATH12K_FW_FEATURE_MLO);
                        return;
+               }
+
+               /* while WCN7850 firmware uses QMI single_chip_mlo_support bit */
+               ag->mlo_capable = ab->single_chip_mlo_support;
+               return;
        }
 
        ag->mlo_capable = true;
        ab->dev = dev;
        ab->hif.bus = bus;
        ab->qmi.num_radios = U8_MAX;
+       ab->single_chip_mlo_support = false;
 
        /* Device index used to identify the devices in a group.
         *
 
        struct ath12k_ftm_event_obj ftm_event_obj;
        bool hw_group_ref;
 
+       /* Denote whether MLO is possible within the device */
+       bool single_chip_mlo_support;
+
        /* must be last */
        u8 drv_priv[] __aligned(sizeof(void *));
 };
 
                goto out;
        }
 
+       if (resp.single_chip_mlo_support_valid && resp.single_chip_mlo_support)
+               ab->single_chip_mlo_support = true;
+
        if (!resp.num_phy_valid) {
                ret = -ENODATA;
                goto out;
        ab->qmi.num_radios = resp.num_phy;
 
        ath12k_dbg(ab, ATH12K_DBG_QMI,
-                  "phy capability resp valid %d num_phy %d valid %d board_id %d\n",
+                  "phy capability resp valid %d single_chip_mlo_support %d valid %d num_phy %d valid %d board_id %d\n",
+                  resp.single_chip_mlo_support_valid, resp.single_chip_mlo_support,
                   resp.num_phy_valid, resp.num_phy,
                   resp.board_id_valid, resp.board_id);