mwifiex: set regulatory info from EEPROM
authorAmitkumar Karwar <akarwar@marvell.com>
Fri, 4 Dec 2015 14:13:04 +0000 (06:13 -0800)
committerKalle Valo <kvalo@codeaurora.org>
Fri, 11 Dec 2015 11:24:13 +0000 (13:24 +0200)
Driver gets country information from EEPROM during
initialization. We will call regulatory_hint to update
current regulatory domain.
As by default world regulatory domain is selected by
cfg80211, country '00' from EEPROM is ignored.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Cathy Luo <cluo@marvell.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/marvell/mwifiex/cfg80211.c
drivers/net/wireless/marvell/mwifiex/cfp.c
drivers/net/wireless/marvell/mwifiex/main.h

index 4073116..9b570e1 100644 (file)
@@ -3862,11 +3862,15 @@ int mwifiex_register_cfg80211(struct mwifiex_adapter *adapter)
                            "driver hint alpha2: %2.2s\n", reg_alpha2);
                regulatory_hint(wiphy, reg_alpha2);
        } else {
-               country_code = mwifiex_11d_code_2_region(adapter->region_code);
-               if (country_code)
-                       mwifiex_dbg(adapter, WARN,
-                                   "ignoring F/W country code %2.2s\n",
-                                   country_code);
+               if (adapter->region_code == 0x00) {
+                       mwifiex_dbg(adapter, WARN, "Ignore world regulatory domain\n");
+               } else {
+                       country_code =
+                               mwifiex_11d_code_2_region(adapter->region_code);
+                       if (country_code &&
+                           regulatory_hint(wiphy, country_code))
+                               mwifiex_dbg(priv->adapter, ERROR, "regulatory_hint() failed\n");
+               }
        }
 
        mwifiex_send_cmd(priv, HostCmd_CMD_802_11_SNMP_MIB,
index 3ddb8ec..dd3adc5 100644 (file)
@@ -66,7 +66,7 @@ static u8 supported_rates_bg[BG_SUPPORTED_RATES] = { 0x02, 0x04, 0x0b, 0x0c,
                                        0x12, 0x16, 0x18, 0x24, 0x30, 0x48,
                                        0x60, 0x6c, 0 };
 
-u16 region_code_index[MWIFIEX_MAX_REGION_CODE] = { 0x10, 0x20, 0x30,
+u16 region_code_index[MWIFIEX_MAX_REGION_CODE] = { 0x00, 0x10, 0x20, 0x30,
                                                0x32, 0x40, 0x41, 0xff };
 
 static u8 supported_rates_n[N_SUPPORTED_RATES] = { 0x02, 0x04, 0 };
index 3959f1c..a86e2ae 100644 (file)
@@ -84,7 +84,7 @@ enum {
 
 #define MWIFIEX_KEY_BUFFER_SIZE                        16
 #define MWIFIEX_DEFAULT_LISTEN_INTERVAL 10
-#define MWIFIEX_MAX_REGION_CODE         7
+#define MWIFIEX_MAX_REGION_CODE         8
 
 #define DEFAULT_BCN_AVG_FACTOR          8
 #define DEFAULT_DATA_AVG_FACTOR         8