On Fri, Apr 1, 2011 at 1:17 AM, Johannes Berg <johannes@xxxxxxxxxxxxxxxx> wrote: > On Thu, 2011-03-31 at 16:29 -0700, Luis R. Rodriguez wrote: >> >> +static void reg_timeout_work(struct work_struct *work) >> +{ >> + Â Â REG_DBG_PRINT("Timeout while waiting for CRDA to reply," >> + Â Â Â Â Â Â Â Â Â "restoring regulatory settings"); >> + Â Â restore_regulatory_settings(true); >> +} > > We have a queue of requests but you're timing out only the last one. > Wouldn't that still get another one stuck on the queue? The queue will sit still without processing any queued up regulatory requests until the last_request was processed. The last_request will be restored to the world regulatory domain request if we timeout on a bogus request. There is however one issue here though and that is that I did not clear out the pending requests when restoring regulatory settings, and then add the pending stuff back on. > TBH, I don't quite understand why we have last _and_ a queue to start with. Well so the queue has the list of pending requests, the last_request is actually the last request that was processed, this is always non-null when after bootup and after restoring regulatory settings. I'll send a v3 with the changes I noted. Thanks for the review. Luis -- 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