Ryder Lee <ryder.lee@xxxxxxxxxxxx> 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@xxxxxxxxxxxx> > 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