summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen <ben.rosenfeld@intel.com>2015-03-12 09:37:34 -0400
committerJohannes Berg <johannes.berg@intel.com>2015-03-17 11:02:42 +0100
commit2e54a6895e3e0cada8d194ace4f5baae643a073f (patch)
treef12959a49465da789bc6095c7ccbc08b28a67e3c
parentc23e31cf7b55e4d2e462b61dadb4c2d9538d3781 (diff)
downloadop-kernel-dev-2e54a6895e3e0cada8d194ace4f5baae643a073f.zip
op-kernel-dev-2e54a6895e3e0cada8d194ace4f5baae643a073f.tar.gz
cfg80211: Process all pending regulatory requests/hints
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 <ben.rosenfeld@intel.com> Signed-off-by: Ilan Peer <ilan.peer@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r--net/wireless/reg.c7
1 files changed, 7 insertions, 0 deletions
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 */
OpenPOWER on IntegriCloud