diff options
-rw-r--r-- | net/wireless/Kconfig | 6 | ||||
-rw-r--r-- | net/wireless/genregdb.awk | 35 |
2 files changed, 28 insertions, 13 deletions
diff --git a/net/wireless/Kconfig b/net/wireless/Kconfig index 405f3c4cf70c..29c8675f9a11 100644 --- a/net/wireless/Kconfig +++ b/net/wireless/Kconfig | |||
@@ -162,6 +162,12 @@ config CFG80211_INTERNAL_REGDB | |||
162 | and includes code to query that database. This is an alternative | 162 | and includes code to query that database. This is an alternative |
163 | to using CRDA for defining regulatory rules for the kernel. | 163 | to using CRDA for defining regulatory rules for the kernel. |
164 | 164 | ||
165 | Using this option requires some parsing of the db.txt at build time, | ||
166 | the parser will be upkept with the latest wireless-regdb updates but | ||
167 | older wireless-regdb formats will be ignored. The parser may later | ||
168 | be replaced to avoid issues with conflicts on versions of | ||
169 | wireless-regdb. | ||
170 | |||
165 | For details see: | 171 | For details see: |
166 | 172 | ||
167 | http://wireless.kernel.org/en/developers/Regulatory | 173 | http://wireless.kernel.org/en/developers/Regulatory |
diff --git a/net/wireless/genregdb.awk b/net/wireless/genregdb.awk index 40c37fc5b67c..baf2426b555a 100644 --- a/net/wireless/genregdb.awk +++ b/net/wireless/genregdb.awk | |||
@@ -51,32 +51,41 @@ function parse_country_head() { | |||
51 | 51 | ||
52 | function parse_reg_rule() | 52 | function parse_reg_rule() |
53 | { | 53 | { |
54 | flag_starts_at = 7 | ||
55 | |||
54 | start = $1 | 56 | start = $1 |
55 | sub(/\(/, "", start) | 57 | sub(/\(/, "", start) |
56 | end = $3 | 58 | end = $3 |
57 | bw = $5 | 59 | bw = $5 |
58 | sub(/\),/, "", bw) | 60 | sub(/\),/, "", bw) |
59 | gain = $6 | 61 | gain = 0 |
60 | sub(/\(/, "", gain) | 62 | power = $6 |
61 | sub(/,/, "", gain) | ||
62 | power = $7 | ||
63 | sub(/\)/, "", power) | ||
64 | sub(/,/, "", power) | ||
65 | # power might be in mW... | 63 | # power might be in mW... |
66 | units = $8 | 64 | units = $7 |
65 | dfs_cac = 0 | ||
66 | |||
67 | sub(/\(/, "", power) | ||
68 | sub(/\),/, "", power) | ||
69 | sub(/\),/, "", units) | ||
67 | sub(/\)/, "", units) | 70 | sub(/\)/, "", units) |
68 | sub(/,/, "", units) | 71 | |
69 | dfs_cac = $9 | ||
70 | if (units == "mW") { | 72 | if (units == "mW") { |
73 | flag_starts_at = 8 | ||
71 | power = 10 * log(power)/log(10) | 74 | power = 10 * log(power)/log(10) |
75 | if ($8 ~ /[[:digit:]]/) { | ||
76 | flag_starts_at = 9 | ||
77 | dfs_cac = $8 | ||
78 | } | ||
72 | } else { | 79 | } else { |
73 | dfs_cac = $8 | 80 | if ($7 ~ /[[:digit:]]/) { |
81 | flag_starts_at = 8 | ||
82 | dfs_cac = $7 | ||
83 | } | ||
74 | } | 84 | } |
75 | sub(/,/, "", dfs_cac) | ||
76 | sub(/\(/, "", dfs_cac) | 85 | sub(/\(/, "", dfs_cac) |
77 | sub(/\)/, "", dfs_cac) | 86 | sub(/\),/, "", dfs_cac) |
78 | flagstr = "" | 87 | flagstr = "" |
79 | for (i=8; i<=NF; i++) | 88 | for (i=flag_starts_at; i<=NF; i++) |
80 | flagstr = flagstr $i | 89 | flagstr = flagstr $i |
81 | split(flagstr, flagarray, ",") | 90 | split(flagstr, flagarray, ",") |
82 | flags = "" | 91 | flags = "" |