On Tue, Apr 1, 2014 at 10:54 AM, Michal Kazior <michal.kazior@xxxxxxxxx> wrote: > On 1 April 2014 09:46, Eliad Peller <eliad@xxxxxxxxxx> wrote: >> On Tue, Apr 1, 2014 at 8:10 AM, Michal Kazior <michal.kazior@xxxxxxxxx> wrote: >>> On 31 March 2014 18:15, Eliad Peller <eliad@xxxxxxxxxx> wrote: >>>> On Mon, Mar 31, 2014 at 1:39 PM, Michal Kazior <michal.kazior@xxxxxxxxx> wrote: > > [...] > >>>>> +err_unassign: >>>>> + list_for_each_entry_continue_reverse(sdata, &ctx->reserved_vifs, >>>>> + reserved_chanctx_list) >>>>> + drv_unassign_vif_chanctx(local, sdata, ctx); >>>>> + ieee80211_del_chanctx(local, new_ctx); >>>>> +err_revert: >>>>> + kfree_rcu(new_ctx, rcu_head); >>>>> + WARN_ON(ieee80211_add_chanctx(local, ctx)); >>>>> + list_add_rcu(&ctx->list, &local->chanctx_list); >>>>> + list_for_each_entry(sdata, &ctx->reserved_vifs, reserved_chanctx_list) { >>>>> + sdata->radar_required = sdata->reserved_radar_required; >>>>> + rcu_assign_pointer(sdata->vif.chanctx_conf, &ctx->conf); >>>>> + WARN_ON(drv_assign_vif_chanctx(local, sdata, ctx)); >>>>> + } >>>> seems like the list_for_each_entry should actually be under err_unassign? >>> >>> No. This is correct. The err_unassign is used to bail out if any >>> drv_assign_vif_chanctx fails mid-way. We want to unassign only those >>> vif-chanctx we only managed to assign. >>> >> sure. i failed to explain - i'm referring only to the radar_required >> swapping - it seems to happen only later. > > You mean to split the list_for_each_entry from err_revert into 2 > parts: one that reverts the radar_required swapping and the other one > re-assigning vif-chanctx? I'm not really sure if that's necessary? The > `ctx` (old chanctx) should still be configured as it was wrt radar > detection. Or is there something that I'm missing? > ctx is correct, but sdata->radar_required doesn't seem to derive its value from it. i mean that you should either split the list_for_each_entry as you suggested, or move the radar_enabled swapping loop before the ieee80211_add_chanctx() call. Eliad. -- 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