wifi: ath12k: extend the link capable flag
Link capability categorized as Single Link Operation (SLO) and Multi Link Operation (MLO). - Intra-device SLO/MLO refers to links present within a device - Inter-device SLO/MLO refers to links present across multiple devices Currently, driver uses a boolean variable to represent intra-device SLO/MLO capability. To accommodate inter-device SLO/MLO capabilities within the same variable, modify the existing variable name and type. Define a new enumeration for the link capabilities to accommodate both intra-device and inter-device scenarios. Populate the enum based on the supported capabilities. Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.1.1-00188-QCAHKSWPL_SILICONZ-1 Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com> Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com> Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com> Link: https://msgid.link/20240403042056.1504209-2-quic_periyasa@quicinc.com
This commit is contained in:
parent
231a4c893c
commit
58e8ecda69
@ -1232,7 +1232,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;
|
||||
ab->mlo_capable_flags = ATH12K_INTRA_DEVICE_MLO_SUPPORT;
|
||||
|
||||
return ab;
|
||||
|
||||
|
@ -695,6 +695,21 @@ struct ath12k_soc_dp_stats {
|
||||
struct ath12k_soc_dp_tx_err_stats tx_err;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ath12k_link_capable_flags - link capable flags
|
||||
*
|
||||
* Single/Multi link capability information
|
||||
*
|
||||
* @ATH12K_INTRA_DEVICE_MLO_SUPPORT: SLO/MLO form between the radio, where all
|
||||
* the links (radios) present within a device.
|
||||
* @ATH12K_INTER_DEVICE_MLO_SUPPORT: SLO/MLO form between the radio, where all
|
||||
* the links (radios) present across the devices.
|
||||
*/
|
||||
enum ath12k_link_capable_flags {
|
||||
ATH12K_INTRA_DEVICE_MLO_SUPPORT = BIT(0),
|
||||
ATH12K_INTER_DEVICE_MLO_SUPPORT = BIT(1),
|
||||
};
|
||||
|
||||
/* Master structure to hold the hw data which may be used in core module */
|
||||
struct ath12k_base {
|
||||
enum ath12k_hw_rev hw_rev;
|
||||
@ -853,10 +868,12 @@ 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).
|
||||
/* mlo_capable_flags denotes the single/multi link operation
|
||||
* capabilities of the Device.
|
||||
*
|
||||
* See enum ath12k_link_capable_flags
|
||||
*/
|
||||
bool slo_capable;
|
||||
u8 mlo_capable_flags;
|
||||
|
||||
/* must be last */
|
||||
u8 drv_priv[] __aligned(sizeof(void *));
|
||||
|
@ -385,7 +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;
|
||||
ab->mlo_capable_flags = 0;
|
||||
ath12k_dbg(ab, ATH12K_DBG_BOOT,
|
||||
"dualmac fw selected for board id: %x\n", board_id);
|
||||
}
|
||||
|
@ -2124,7 +2124,7 @@ static void ath12k_qmi_phy_cap_send(struct ath12k_base *ab)
|
||||
struct qmi_txn txn;
|
||||
int ret;
|
||||
|
||||
if (!ab->slo_capable)
|
||||
if (!ab->mlo_capable_flags)
|
||||
goto out;
|
||||
|
||||
ret = qmi_txn_init(&ab->qmi.handle, &txn,
|
||||
|
Loading…
Reference in New Issue
Block a user