On Fri, 2011-11-04 at 13:10 -0700, greearb@xxxxxxxxxxxxxxx wrote: > + * @NL80211_ATTR_DISABLE_HT: Force HT capable interfaces to disable > + * this feature. I can see this, but > + * @NL80211_ATTR_DISABLE_HT40: Disable HT-40 even if AP and hardware > + * support it. > + * @NL80211_ATTR_HT_CAPABILITY_MASK: Specify which bits of the HT_CAPs > + * to pay attention to. if you have the mask why do you still need the HT40? Isn't HT40 a flag in the mask? Or do you want this to affect TX/RX separately? You should spell that out more explicitly then. > --- a/net/wireless/core.c > +++ b/net/wireless/core.c > @@ -704,6 +704,9 @@ void wiphy_unregister(struct wiphy *wiphy) > flush_work(&rdev->scan_done_wk); > cancel_work_sync(&rdev->conn_work); > flush_work(&rdev->event_work); > + > + kfree(rdev->wiphy.ht_capa_mod_mask); > + rdev->wiphy.ht_capa_mod_mask = NULL; That doesn't seem right -- drivers should typically assign a static const variable to this pointer that can't be freed. > @@ -537,6 +539,12 @@ int __cfg80211_mlme_assoc(struct cfg80211_registered_device *rdev, > memcpy(&req.crypto, crypt, sizeof(req.crypto)); > req.use_mfp = use_mfp; > req.prev_bssid = prev_bssid; > + req.flags = assoc_flags; > + if (ht_capa) > + memcpy(&req.ht_capa, ht_capa, sizeof(req.ht_capa)); > + if (ht_capa_mask) > + memcpy(&req.ht_capa_mask, ht_capa_mask, > + sizeof(req.ht_capa_mask)); I think somewhere here you should mask this mask with the ht_capa_mod_mask. That way, you force drivers to advertise a correct ht_capa_mod_mask, if you don't do that we will certainly see drivers use more of ht_capa than contained in ht_capa_mod_mask. Probably should be a helper function since I think you might need it in more places. johannes -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html