On Wed, 2014-05-07 at 10:51 +0200, Michal Kazior wrote: > On 7 May 2014 10:07, Johannes Berg <johannes@xxxxxxxxxxxxxxxx> wrote: > > On Wed, 2014-05-07 at 08:05 +0200, Michal Kazior wrote: > > > >> Hmm... Now that I think about the atomic swap - it actually becomes a > >> little bit of an issue in some cases. > >> > >> For one you might need to overcommit number of chanctx since swapping > >> requires both chanctx (old and new) to exist but that's the least of > >> the eproblem. If you have more than one interface you end up with > >> temporarily breaking interface combinations from driver point of view > >> while switching (first swap breaks it, last swap fixes it). Driver > >> won't know whether given swap is first/last unless we somehow pass it > >> through the switch_vif_chanctx(). IOW we actually need a "chanctx > >> transaction" (sort of a start-stop) that can batch up a couple of > >> chanctx switches for different vifs as an atomic op. > > > > Hmmm. Don't you already have that problem? Or you don't because you'd do > > > > for_each_affected_vif: unassign > > del chanctx [optional depending on reservation] > > add chanctx [ditto] > > for_each_affected_vif: assign > > > > right now? > > Correct - this is how my patch deals with this problem. This was also > the reason why I split the new_chanctx() into alloc_chanctx() and > add_chanctx(). Right, I had forgotten the overcommit thing... -- Luca. -- 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