On Fri, 2022-12-02 at 10:35 -0800, Muna Sinada wrote: > Handle RU Puncturing information received from user space. > RU Puncturing bitmap is initially received during > ieee80211_change_iface() and stored. During AP chanwidth setting, > the bitmap is validated. In addition driver is notified of new bitmap > value. "initially" is a bit of a problem, right? > @@ -213,6 +213,12 @@ static int ieee80211_change_iface(struct wiphy *wiphy, > struct sta_info *sta; > int ret; > > + sdata->vif.bss_conf.ru_punct_bitmap = params->ru_punct_bitmap; > + sdata->vif.bss_conf.ru_punct_bitmap_supp_he = params->ru_punct_bitmap_supp_he; I mean this can happen at any point in time due to the way you've wired it up in nl80211 (which I'm not happy about), and then ... it just gets ignored. > + if (!sdata->vif.bss_conf.ru_punct_bitmap) > + sdata_dbg(sdata, "RU Puncturing Bitmap was not set by user\n"); > + ? > @@ -1251,6 +1257,8 @@ static int ieee80211_start_ap(struct wiphy *wiphy, struct net_device *dev, > prev_beacon_int = link_conf->beacon_int; > link_conf->beacon_int = params->beacon_interval; > > + sdata->vif.bss_conf.ru_punct_bitmap = dev->ieee80211_ptr->ru_punct_bitmap; Why grab only one of them here? In fact why grab them at all? I think you really need to work on the API here. Also this completely ignores links ... so it's wrong for that too. Must use link_conf->... johannes