cfg80211: add debug prints for when we ignore regulatory hints
authorLuis R. Rodriguez <lrodriguez@atheros.com>
Thu, 21 Oct 2010 13:47:03 +0000 (19:17 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 15 Nov 2010 18:24:12 +0000 (13:24 -0500)
This can help with debugging issues. You will only see
these with CONFIG_CFG80211_REG_DEBUG enabled.

Cc: Easwar Krishnan <easwar.krishnan@atheros.com>
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: Senthil Balasubramanian <senthilkumar@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/wireless/reg.c

index 8ab65f2afe70dcb22005925af4e77620e148c03f..7bff1c1d6c8fddcb06ddadee9c631d7a68e44345 100644 (file)
@@ -711,6 +711,25 @@ int freq_reg_info(struct wiphy *wiphy,
 }
 EXPORT_SYMBOL(freq_reg_info);
 
+#ifdef CONFIG_CFG80211_REG_DEBUG
+static const char *reg_initiator_name(enum nl80211_reg_initiator initiator)
+{
+       switch (initiator) {
+       case NL80211_REGDOM_SET_BY_CORE:
+               return "Set by core";
+       case NL80211_REGDOM_SET_BY_USER:
+               return "Set by user";
+       case NL80211_REGDOM_SET_BY_DRIVER:
+               return "Set by driver";
+       case NL80211_REGDOM_SET_BY_COUNTRY_IE:
+               return "Set by country IE";
+       default:
+               WARN_ON(1);
+               return "Set by bug";
+       }
+}
+#endif
+
 /*
  * Note that right now we assume the desired channel bandwidth
  * is always 20 MHz for each individual channel (HT40 uses 20 MHz
@@ -821,19 +840,36 @@ static void handle_band(struct wiphy *wiphy,
 static bool ignore_reg_update(struct wiphy *wiphy,
                              enum nl80211_reg_initiator initiator)
 {
-       if (!last_request)
+       if (!last_request) {
+               REG_DBG_PRINT("cfg80211: Ignoring regulatory request %s since "
+                             "last_request is not set\n",
+                             reg_initiator_name(initiator));
                return true;
+       }
+
        if (initiator == NL80211_REGDOM_SET_BY_CORE &&
-           wiphy->flags & WIPHY_FLAG_CUSTOM_REGULATORY)
+           wiphy->flags & WIPHY_FLAG_CUSTOM_REGULATORY) {
+               REG_DBG_PRINT("cfg80211: Ignoring regulatory request %s "
+                             "since the driver uses its own custom "
+                             "regulatory domain ",
+                             reg_initiator_name(initiator));
                return true;
+       }
+
        /*
         * wiphy->regd will be set once the device has its own
         * desired regulatory domain set
         */
        if (wiphy->flags & WIPHY_FLAG_STRICT_REGULATORY && !wiphy->regd &&
            initiator != NL80211_REGDOM_SET_BY_COUNTRY_IE &&
-           !is_world_regdom(last_request->alpha2))
+           !is_world_regdom(last_request->alpha2)) {
+               REG_DBG_PRINT("cfg80211: Ignoring regulatory request %s "
+                             "since the driver requires its own regulaotry "
+                             "domain to be set first",
+                             reg_initiator_name(initiator));
                return true;
+       }
+
        return false;
 }