diff mbox

[V2] cfg80211: Do not call CRDA when using internal regulatory database

Message ID 1390009167-4766-1-git-send-email-chaitanya.mgit@gmail.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Krishna Chaitanya Jan. 18, 2014, 1:39 a.m. UTC
When using internal regulatory data base kconfig option,
do not try to call crda. This completely defeats the 
purpose of enabling internal regulatory db.

Signed-off-by: Chaitanya T K <chaitanya.mgit@gmail.com>
---
V2: 
   Use Proper Error codes while returning
   Fix the call_crda if condition.
---
 net/wireless/reg.c |   29 +++++++++++++++--------------
 net/wireless/reg.c |   31 ++++++++++++++++---------------
 1 file changed, 16 insertions(+), 15 deletions(-)

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Johannes Berg Jan. 20, 2014, 10:50 a.m. UTC | #1
On Sat, 2014-01-18 at 07:09 +0530, Chaitanya T K wrote:
> When using internal regulatory data base kconfig option,
> do not try to call crda. This completely defeats the 
> purpose of enabling internal regulatory db.

I still think that this is a significant userspace API change, so I'm
not going to apply it. Find another solution.

johannes

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Krishna Chaitanya Jan. 21, 2014, 7:11 p.m. UTC | #2
On Mon, Jan 20, 2014 at 4:20 PM, Johannes Berg
<johannes@sipsolutions.net> wrote:
> On Sat, 2014-01-18 at 07:09 +0530, Chaitanya T K wrote:
>> When using internal regulatory data base kconfig option,
>> do not try to call crda. This completely defeats the
>> purpose of enabling internal regulatory db.
>
> I still think that this is a significant userspace API change, so I'm
> not going to apply it. Find another solution.
>
Well, only way i can think of is ignore the update from the CRDA
and go on with internal db.txt, but even this will have impact on
user. As internal regdb is rarely used,this is not really needed.

But the second fix which returns REG_IGNORE when call_crda
returns an error should be still taken. Probably !=0 check is still better .
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/net/wireless/reg.c b/net/wireless/reg.c
index 7d20d84..1f9e67d 100644
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -454,16 +454,16 @@  static void reg_regdb_search(struct work_struct *work)
 
 static DECLARE_WORK(reg_regdb_work, reg_regdb_search);
 
-static void reg_regdb_query(const char *alpha2)
+static int reg_regdb_query(const char *alpha2)
 {
 	struct reg_regdb_search_request *request;
 
 	if (!alpha2)
-		return;
+		return -EINVAL;
 
 	request = kzalloc(sizeof(struct reg_regdb_search_request), GFP_KERNEL);
 	if (!request)
-		return;
+		return -ENOMEM;
 
 	memcpy(request->alpha2, alpha2, 2);
 
@@ -472,6 +472,7 @@  static void reg_regdb_query(const char *alpha2)
 	mutex_unlock(&reg_regdb_search_mutex);
 
 	schedule_work(&reg_regdb_work);
+	return 0;
 }
 
 /* Feel free to add any other sanity checks here */
@@ -482,7 +483,15 @@  static void reg_regdb_size_check(void)
 }
 #else
 static inline void reg_regdb_size_check(void) {}
-static inline void reg_regdb_query(const char *alpha2) {}
+static inline int reg_regdb_query(const char *alpha2)
+{
+	if (!is_world_regdom((char *) alpha2))
+		pr_info("Calling CRDA for country: %c%c\n",
+			alpha2[0], alpha2[1]);
+	else
+		pr_info("Calling CRDA to update world regulatory domain\n");
+	return kobject_uevent(&reg_pdev->dev.kobj, KOBJ_CHANGE);
+}
 #endif /* CONFIG_CFG80211_INTERNAL_REGDB */
 
 /*
@@ -492,22 +501,14 @@  static inline void reg_regdb_query(const char *alpha2) {}
  */
 static int call_crda(const char *alpha2)
 {
-	if (!is_world_regdom((char *) alpha2))
-		pr_info("Calling CRDA for country: %c%c\n",
-			alpha2[0], alpha2[1]);
-	else
-		pr_info("Calling CRDA to update world regulatory domain\n");
-
-	/* query internal regulatory database (if it exists) */
-	reg_regdb_query(alpha2);
-
-	return kobject_uevent(&reg_pdev->dev.kobj, KOBJ_CHANGE);
+	/* query internal regulatory database/crda depending on config */
+	return reg_regdb_query(alpha2);
 }
 
 static enum reg_request_treatment
 reg_call_crda(struct regulatory_request *request)
 {
-	if (call_crda(request->alpha2))
+	if (call_crda(request->alpha2) < 0)
 		return REG_REQ_IGNORE;
 	return REG_REQ_OK;
 }