2010-10-21 13:47:36

by Senthil Balasubramanian

[permalink] [raw]
Subject: [PATCH v2 4/7] cfg80211: add debug prints for when we ignore regulatory hints

From: Luis R. Rodriguez <[email protected]>

This can help with debugging issues. You will only see
these with CONFIG_CFG80211_REG_DEBUG enabled.

Cc: Easwar Krishnan <[email protected]>
Signed-off-by: Luis R. Rodriguez <[email protected]>
Signed-off-by: Senthil Balasubramanian <[email protected]>
---
v2 -- brought in reg_initiator_name under reg debug to get rid of a
warning message.

net/wireless/reg.c | 42 +++++++++++++++++++++++++++++++++++++++---
1 files changed, 39 insertions(+), 3 deletions(-)

diff --git a/net/wireless/reg.c b/net/wireless/reg.c
index 8ab65f2..7bff1c1 100644
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -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;
}

--
1.7.2.1



2010-10-21 14:17:17

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: [PATCH v2 4/7] cfg80211: add debug prints for when we ignore regulatory hints

On Thu, Oct 21, 2010 at 6:47 AM, Senthil Balasubramanian
<[email protected]> wrote:
> From: Luis R. Rodriguez <[email protected]>
>
> This can help with debugging issues. You will only see
> these with CONFIG_CFG80211_REG_DEBUG enabled.
>
> Cc: Easwar Krishnan <[email protected]>
> Signed-off-by: Luis R. Rodriguez <[email protected]>
> Signed-off-by: Senthil Balasubramanian <[email protected]>
> ---
> v2 -- brought in reg_initiator_name under reg debug to get rid of a
> warning  message.

Thanks!!

Luis

2010-10-21 13:47:40

by Senthil Balasubramanian

[permalink] [raw]
Subject: [PATCH v2 6/7] cfg80211: add debug print when processing a channel

From: Luis R. Rodriguez <[email protected]>

In the worst case you are seeing really odd things you want
more information than what is provided right now, for those
that insist and want debug info through CONFIG_CFG80211_REG_DEBUG
provide a print of when we are processing a channel and with what
regulatory rule.

Cc: Easwar Krishnan <[email protected]>
Signed-off-by: Luis R. Rodriguez <[email protected]>
Signed-off-by: Senthil Balasubramanian <[email protected]>
---
v2 -- fixed compilation error if REG_DEBUG is not defined.

net/wireless/reg.c | 39 +++++++++++++++++++++++++++++++++++++++
1 files changed, 39 insertions(+), 0 deletions(-)

diff --git a/net/wireless/reg.c b/net/wireless/reg.c
index 6e7a9d8..5556c5f 100644
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -728,6 +728,41 @@ static const char *reg_initiator_name(enum nl80211_reg_initiator initiator)
return "Set by bug";
}
}
+
+static void chan_reg_rule_print_dbg(struct ieee80211_channel *chan,
+ u32 desired_bw_khz,
+ const struct ieee80211_reg_rule *reg_rule)
+{
+ const struct ieee80211_power_rule *power_rule;
+ const struct ieee80211_freq_range *freq_range;
+ char max_antenna_gain[32];
+
+ power_rule = &reg_rule->power_rule;
+ freq_range = &reg_rule->freq_range;
+
+ if (!power_rule->max_antenna_gain)
+ snprintf(max_antenna_gain, 32, "N/A");
+ else
+ snprintf(max_antenna_gain, 32, "%d", power_rule->max_antenna_gain);
+
+ REG_DBG_PRINT("cfg80211: Updating information on frequency %d MHz "
+ "for %d a MHz width channel with regulatory rule:\n",
+ chan->center_freq,
+ KHZ_TO_MHZ(desired_bw_khz));
+
+ REG_DBG_PRINT("cfg80211: %d KHz - %d KHz @ KHz), (%s mBi, %d mBm)\n",
+ freq_range->start_freq_khz,
+ freq_range->end_freq_khz,
+ max_antenna_gain,
+ power_rule->max_eirp);
+}
+#else
+static void chan_reg_rule_print_dbg(struct ieee80211_channel *chan,
+ u32 desired_bw_khz,
+ const struct ieee80211_reg_rule *reg_rule)
+{
+ return;
+}
#endif

/*
@@ -790,6 +825,8 @@ static void handle_channel(struct wiphy *wiphy,
return;
}

+ chan_reg_rule_print_dbg(chan, desired_bw_khz, reg_rule);
+
power_rule = &reg_rule->power_rule;
freq_range = &reg_rule->freq_range;

@@ -1134,6 +1171,8 @@ static void handle_channel_custom(struct wiphy *wiphy,
return;
}

+ chan_reg_rule_print_dbg(chan, desired_bw_khz, reg_rule);
+
power_rule = &reg_rule->power_rule;
freq_range = &reg_rule->freq_range;

--
1.7.2.1


2010-10-21 14:04:29

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: [PATCH v2 6/7] cfg80211: add debug print when processing a channel

On Thu, Oct 21, 2010 at 6:47 AM, Senthil Balasubramanian
<[email protected]> wrote:
> From: Luis R. Rodriguez <[email protected]>
>
> In the worst case you are seeing really odd things you want
> more information than what is provided right now, for those
> that insist and want debug info through CONFIG_CFG80211_REG_DEBUG
> provide a print of when we are processing a channel and with what
> regulatory rule.
>
> Cc: Easwar Krishnan <[email protected]>
> Signed-off-by: Luis R. Rodriguez <[email protected]>
> Signed-off-by: Senthil Balasubramanian <[email protected]>
> ---
> v2 -- fixed compilation error if REG_DEBUG is not defined.

Thanks !!

Luis