Message ID | 20240129065724.2310207-14-quic_rajkbhag@quicinc.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 2d3a7384b9c8ea0b640747176cc01af64cf722ec |
Delegated to: | Kalle Valo |
Headers | show |
Series | wifi: ath12k: QCN9274 dualmac bring up | expand |
On 1/28/2024 10:57 PM, Raj Kumar Bhagat wrote: > 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. Does this patch need a Fixes: tag? > > 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> > --- > drivers/net/wireless/ath/ath12k/core.c | 1 + > drivers/net/wireless/ath/ath12k/core.h | 5 +++++ > drivers/net/wireless/ath/ath12k/mhi.c | 1 + > drivers/net/wireless/ath/ath12k/qmi.c | 3 +++ > 4 files changed, 10 insertions(+) > > diff --git a/drivers/net/wireless/ath/ath12k/core.c b/drivers/net/wireless/ath/ath12k/core.c > index ca3777c684b3..0d4640ff8d6f 100644 > --- a/drivers/net/wireless/ath/ath12k/core.c > +++ b/drivers/net/wireless/ath/ath12k/core.c > @@ -1218,6 +1218,7 @@ struct ath12k_base *ath12k_core_alloc(struct device *dev, size_t priv_size, > ab->dev = dev; > ab->hif.bus = bus; > ab->qmi.num_radios = U8_MAX; > + ab->slo_capable = true; > > return ab; > > diff --git a/drivers/net/wireless/ath/ath12k/core.h b/drivers/net/wireless/ath/ath12k/core.h > index f0a319ea57c1..a984171e4a08 100644 > --- a/drivers/net/wireless/ath/ath12k/core.h > +++ b/drivers/net/wireless/ath/ath12k/core.h > @@ -842,6 +842,11 @@ struct ath12k_base { > > 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 *)); > }; > diff --git a/drivers/net/wireless/ath/ath12k/mhi.c b/drivers/net/wireless/ath/ath12k/mhi.c > index 50b9e44504f7..adb8c3ec1950 100644 > --- a/drivers/net/wireless/ath/ath12k/mhi.c > +++ b/drivers/net/wireless/ath/ath12k/mhi.c > @@ -385,6 +385,7 @@ int ath12k_mhi_register(struct ath12k_pci *ab_pci) > "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); > } > diff --git a/drivers/net/wireless/ath/ath12k/qmi.c b/drivers/net/wireless/ath/ath12k/qmi.c > index 0f0eaadc8418..92845ffff44a 100644 > --- a/drivers/net/wireless/ath/ath12k/qmi.c > +++ b/drivers/net/wireless/ath/ath12k/qmi.c > @@ -2124,6 +2124,9 @@ static void ath12k_qmi_phy_cap_send(struct ath12k_base *ab) > 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)
On 1/30/2024 7:22 AM, Jeff Johnson wrote: > On 1/28/2024 10:57 PM, Raj Kumar Bhagat wrote: >> 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. > > Does this patch need a Fixes: tag? > I do not think Fixes: tag is required, because Single-phy QCN9274 and WCN7850 works fine. The issue is only with Split-phy QCN9274, and it not yet part of upstream ath.git. >> >> 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> >> --- >> drivers/net/wireless/ath/ath12k/core.c | 1 + >> drivers/net/wireless/ath/ath12k/core.h | 5 +++++ >> drivers/net/wireless/ath/ath12k/mhi.c | 1 + >> drivers/net/wireless/ath/ath12k/qmi.c | 3 +++ >> 4 files changed, 10 insertions(+) >> >> diff --git a/drivers/net/wireless/ath/ath12k/core.c b/drivers/net/wireless/ath/ath12k/core.c >> index ca3777c684b3..0d4640ff8d6f 100644 >> --- a/drivers/net/wireless/ath/ath12k/core.c >> +++ b/drivers/net/wireless/ath/ath12k/core.c >> @@ -1218,6 +1218,7 @@ struct ath12k_base *ath12k_core_alloc(struct device *dev, size_t priv_size, >> ab->dev = dev; >> ab->hif.bus = bus; >> ab->qmi.num_radios = U8_MAX; >> + ab->slo_capable = true; >> >> return ab; >> >> diff --git a/drivers/net/wireless/ath/ath12k/core.h b/drivers/net/wireless/ath/ath12k/core.h >> index f0a319ea57c1..a984171e4a08 100644 >> --- a/drivers/net/wireless/ath/ath12k/core.h >> +++ b/drivers/net/wireless/ath/ath12k/core.h >> @@ -842,6 +842,11 @@ struct ath12k_base { >> >> 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 *)); >> }; >> diff --git a/drivers/net/wireless/ath/ath12k/mhi.c b/drivers/net/wireless/ath/ath12k/mhi.c >> index 50b9e44504f7..adb8c3ec1950 100644 >> --- a/drivers/net/wireless/ath/ath12k/mhi.c >> +++ b/drivers/net/wireless/ath/ath12k/mhi.c >> @@ -385,6 +385,7 @@ int ath12k_mhi_register(struct ath12k_pci *ab_pci) >> "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); >> } >> diff --git a/drivers/net/wireless/ath/ath12k/qmi.c b/drivers/net/wireless/ath/ath12k/qmi.c >> index 0f0eaadc8418..92845ffff44a 100644 >> --- a/drivers/net/wireless/ath/ath12k/qmi.c >> +++ b/drivers/net/wireless/ath/ath12k/qmi.c >> @@ -2124,6 +2124,9 @@ static void ath12k_qmi_phy_cap_send(struct ath12k_base *ab) >> 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) >
On 1/28/2024 10:57 PM, Raj Kumar Bhagat wrote: > 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>
diff --git a/drivers/net/wireless/ath/ath12k/core.c b/drivers/net/wireless/ath/ath12k/core.c index ca3777c684b3..0d4640ff8d6f 100644 --- a/drivers/net/wireless/ath/ath12k/core.c +++ b/drivers/net/wireless/ath/ath12k/core.c @@ -1218,6 +1218,7 @@ struct ath12k_base *ath12k_core_alloc(struct device *dev, size_t priv_size, ab->dev = dev; ab->hif.bus = bus; ab->qmi.num_radios = U8_MAX; + ab->slo_capable = true; return ab; diff --git a/drivers/net/wireless/ath/ath12k/core.h b/drivers/net/wireless/ath/ath12k/core.h index f0a319ea57c1..a984171e4a08 100644 --- a/drivers/net/wireless/ath/ath12k/core.h +++ b/drivers/net/wireless/ath/ath12k/core.h @@ -842,6 +842,11 @@ struct ath12k_base { 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 *)); }; diff --git a/drivers/net/wireless/ath/ath12k/mhi.c b/drivers/net/wireless/ath/ath12k/mhi.c index 50b9e44504f7..adb8c3ec1950 100644 --- a/drivers/net/wireless/ath/ath12k/mhi.c +++ b/drivers/net/wireless/ath/ath12k/mhi.c @@ -385,6 +385,7 @@ int ath12k_mhi_register(struct ath12k_pci *ab_pci) "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); } diff --git a/drivers/net/wireless/ath/ath12k/qmi.c b/drivers/net/wireless/ath/ath12k/qmi.c index 0f0eaadc8418..92845ffff44a 100644 --- a/drivers/net/wireless/ath/ath12k/qmi.c +++ b/drivers/net/wireless/ath/ath12k/qmi.c @@ -2124,6 +2124,9 @@ static void ath12k_qmi_phy_cap_send(struct ath12k_base *ab) 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)
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> --- drivers/net/wireless/ath/ath12k/core.c | 1 + drivers/net/wireless/ath/ath12k/core.h | 5 +++++ drivers/net/wireless/ath/ath12k/mhi.c | 1 + drivers/net/wireless/ath/ath12k/qmi.c | 3 +++ 4 files changed, 10 insertions(+)