Commit 84edf47b authored by Aloka Dixit's avatar Aloka Dixit Committed by Kalle Valo
Browse files

wifi: ath12k: configure MBSSID parameters in AP mode



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: default avatarAloka Dixit <quic_alokad@quicinc.com>
Acked-by: default avatarJeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: default avatarKalle Valo <quic_kvalo@quicinc.com>
Link: https://msgid.link/20240508202912.11902-6-quic_alokad@quicinc.com
parent 51c47463
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -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",
+6 −0
Original line number Diff line number Diff line
@@ -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);
+3 −0
Original line number Diff line number Diff line
@@ -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 {