]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
wifi: ath12k: configure MBSSID parameters in AP mode
authorAloka Dixit <quic_alokad@quicinc.com>
Wed, 8 May 2024 20:29:08 +0000 (13:29 -0700)
committerKalle Valo <quic_kvalo@quicinc.com>
Thu, 16 May 2024 08:15:03 +0000 (11:15 +0300)
Include MBSSID parameters in WMI vdev up operation.

Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1

Signed-off-by: Aloka Dixit <quic_alokad@quicinc.com>
Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://msgid.link/20240508202912.11902-6-quic_alokad@quicinc.com
drivers/net/wireless/ath/ath12k/mac.c
drivers/net/wireless/ath/ath12k/wmi.c
drivers/net/wireless/ath/ath12k/wmi.h

index c6fa68aafdd82531c08cd3fc8e47add052c7de12..3f57acc16c4054b41b27a2d5cf6482db52eed92d 100644 (file)
@@ -1399,6 +1399,11 @@ static void ath12k_control_beaconing(struct ath12k_vif *arvif,
        params.vdev_id = arvif->vdev_id;
        params.aid = arvif->aid;
        params.bssid = arvif->bssid;
+       if (arvif->vif->mbssid_tx_vif) {
+               params.tx_bssid = ath12k_vif_to_arvif(arvif->vif->mbssid_tx_vif)->bssid;
+               params.nontx_profile_idx = info->bssid_index;
+               params.nontx_profile_cnt = 1 << info->bssid_indicator;
+       }
        ret = ath12k_wmi_vdev_up(arvif->ar, &params);
        if (ret) {
                ath12k_warn(ar->ab, "failed to bring up vdev %d: %i\n",
@@ -7199,6 +7204,7 @@ ath12k_mac_update_vif_chan(struct ath12k *ar,
 {
        struct ath12k_wmi_vdev_up_params params = {};
        struct ath12k_base *ab = ar->ab;
+       struct ieee80211_vif *vif;
        struct ath12k_vif *arvif;
        int ret;
        int i;
@@ -7241,7 +7247,8 @@ ath12k_mac_update_vif_chan(struct ath12k *ar,
        /* TODO: Update ar->rx_channel */
 
        for (i = 0; i < n_vifs; i++) {
-               arvif = ath12k_vif_to_arvif(vifs[i].vif);
+               vif = vifs[i].vif;
+               arvif = ath12k_vif_to_arvif(vif);
 
                if (WARN_ON(!arvif->is_started))
                        continue;
@@ -7278,9 +7285,15 @@ ath12k_mac_update_vif_chan(struct ath12k *ar,
                        ath12k_warn(ab, "failed to update bcn tmpl during csa: %d\n",
                                    ret);
 
+               memset(&params, 0, sizeof(params));
                params.vdev_id = arvif->vdev_id;
                params.aid = arvif->aid;
                params.bssid = arvif->bssid;
+               if (vif->mbssid_tx_vif) {
+                       params.tx_bssid = ath12k_vif_to_arvif(vif->mbssid_tx_vif)->bssid;
+                       params.nontx_profile_idx = vif->bss_conf.bssid_index;
+                       params.nontx_profile_cnt = 1 << vif->bss_conf.bssid_indicator;
+               }
                ret = ath12k_wmi_vdev_up(arvif->ar, &params);
                if (ret) {
                        ath12k_warn(ab, "failed to bring vdev up %d: %d\n",
index 6e73194a849e9d7ccf2d087f5118c8897481e86b..4d5b02caee137461c4504cd28af8db3f940b71b5 100644 (file)
@@ -1123,6 +1123,12 @@ int ath12k_wmi_vdev_up(struct ath12k *ar, struct ath12k_wmi_vdev_up_params *para
 
        ether_addr_copy(cmd->vdev_bssid.addr, params->bssid);
 
+       if (params->tx_bssid) {
+               ether_addr_copy(cmd->tx_vdev_bssid.addr, params->tx_bssid);
+               cmd->nontx_profile_idx = cpu_to_le32(params->nontx_profile_idx);
+               cmd->nontx_profile_cnt = cpu_to_le32(params->nontx_profile_cnt);
+       }
+
        ath12k_dbg(ar->ab, ATH12K_DBG_WMI,
                   "WMI mgmt vdev up id 0x%x assoc id %d bssid %pM\n",
                   params->vdev_id, params->aid, params->bssid);
index 12c6cfb943c881d32296a7b1149e93e936b57357..9b0166a5a575dd27a2d35de63ea0cad2f8bbb5bb 100644 (file)
@@ -2767,6 +2767,9 @@ struct ath12k_wmi_vdev_up_params {
        u32 vdev_id;
        u32 aid;
        const u8 *bssid;
+       const u8 *tx_bssid;
+       u32 nontx_profile_idx;
+       u32 nontx_profile_cnt;
 };
 
 struct wmi_vdev_up_cmd {