]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: ath12k: rename mlo_capable_flags to single_chip_mlo_supp
authorAditya Kumar Singh <quic_adisi@quicinc.com>
Wed, 4 Dec 2024 16:32:11 +0000 (18:32 +0200)
committerJeff Johnson <jeff.johnson@oss.qualcomm.com>
Thu, 5 Dec 2024 22:33:50 +0000 (14:33 -0800)
At present, the mlo_capable_flags in ath12k_base is used to indicate whether
the chip supports inter (QCN9274) or intra (WCN7850) chip MLO. However, it’s
possible that the chip supports neither, especially with older firmware
versions. Additionally, if intra chip MLO is not supported, inter chip MLO will
also be non-functional. Therefore, having two separate flags for this is
unnecessary.

Therefore, rename this flag to single_chip_mlo_supp. At the same time convert
it into a bool data type. Also, get rid of the enums defined earlier.

For the QCN9274 family of chipsets, this will be set only when firmware
advertises the support during the QMI exchange.

For the WCN7850 family of chipsets, since the event is not supported,
assumption is made that single chip MLO is supported.

Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-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: Aditya Kumar Singh <quic_adisi@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://patch.msgid.link/20241204163216.433795-3-kvalo@kernel.org
Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
drivers/net/wireless/ath/ath12k/core.c
drivers/net/wireless/ath/ath12k/core.h
drivers/net/wireless/ath/ath12k/qmi.c

index 4da147f7bfac6656b4adb90a16b39b73c690e846..568c9b6e2c1ceb9d1363afa5ae792eb0f299a3a8 100644 (file)
@@ -1325,7 +1325,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->mlo_capable_flags = ATH12K_INTRA_DEVICE_MLO_SUPPORT;
+       ab->single_chip_mlo_supp = false;
 
        /* Device index used to identify the devices in a group.
         *
index 9ddced140056c4da4624c1e9a2447b2c136d5d42..d93ba844f61da89bd00f543ac0353efd5e5f4378 100644 (file)
@@ -816,21 +816,6 @@ 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;
@@ -996,12 +981,8 @@ struct ath12k_base {
 
        const struct hal_rx_ops *hal_rx_ops;
 
-       /* mlo_capable_flags denotes the single/multi link operation
-        * capabilities of the Device.
-        *
-        * See enum ath12k_link_capable_flags
-        */
-       u8 mlo_capable_flags;
+       /* Denotes the whether MLO is possible within the chip */
+       bool single_chip_mlo_supp;
 
        struct completion restart_completed;
 
index 20382b751829e5bbc6ef74e971cb5bad465649d9..efcf2dfac4ac9741b55a1c668c775300accd0a93 100644 (file)
@@ -2023,14 +2023,14 @@ static void ath12k_host_cap_parse_mlo(struct ath12k_base *ab,
        u8 hw_link_id = 0;
        int i;
 
-       if (!(ab->mlo_capable_flags & ATH12K_INTRA_DEVICE_MLO_SUPPORT)) {
+       if (!ab->single_chip_mlo_supp) {
                ath12k_dbg(ab, ATH12K_DBG_QMI,
                           "intra device MLO is disabled hence skip QMI MLO cap");
                return;
        }
 
        if (!ab->qmi.num_radios || ab->qmi.num_radios == U8_MAX) {
-               ab->mlo_capable_flags = 0;
+               ab->single_chip_mlo_supp = false;
 
                ath12k_dbg(ab, ATH12K_DBG_QMI,
                           "skip QMI MLO cap due to invalid num_radio %d\n",
@@ -2176,12 +2176,9 @@ static void ath12k_qmi_phy_cap_send(struct ath12k_base *ab)
                goto out;
        }
 
-       if (resp.single_chip_mlo_support_valid) {
-               if (resp.single_chip_mlo_support)
-                       ab->mlo_capable_flags |= ATH12K_INTRA_DEVICE_MLO_SUPPORT;
-               else
-                       ab->mlo_capable_flags &= ~ATH12K_INTRA_DEVICE_MLO_SUPPORT;
-       }
+       if (resp.single_chip_mlo_support_valid &&
+           resp.single_chip_mlo_support)
+               ab->single_chip_mlo_supp = true;
 
        if (!resp.num_phy_valid) {
                ret = -ENODATA;