QMI PHY capability learn is used to get PHY count information to
support single/multi link operation (SLO/MLO) configuration. The
QCN9274 dualmac firmware currently do not support SLO/MLO, if two
PHYs are within the same chip. Due to this firmware crashes in
split-phy QCN9274, while bringing up AP with MLO parameter enabled
in QMI host capability request message.
The QMI PHY capability learn is not required for split-phy QCN9274,
if SLO/MLO is not supported within the same chip. Hence, disable QMI
PHY capability learn support in split-phy QCN9274.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.1.1-00188-QCAHKSWPL_SILICONZ-1
Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
Signed-off-by: Raj Kumar Bhagat <quic_rajkbhag@quicinc.com>
Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://msgid.link/20240129065724.2310207-14-quic_rajkbhag@quicinc.com
        ab->dev = dev;
        ab->hif.bus = bus;
        ab->qmi.num_radios = U8_MAX;
+       ab->slo_capable = true;
 
        return ab;
 
 
 
        const struct hal_rx_ops *hal_rx_ops;
 
+       /* slo_capable denotes if the single/multi link operation
+        * is supported within the same chip (SoC).
+        */
+       bool slo_capable;
+
        /* must be last */
        u8 drv_priv[] __aligned(sizeof(void *));
 };
 
                                   "failed to read board id\n");
                } else if (board_id & OTP_VALID_DUALMAC_BOARD_ID_MASK) {
                        dualmac = true;
+                       ab->slo_capable = false;
                        ath12k_dbg(ab, ATH12K_DBG_BOOT,
                                   "dualmac fw selected for board id: %x\n", board_id);
                }
 
        struct qmi_txn txn;
        int ret;
 
+       if (!ab->slo_capable)
+               goto out;
+
        ret = qmi_txn_init(&ab->qmi.handle, &txn,
                           qmi_wlanfw_phy_cap_resp_msg_v01_ei, &resp);
        if (ret < 0)