[PATCH] wifi: mac80211: Fix SMPS action frame ht cap check
Jeff Johnson
quic_jjohnson at quicinc.com
Wed Dec 6 16:07:03 PST 2023
On 12/5/2023 6:47 PM, Allen Ye wrote:
> From: "Allen.Ye" <allen.ye at mediatek.com>
>
> Since there is no HT BSS in 6GHz, the HT Cap check would stop 6G HE/EHT
> BSS from processing the HT action frame for SM Power Save which can be
> also used in an HE BSS. Therefore, we remove the HT Cap check in 6GHz and
> add the HE check accordingly.
>
> Signed-off-by: Money.Wang <money.wang at mediatek.com>
> Signed-off-by: Allen.Ye <allen.ye at mediatek.com>
> ---
> net/mac80211/rx.c | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
> index 64352e4e6d00..f8cd14dc58ec 100644
> --- a/net/mac80211/rx.c
> +++ b/net/mac80211/rx.c
> @@ -3482,7 +3482,8 @@ ieee80211_rx_h_action(struct ieee80211_rx_data *rx)
> switch (mgmt->u.action.category) {
> case WLAN_CATEGORY_HT:
> /* reject HT action frames from stations not supporting HT */
> - if (!rx->link_sta->pub->ht_cap.ht_supported)
> + if (status->band != NL80211_BAND_6GHZ &&
> + !rx->link_sta->pub->ht_cap.ht_supported)
we had found the same issue and were preparing a patch that changed this to:
+ if (!rx->link_sta->pub->ht_cap.ht_supported &&
+ !rx->link_sta->pub->he_cap.has_he)
I see you added the has_he check below, but curious if it is better to
do it here to short circuit the tests that follow
> goto invalid;
>
> if (sdata->vif.type != NL80211_IFTYPE_STATION &&
> @@ -3502,6 +3503,12 @@ ieee80211_rx_h_action(struct ieee80211_rx_data *rx)
> enum ieee80211_smps_mode smps_mode;
> struct sta_opmode_info sta_opmode = {};
>
> + if (status->band == NL80211_BAND_6GHZ &&
> + rx->link_sta->pub->he_cap.has_he &&
> + !(rx->link_sta->pub->he_cap.he_cap_elem.mac_cap_info[5] &
> + IEEE80211_HE_MAC_CAP5_HE_DYNAMIC_SM_PS))
> + goto invalid;
> +
> if (sdata->vif.type != NL80211_IFTYPE_AP &&
> sdata->vif.type != NL80211_IFTYPE_AP_VLAN)
> goto handled;
More information about the Linux-mediatek
mailing list