2015-03-12 19:35:20

by Ilan Peer

[permalink] [raw]
Subject: [PATCH] cfg80211: Process all pending regulatory requests/hints

From: Ben <[email protected]>

It is possible that there are several regulatory requests
pending, but the processing of the last one does not call
CRDA, and thus the other requests are not handled.

Fix this by rescheduling the work until all requests have been
processed.

Signed-off-by: Ben Rosenfeld <[email protected]>
Signed-off-by: Ilan Peer <[email protected]>
---
net/wireless/reg.c | 7 +++++++
1 file changed, 7 insertions(+)

diff --git a/net/wireless/reg.c b/net/wireless/reg.c
index d867103..8c6cf52 100644
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -2159,6 +2159,13 @@ static void reg_process_pending_hints(void)
}

reg_process_hint(reg_request);
+
+ lr = get_last_request();
+
+ spin_lock(&reg_requests_lock);
+ if (!list_empty(&reg_requests_list) && lr && lr->processed)
+ schedule_work(&reg_work);
+ spin_unlock(&reg_requests_lock);
}

/* Processes beacon hints -- this has nothing to do with country IEs */
--
1.8.3.2



2015-03-17 10:03:16

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] cfg80211: Process all pending regulatory requests/hints

On Thu, 2015-03-12 at 09:37 -0400, Ilan Peer wrote:
> From: Ben <[email protected]>
>
> It is possible that there are several regulatory requests
> pending, but the processing of the last one does not call
> CRDA, and thus the other requests are not handled.
>
> Fix this by rescheduling the work until all requests have been
> processed.

Applied.

johannes