On Wed, 2014-05-07 at 14:27 +0200, Michal Kazior wrote: > On 7 May 2014 14:13, Johannes Berg <johannes@xxxxxxxxxxxxxxxx> wrote: > > On Wed, 2014-05-07 at 15:08 +0300, Luca Coelho wrote: > > > >> I was thinking about the case where you you need to involve 3 contexts. > >> Let's say you have 2 vifs in the same context and after the switch you > >> need to split them into 2 new ones (for instance, if there is some > >> incompatibility in the new chandefs). > >> > >> With the generic transactions you could do: > >> - new chanctx2 > >> - new chanctx3 > >> - switch vif1 chanctx1->chanctx2 > >> - switch vif2 chanctx1->chanctx3 > >> - del chanctx1 > > > > This isn't an interesting case, because it means you have a spare, so > > you might as well do > > > > new chanctx3 > > switch vif2 chanctx1->chanctx3 > > switch_transaction(chanctx1, chanctx2, vif1) > > Don't you mean switch_chandef(chanctx1, chandef)? Or do you assume > chanctx2 was prepared earlier? Don't you need to remove chanctx1 then? > Oh, and the chanctx overcommit.. :-) I'm assuming "switch_transaction" is the API I proposed, except maybe modified to have multiple vifs. > I actually think Luca's example is a valid one as it shows the driver > can freely handle things internally, no? Although I don't see when it > would be required to make a transaction like that in real-world.. Yeah but do we want to make the API that complex? I don't see how Luca's example doesn't degenerate to the simpler APIs + the new "switch multiple vifs from one to another while possibly swapping those chanctxs" 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