Skip to content

Commit

Permalink
iwmc3200wifi: Add wifi-wimax coexistence mode as a module parameter
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Samuel Ortiz authored and John W. Linville committed Dec 4, 2009
1 parent 1ee9d42 commit 43b5ffe
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 6 deletions.
12 changes: 8 additions & 4 deletions drivers/net/wireless/iwmc3200wifi/commands.c
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,10 @@ int iwm_send_wifi_if_cmd(struct iwm_priv *iwm, void *payload, u16 payload_size,
return ret;
}

static int modparam_wiwi = COEX_MODE_CM;
module_param_named(wiwi, modparam_wiwi, int, 0644);
MODULE_PARM_DESC(wiwi, "Wifi-WiMAX coexistence: 1=SA, 2=XOR, 3=CM (default)");

static struct coex_event iwm_sta_xor_prio_tbl[COEX_EVENTS_NUM] =
{
{4, 3, 0, COEX_UNASSOC_IDLE_FLAGS},
Expand Down Expand Up @@ -148,7 +152,7 @@ int iwm_send_prio_table(struct iwm_priv *iwm)

coex_table_cmd.flags = COEX_FLAGS_STA_TABLE_VALID_MSK;

switch (iwm->conf.coexist_mode) {
switch (modparam_wiwi) {
case COEX_MODE_XOR:
case COEX_MODE_CM:
coex_enabled = 1;
Expand All @@ -173,7 +177,7 @@ int iwm_send_prio_table(struct iwm_priv *iwm)
COEX_FLAGS_ASSOC_WAKEUP_UMASK_MSK |
COEX_FLAGS_UNASSOC_WAKEUP_UMASK_MSK;

switch (iwm->conf.coexist_mode) {
switch (modparam_wiwi) {
case COEX_MODE_XOR:
memcpy(coex_table_cmd.sta_prio, iwm_sta_xor_prio_tbl,
sizeof(iwm_sta_xor_prio_tbl));
Expand All @@ -184,7 +188,7 @@ int iwm_send_prio_table(struct iwm_priv *iwm)
break;
default:
IWM_ERR(iwm, "Invalid coex_mode 0x%x\n",
iwm->conf.coexist_mode);
modparam_wiwi);
break;
}
} else
Expand Down Expand Up @@ -396,7 +400,7 @@ int iwm_send_umac_config(struct iwm_priv *iwm, __le32 reset_flags)
return ret;

ret = iwm_umac_set_config_fix(iwm, UMAC_PARAM_TBL_CFG_FIX,
CFG_COEX_MODE, iwm->conf.coexist_mode);
CFG_COEX_MODE, modparam_wiwi);
if (ret < 0)
return ret;

Expand Down
1 change: 0 additions & 1 deletion drivers/net/wireless/iwmc3200wifi/iwm.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@ struct iwm_conf {
u32 assoc_timeout;
u32 roam_timeout;
u32 wireless_mode;
u32 coexist_mode;

u8 ibss_band;
u8 ibss_channel;
Expand Down
1 change: 0 additions & 1 deletion drivers/net/wireless/iwmc3200wifi/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,6 @@ static struct iwm_conf def_iwm_conf = {
.roam_timeout = 10,
.wireless_mode = WIRELESS_MODE_11A | WIRELESS_MODE_11G |
WIRELESS_MODE_11N,
.coexist_mode = COEX_MODE_CM,

/* IBSS */
.ibss_band = UMAC_BAND_2GHZ,
Expand Down

0 comments on commit 43b5ffe

Please sign in to comment.