From: "Luis R. Rodriguez" <[email protected]>
It has happened twice now where elaborate troubleshooting has
undergone on systems where CONFIG_CFG80211_INTERNAL_REGDB [0]
has been set but yet net/wireless/db.txt was not updated.
Despite the documentation on this it seems system integrators could
use some more help with this, so throw out a kernel warning at boot time
when their database is empty.
This does mean that the error-prone system integrator won't likely
realize the issue until they boot the machine but -- it does not seem
to make sense to enable a build bug breaking random build testing.
[0] http://wireless.kernel.org/en/developers/Regulatory/CRDA#CONFIG_CFG80211_INTERNAL_REGDB
Cc: Stephen Rothwell <[email protected]>
Cc: Youngsin Lee <[email protected]>
Cc: Raja Mani <[email protected]>
Cc: Senthil Kumar Balasubramanian <[email protected]>
Cc: Vipin Mehta <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Signed-off-by: Luis R. Rodriguez <[email protected]>
---
net/wireless/reg.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/net/wireless/reg.c b/net/wireless/reg.c
index e9a0ac8..7b613c4 100644
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -388,7 +388,15 @@ static void reg_regdb_query(const char *alpha2)
schedule_work(®_regdb_work);
}
+
+/* Feel free to add any other sanity checks here */
+static void reg_regdb_size_check(void)
+{
+ /* We should ideally BUILD_BUG_ON() but then random builds would fail */
+ WARN_ONCE(!reg_regdb_size, "db.txt is empty, you should update it...");
+}
#else
+static inline void reg_regdb_size_check(void) {}
static inline void reg_regdb_query(const char *alpha2) {}
#endif /* CONFIG_CFG80211_INTERNAL_REGDB */
@@ -2367,6 +2375,7 @@ void /* __init_or_exit */ regulatory_exit(void)
mutex_lock(&cfg80211_mutex);
mutex_lock(®_mutex);
+ reg_regdb_size_check();
reset_regdomains(true);
dev_set_uevent_suppress(®_pdev->dev, true);
--
1.7.10.rc1.22.gf5241
On Tuesday 20 March 2012 07:33 PM, Luis R. Rodriguez wrote:
> From: "Luis R. Rodriguez"<[email protected]>
>
> It has happened twice now where elaborate troubleshooting has
> undergone on systems where CONFIG_CFG80211_INTERNAL_REGDB [0]
> has been set but yet net/wireless/db.txt was not updated.
>
> Despite the documentation on this it seems system integrators could
> use some more help with this, so throw out a kernel warning at boot time
> when their database is empty.
>
> This does mean that the error-prone system integrator won't likely
> realize the issue until they boot the machine but -- it does not seem
> to make sense to enable a build bug breaking random build testing.
>
> [0] http://wireless.kernel.org/en/developers/Regulatory/CRDA#CONFIG_CFG80211_INTERNAL_REGDB
>
> Cc: Stephen Rothwell<[email protected]>
> Cc: Youngsin Lee<[email protected]>
> Cc: Raja Mani<[email protected]>
> Cc: Senthil Kumar Balasubramanian<[email protected]>
> Cc: Vipin Mehta<[email protected]>
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Signed-off-by: Luis R. Rodriguez<[email protected]>
> ---
> net/wireless/reg.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/net/wireless/reg.c b/net/wireless/reg.c
> index e9a0ac8..7b613c4 100644
> --- a/net/wireless/reg.c
> +++ b/net/wireless/reg.c
> @@ -388,7 +388,15 @@ static void reg_regdb_query(const char *alpha2)
>
> schedule_work(®_regdb_work);
> }
> +
> +/* Feel free to add any other sanity checks here */
> +static void reg_regdb_size_check(void)
> +{
> + /* We should ideally BUILD_BUG_ON() but then random builds would fail */
> + WARN_ONCE(!reg_regdb_size, "db.txt is empty, you should update it...");
> +}
> #else
> +static inline void reg_regdb_size_check(void) {}
> static inline void reg_regdb_query(const char *alpha2) {}
> #endif /* CONFIG_CFG80211_INTERNAL_REGDB */
>
> @@ -2367,6 +2375,7 @@ void /* __init_or_exit */ regulatory_exit(void)
> mutex_lock(&cfg80211_mutex);
> mutex_lock(®_mutex);
>
> + reg_regdb_size_check();
Just curious question, Don't we have to check internal regdb size in
init time (i.e, regulatory_init()) instead of in regulatory_exit() ?
Because, we would get warning ONLY at exit time in this case.
> reset_regdomains(true);
>
> dev_set_uevent_suppress(®_pdev->dev, true);