aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorSamuel Ortiz <sameo@linux.intel.com>2009-12-03 05:40:17 -0500
committerJohn W. Linville <linville@tuxdriver.com>2009-12-04 14:16:28 -0500
commit43b5ffe1162a7fbaa89f1c392a28ac54c2e932f7 (patch)
tree82929f2096ff8935f92692e0e386bacf67a991e9 /drivers/net
parent1ee9d426ff8ae8312137fc9407eff23ca81cef26 (diff)
iwmc3200wifi: Add wifi-wimax coexistence mode as a module parameter
Wifi and wimax coexistence mode is set by wifi at boot time. There can be several modes, defined by priority tables. User space components can decide which one to select by writing to /sys/module/iwmc3200wifi/parameters/wiwi with this patch, before bringing the interface up. Signed-off-by: Samuel Ortiz <sameo@linux.intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/iwmc3200wifi/commands.c12
-rw-r--r--drivers/net/wireless/iwmc3200wifi/iwm.h1
-rw-r--r--drivers/net/wireless/iwmc3200wifi/main.c1
3 files changed, 8 insertions, 6 deletions
diff --git a/drivers/net/wireless/iwmc3200wifi/commands.c b/drivers/net/wireless/iwmc3200wifi/commands.c
index f9dc4b58c49..777584d76a8 100644
--- a/drivers/net/wireless/iwmc3200wifi/commands.c
+++ b/drivers/net/wireless/iwmc3200wifi/commands.c
@@ -99,6 +99,10 @@ int iwm_send_wifi_if_cmd(struct iwm_priv *iwm, void *payload, u16 payload_size,
99 return ret; 99 return ret;
100} 100}
101 101
102static int modparam_wiwi = COEX_MODE_CM;
103module_param_named(wiwi, modparam_wiwi, int, 0644);
104MODULE_PARM_DESC(wiwi, "Wifi-WiMAX coexistence: 1=SA, 2=XOR, 3=CM (default)");
105
102static struct coex_event iwm_sta_xor_prio_tbl[COEX_EVENTS_NUM] = 106static struct coex_event iwm_sta_xor_prio_tbl[COEX_EVENTS_NUM] =
103{ 107{
104 {4, 3, 0, COEX_UNASSOC_IDLE_FLAGS}, 108 {4, 3, 0, COEX_UNASSOC_IDLE_FLAGS},
@@ -148,7 +152,7 @@ int iwm_send_prio_table(struct iwm_priv *iwm)
148 152
149 coex_table_cmd.flags = COEX_FLAGS_STA_TABLE_VALID_MSK; 153 coex_table_cmd.flags = COEX_FLAGS_STA_TABLE_VALID_MSK;
150 154
151 switch (iwm->conf.coexist_mode) { 155 switch (modparam_wiwi) {
152 case COEX_MODE_XOR: 156 case COEX_MODE_XOR:
153 case COEX_MODE_CM: 157 case COEX_MODE_CM:
154 coex_enabled = 1; 158 coex_enabled = 1;
@@ -173,7 +177,7 @@ int iwm_send_prio_table(struct iwm_priv *iwm)
173 COEX_FLAGS_ASSOC_WAKEUP_UMASK_MSK | 177 COEX_FLAGS_ASSOC_WAKEUP_UMASK_MSK |
174 COEX_FLAGS_UNASSOC_WAKEUP_UMASK_MSK; 178 COEX_FLAGS_UNASSOC_WAKEUP_UMASK_MSK;
175 179
176 switch (iwm->conf.coexist_mode) { 180 switch (modparam_wiwi) {
177 case COEX_MODE_XOR: 181 case COEX_MODE_XOR:
178 memcpy(coex_table_cmd.sta_prio, iwm_sta_xor_prio_tbl, 182 memcpy(coex_table_cmd.sta_prio, iwm_sta_xor_prio_tbl,
179 sizeof(iwm_sta_xor_prio_tbl)); 183 sizeof(iwm_sta_xor_prio_tbl));
@@ -184,7 +188,7 @@ int iwm_send_prio_table(struct iwm_priv *iwm)
184 break; 188 break;
185 default: 189 default:
186 IWM_ERR(iwm, "Invalid coex_mode 0x%x\n", 190 IWM_ERR(iwm, "Invalid coex_mode 0x%x\n",
187 iwm->conf.coexist_mode); 191 modparam_wiwi);
188 break; 192 break;
189 } 193 }
190 } else 194 } else
@@ -396,7 +400,7 @@ int iwm_send_umac_config(struct iwm_priv *iwm, __le32 reset_flags)
396 return ret; 400 return ret;
397 401
398 ret = iwm_umac_set_config_fix(iwm, UMAC_PARAM_TBL_CFG_FIX, 402 ret = iwm_umac_set_config_fix(iwm, UMAC_PARAM_TBL_CFG_FIX,
399 CFG_COEX_MODE, iwm->conf.coexist_mode); 403 CFG_COEX_MODE, modparam_wiwi);
400 if (ret < 0) 404 if (ret < 0)
401 return ret; 405 return ret;
402 406
diff --git a/drivers/net/wireless/iwmc3200wifi/iwm.h b/drivers/net/wireless/iwmc3200wifi/iwm.h
index 8d091f918f3..5a26bb05a33 100644
--- a/drivers/net/wireless/iwmc3200wifi/iwm.h
+++ b/drivers/net/wireless/iwmc3200wifi/iwm.h
@@ -81,7 +81,6 @@ struct iwm_conf {
81 u32 assoc_timeout; 81 u32 assoc_timeout;
82 u32 roam_timeout; 82 u32 roam_timeout;
83 u32 wireless_mode; 83 u32 wireless_mode;
84 u32 coexist_mode;
85 84
86 u8 ibss_band; 85 u8 ibss_band;
87 u8 ibss_channel; 86 u8 ibss_channel;
diff --git a/drivers/net/wireless/iwmc3200wifi/main.c b/drivers/net/wireless/iwmc3200wifi/main.c
index 087f04355c1..0ffb04111a4 100644
--- a/drivers/net/wireless/iwmc3200wifi/main.c
+++ b/drivers/net/wireless/iwmc3200wifi/main.c
@@ -82,7 +82,6 @@ static struct iwm_conf def_iwm_conf = {
82 .roam_timeout = 10, 82 .roam_timeout = 10,
83 .wireless_mode = WIRELESS_MODE_11A | WIRELESS_MODE_11G | 83 .wireless_mode = WIRELESS_MODE_11A | WIRELESS_MODE_11G |
84 WIRELESS_MODE_11N, 84 WIRELESS_MODE_11N,
85 .coexist_mode = COEX_MODE_CM,
86 85
87 /* IBSS */ 86 /* IBSS */
88 .ibss_band = UMAC_BAND_2GHZ, 87 .ibss_band = UMAC_BAND_2GHZ,