regdb: Generalize the mW to dBm power conversion
authorchaitanya.mgit@gmail.com <chaitanya.mgit@gmail.com>
Mon, 26 May 2014 12:31:44 +0000 (18:01 +0530)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 27 May 2014 15:58:58 +0000 (17:58 +0200)
Generalize the power conversion from mW to dBm
using log. This should fix the below compilation
error for country NO which adds a new power value
2000mW which is not handled earlier.

 CC [M]  net/wireless/wext-sme.o
 CC [M]  net/wireless/regdb.o
net/wireless/regdb.c:1130:1: error: Unknown undeclared here (not in
a function)
net/wireless/regdb.c:1130:9: error: expected } before power
make[2]: *** [net/wireless/regdb.o] Error 1
make[1]: *** [net/wireless] Error 2
make: *** [net] Error 2

Reported-By: John Walker <john@x109.net>
Signed-off-by: Chaitanya T K <chaitanya.mgit@gmail.com>
Acked-by: John W. Linville <linville@tuxdriver.com>
[remove unneeded parentheses, fix rounding by using %.0f]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/wireless/genregdb.awk

index b35da8d..40c37fc 100644 (file)
@@ -68,17 +68,7 @@ function parse_reg_rule()
        sub(/,/, "", units)
        dfs_cac = $9
        if (units == "mW") {
-               if (power == 100) {
-                       power = 20
-               } else if (power == 200) {
-                       power = 23
-               } else if (power == 500) {
-                       power = 27
-               } else if (power == 1000) {
-                       power = 30
-               } else {
-                       print "Unknown power value in database!"
-               }
+               power = 10 * log(power)/log(10)
        } else {
                dfs_cac = $8
        }
@@ -117,7 +107,7 @@ function parse_reg_rule()
 
        }
        flags = flags "0"
-       printf "\t\tREG_RULE_EXT(%d, %d, %d, %d, %d, %d, %s),\n", start, end, bw, gain, power, dfs_cac, flags
+       printf "\t\tREG_RULE_EXT(%d, %d, %d, %d, %.0f, %d, %s),\n", start, end, bw, gain, power, dfs_cac, flags
        rules++
 }