All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
From: Baochen Qiang <quic_bqiang@quicinc.com>
To: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>,
	<ath12k@lists.infradead.org>
Cc: <linux-wireless@vger.kernel.org>
Subject: Re: [PATCH 6/6] wifi: ath12k: support SMPS configuration for 6 GHz
Date: Tue, 26 Mar 2024 11:38:00 +0800	[thread overview]
Message-ID: <2c7739bd-09d4-4e0d-ab8c-32e8d2d030b8@quicinc.com> (raw)
In-Reply-To: <20240325212304.28241-7-quic_pradeepc@quicinc.com>



On 3/26/2024 5:23 AM, Pradeep Kumar Chitrapu wrote:
> Parse SMPS configuration from IEs and configure. Without this,
> SMPS is not enabled for 6 GHz band.
> 
> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1
> 
> Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
> ---
>   drivers/net/wireless/ath/ath12k/mac.c | 25 +++++++++++++++++--------
>   1 file changed, 17 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/net/wireless/ath/ath12k/mac.c b/drivers/net/wireless/ath/ath12k/mac.c
> index b4114dd22bf0..433b8be74997 100644
> --- a/drivers/net/wireless/ath/ath12k/mac.c
> +++ b/drivers/net/wireless/ath/ath12k/mac.c
> @@ -1964,12 +1964,17 @@ static void ath12k_peer_assoc_h_he_6ghz(struct ath12k *ar,
>   }
>   
>   static inline int ath12k_get_smps_from_capa(const struct ieee80211_sta_ht_cap *ht_cap,
> +					    const struct ieee80211_he_6ghz_capa *he_6ghz_capa,
>   					    int *smps)
>   {
> -	if (!ht_cap->ht_supported)
> +	if (!ht_cap->ht_supported && !he_6ghz_capa->capa)
>   		return -EOPNOTSUPP;
>   
> -	*smps = u16_get_bits(ht_cap->cap, IEEE80211_HT_CAP_SM_PS);
> +	if (ht_cap->ht_supported)
> +		*smps = u16_get_bits(ht_cap->cap, IEEE80211_HT_CAP_SM_PS);
> +	else
> +		*smps = le16_get_bits(he_6ghz_capa->capa,
> +				      IEEE80211_HE_6GHZ_CAP_SM_PS);
>   
>   	if (*smps >= ARRAY_SIZE(ath12k_smps_map))
>   		return -EINVAL;
> @@ -1980,10 +1985,11 @@ static inline int ath12k_get_smps_from_capa(const struct ieee80211_sta_ht_cap *h
>   static void ath12k_peer_assoc_h_smps(struct ieee80211_sta *sta,
>   				     struct ath12k_wmi_peer_assoc_arg *arg)
>   {
> +	const struct ieee80211_he_6ghz_capa *he_6ghz_capa = &sta->deflink.he_6ghz_capa;
>   	const struct ieee80211_sta_ht_cap *ht_cap = &sta->deflink.ht_cap;
>   	int smps;
>   
> -	if (ath12k_get_smps_from_capa(ht_cap, &smps))
> +	if (ath12k_get_smps_from_capa(ht_cap, he_6ghz_capa, &smps))
>   		return;
>   
>   	switch (smps) {
> @@ -2457,11 +2463,12 @@ static void ath12k_peer_assoc_prepare(struct ath12k *ar,
>   
>   static int ath12k_setup_peer_smps(struct ath12k *ar, struct ath12k_vif *arvif,
>   				  const u8 *addr,
> -				  const struct ieee80211_sta_ht_cap *ht_cap)
> +				  const struct ieee80211_sta_ht_cap *ht_cap,
> +				  const struct ieee80211_he_6ghz_capa *he_6ghz_capa)
>   {
>   	int smps, ret = 0;
>   
> -	ret = ath12k_get_smps_from_capa(ht_cap, &smps);
> +	ret = ath12k_get_smps_from_capa(ht_cap, he_6ghz_capa, &smps);
>   	if (ret < 0)
>   		return ret;
>   
> @@ -2514,7 +2521,8 @@ static void ath12k_bss_assoc(struct ath12k *ar,
>   	}
>   
>   	ret = ath12k_setup_peer_smps(ar, arvif, bss_conf->bssid,
> -				     &ap_sta->deflink.ht_cap);
> +				     &ap_sta->deflink.ht_cap,
> +				     &ap_sta->deflink.he_6ghz_capa);
>   	if (ret) {
>   		ath12k_warn(ar->ab, "failed to setup peer SMPS for vdev %d: %d\n",
>   			    arvif->vdev_id, ret);
> @@ -3677,7 +3685,8 @@ static int ath12k_station_assoc(struct ath12k *ar,
>   		return 0;
>   
>   	ret = ath12k_setup_peer_smps(ar, arvif, sta->addr,
> -				     &sta->deflink.ht_cap);
> +				     &sta->deflink.ht_cap,
> +				     &sta->deflink.he_6ghz_capa);
>   	if (ret) {
>   		ath12k_warn(ar->ab, "failed to setup peer SMPS for vdev %d: %d\n",
>   			    arvif->vdev_id, ret);
> @@ -8104,7 +8113,7 @@ static int ath12k_mac_hw_register(struct ath12k_hw *ah)
>   	 * for each band for a dual band capable radio. It will be tricky to
>   	 * handle it when the ht capability different for each band.
>   	 */
> -	if (ht_cap & WMI_HT_CAP_DYNAMIC_SMPS)
> +	if (ht_cap & WMI_HT_CAP_DYNAMIC_SMPS || ar->supports_6ghz)
WCN7850 supports 6 GHz but it does not support feature 
NL80211_FEATURE_DYNAMIC_SMPS. Enabling this for WCN7850 can lead to 
MU-MIMO test failures.

>   		wiphy->features |= NL80211_FEATURE_DYNAMIC_SMPS;
>   
>   	wiphy->max_scan_ssids = WLAN_SCAN_PARAMS_MAX_SSID;


  reply	other threads:[~2024-03-26  3:38 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-25 21:22 [PATCH 0/6] bug fixes and enhancements to 6 GHz band support Pradeep Kumar Chitrapu
2024-03-25 21:22 ` [PATCH 1/6] wifi: ath12k: add channel 2 into 6 GHz channel list Pradeep Kumar Chitrapu
2024-03-25 21:23 ` [PATCH 2/6] wifi: ath12k: Correct 6 GHz frequency value in rx status Pradeep Kumar Chitrapu
2024-03-25 21:23 ` [PATCH 3/6] wifi: ath12k: fix survey dump collection in 6 GHz Pradeep Kumar Chitrapu
2024-03-25 21:23 ` [PATCH 4/6] wifi: ath12k: add 6 GHz params in peer assoc command Pradeep Kumar Chitrapu
2024-03-29 17:48   ` Jeff Johnson
2024-03-25 21:23 ` [PATCH 5/6] wifi: ath12k: refactor smps configuration Pradeep Kumar Chitrapu
2024-03-25 21:23 ` [PATCH 6/6] wifi: ath12k: support SMPS configuration for 6 GHz Pradeep Kumar Chitrapu
2024-03-26  3:38   ` Baochen Qiang [this message]
2024-03-26 17:37     ` Pradeep Kumar Chitrapu
2024-03-29 17:54   ` Jeff Johnson
2024-03-26 15:23 ` [PATCH 0/6] bug fixes and enhancements to 6 GHz band support Kalle Valo
2024-03-26 17:38   ` Pradeep Kumar Chitrapu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2c7739bd-09d4-4e0d-ab8c-32e8d2d030b8@quicinc.com \
    --to=quic_bqiang@quicinc.com \
    --cc=ath12k@lists.infradead.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=quic_pradeepc@quicinc.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.