Return-path: Received: from mga03.intel.com ([134.134.136.65]:44147 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756147AbbCLTfU (ORCPT ); Thu, 12 Mar 2015 15:35:20 -0400 From: Ilan Peer To: linux-wireless@vger.kernel.org Cc: mcgrof@suse.org, Ben , Ilan Peer Subject: [PATCH] cfg80211: Process all pending regulatory requests/hints Date: Thu, 12 Mar 2015 09:37:34 -0400 Message-Id: <1426167454-7070-1-git-send-email-ilan.peer@intel.com> (sfid-20150312_203539_613472_27D4FE32) Sender: linux-wireless-owner@vger.kernel.org List-ID: From: Ben 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 Signed-off-by: Ilan Peer --- 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(®_requests_lock); + if (!list_empty(®_requests_list) && lr && lr->processed) + schedule_work(®_work); + spin_unlock(®_requests_lock); } /* Processes beacon hints -- this has nothing to do with country IEs */ -- 1.8.3.2