On Thu, 2012-06-21 at 14:03 +0200, Michal Kazior wrote: > +++ b/include/net/mac80211.h > @@ -143,6 +143,41 @@ struct ieee80211_low_level_stats { > unsigned int dot11RTSSuccessCount; > }; > > + > +/** > + * enum ieee80211_chanctx_mode - channel context configuration mode > + * > + * @IEEE80211_CHANCTX_SHARED: channel context may be used by > + * multiple interfaces > + * @IEEE80211_CHANCTX_EXCLUSIVE: channel context can be used > + * only by a single interface. This can be used for example for > + * non-fixed channel IBSS. > + */ > +enum ieee80211_chanctx_mode { > + IEEE80211_CHANCTX_SHARED, > + IEEE80211_CHANCTX_EXCLUSIVE > +}; Does the driver ever care about this? It seems mostly internal to determine what's going on? > + * @chanctx_conf: channel context vif is bound to, may be NULL Maybe say "will be %NULL before the interface is assigned to a channel context" or so? > + INIT_LIST_HEAD(&ctx->interfaces); Is there really a need for this list? It seems only moderately less efficient to iterate all interfaces and filter by channel context, and that's probably easier to maintain? > +static void > +__ieee80211_vif_release_channel(struct ieee80211_sub_if_data *sdata) > +{ > + struct ieee80211_chanctx_conf *conf = sdata->vif.chanctx_conf; > + struct ieee80211_chanctx *ctx = > + container_of(conf, struct ieee80211_chanctx, conf); > + > + if (!conf) > + return; > + > + ieee80211_unassign_vif_chanctx(sdata, ctx); > + if (list_empty(&ctx->interfaces)) > + ieee80211_free_chanctx(ctx); > +} Ah, ok. So I guess there's a good use for the list at least here. 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