From 9bb66b4d1f61695045164b634da1b05ab3189260 Mon Sep 17 00:00:00 2001 From: Pradeep Kumar Chitrapu Date: Wed, 20 Nov 2019 15:48:17 -0800 Subject: [PATCH] ath11k: pass HE operation params to firmware --- drivers/net/wireless/ath/ath11k/mac.c | 18 +++++++++++++++++- drivers/net/wireless/ath/ath11k/wmi.h | 1 + include/net/cfg80211.h | 1 + net/mac80211/cfg.c | 4 ++++ net/wireless/nl80211.c | 4 ++++ 5 files changed, 27 insertions(+), 1 deletion(-) --- a/drivers/net/wireless/ath/ath11k/mac.c +++ b/drivers/net/wireless/ath/ath11k/mac.c @@ -2326,6 +2326,21 @@ static void ath11k_mac_op_bss_info_chang if (info->enable_beacon) ath11k_mac_set_he_txbf_conf(arvif); ath11k_control_beaconing(arvif, info); + + param_id = WMI_VDEV_PARAM_HEOPS_0_31; + ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, + param_id, + le32_to_cpu(vif->bss_conf.he_operation.he_oper_params)); + + if (ret) + ath11k_warn(ar->ab, "Failed to set he oper params %x for VDEV %d: %i\n", + le32_to_cpu(vif->bss_conf.he_operation.he_oper_params), + arvif->vdev_id, ret); + else + ath11k_dbg(ar->ab, ATH11K_DBG_MAC, + "HE OPER PARAMS: %x set for VDEV: %d\n", + le32_to_cpu(vif->bss_conf.he_operation.he_oper_params), + arvif->vdev_id); } if (changed & BSS_CHANGED_ERP_CTS_PROT) { --- a/drivers/net/wireless/ath/ath11k/wmi.h +++ b/drivers/net/wireless/ath/ath11k/wmi.h @@ -1024,6 +1024,7 @@ enum wmi_tlv_vdev_param { WMI_VDEV_PARAM_BSS_COLOR, WMI_VDEV_PARAM_SET_HEMU_MODE, WMI_VDEV_PARAM_TX_OFDMA_CPLEN, + WMI_VDEV_PARAM_HEOPS_0_31 = 0x8003, }; enum wmi_tlv_peer_flags { --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c @@ -1026,6 +1026,10 @@ static int ieee80211_start_ap(struct wip sizeof(*params->he_cap)); } + if (params->he_oper) + memcpy(&sdata->vif.bss_conf.he_operation, params->he_oper, + sizeof(struct ieee80211_he_operation)); + mutex_lock(&local->mtx); err = ieee80211_vif_use_channel(sdata, ¶ms->chandef, IEEE80211_CHANCTX_SHARED);