[PATCH] wifi: mt76: mt7915: enable BSS_CHANGED_MU_GROUPS support

Kalle Valo kvalo at kernel.org
Wed Aug 2 21:58:07 PDT 2023


Ryder Lee <ryder.lee at mediatek.com> writes:

> The Group ID Management frame is an Action frame of category VHT.
> It is transmitted by the AP to assign or change the user position
> of a STA for one or more group IDs.
>
> Also, sniffer can use a given group id to monitor STA that belongs
> to that group.
>
> Notify underlying driver of changes via BSS_CHANGED_MU_GROUPS.
>
> Signed-off-by: Ryder Lee <ryder.lee at mediatek.com>
> Change-Id: I3d2f5508a2b6eb7c929c3997c31a9285713c8bea

No Change-Id, please.

> --- a/drivers/net/wireless/mediatek/mt76/mt7915/main.c
> +++ b/drivers/net/wireless/mediatek/mt76/mt7915/main.c
> @@ -593,6 +593,34 @@ mt7915_update_bss_color(struct ieee80211_hw *hw,
>  	}
>  }
>  
> +static void
> +mt7915_update_mu_group(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
> +		       struct ieee80211_bss_conf *info)
> +{
> +	struct mt7915_phy *phy = mt7915_hw_phy(hw);
> +	struct mt7915_dev *dev = mt7915_hw_dev(hw);
> +	u8 i, band = phy->mt76->band_idx;
> +	u32 *mu;
> +
> +	mu = (u32 *)info->mu_group.membership;

Is this safe on big endian?

> +	for (i = 0; i < WLAN_MEMBERSHIP_LEN / sizeof(*mu); i++) {
> +		if (is_mt7916(&dev->mt76))
> +			mt76_wr(dev, MT_WF_PHY_RX_GID_TAB_VLD_MT7916(band, i),
> +				mu[i]);
> +		else
> +			mt76_wr(dev, MT_WF_PHY_RX_GID_TAB_VLD(band, i), mu[i]);
> +	}
> +
> +	mu = (u32 *)info->mu_group.position;

And this?

-- 
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches



More information about the Linux-mediatek mailing list