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@xxxxxxxxx> --- 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(-) 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(®_regdb_search_mutex); schedule_work(®_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(®_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(®_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; } -- 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