aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ipw2200.c
diff options
context:
space:
mode:
authorZhu Yi <yi.zhu@intel.com>2006-01-24 03:36:59 -0500
committerJohn W. Linville <linville@tuxdriver.com>2006-01-30 20:35:33 -0500
commit810dabd466fe70869b66ab64dd326b6153cef645 (patch)
treeca919a3a3b819b6bb46cc9d072b58f8b698b1070 /drivers/net/wireless/ipw2200.c
parent3e234b4e5768b4f783fc45f20be8c6515b875f17 (diff)
[PATCH] ipw2200: Bluetooth coexistence support
I've added a new module param "bt_coexist" which defaults to OFF. This does not seem to fix the firmware restarts, but it does do "the right thing" and disables something that we were enabling by default: signaling the Bluetooth h/w which channel we're on (whether or not the BT h/w was out there). Signed-off-by: Ben M Cahill <ben.m.cahill@intel.com> Signed-off-by: Zhu Yi <yi.zhu@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ipw2200.c')
-rw-r--r--drivers/net/wireless/ipw2200.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/drivers/net/wireless/ipw2200.c b/drivers/net/wireless/ipw2200.c
index 671631831226..e6a23c2be1af 100644
--- a/drivers/net/wireless/ipw2200.c
+++ b/drivers/net/wireless/ipw2200.c
@@ -55,6 +55,7 @@ static int associate = 1;
55static int auto_create = 1; 55static int auto_create = 1;
56static int led = 0; 56static int led = 0;
57static int disable = 0; 57static int disable = 0;
58static int bt_coexist = 0;
58static int hwcrypto = 1; 59static int hwcrypto = 1;
59static const char ipw_modes[] = { 60static const char ipw_modes[] = {
60 'a', 'b', 'g', '?' 61 'a', 'b', 'g', '?'
@@ -9656,7 +9657,7 @@ static struct iw_statistics *ipw_get_wireless_stats(struct net_device *dev)
9656static void init_sys_config(struct ipw_sys_config *sys_config) 9657static void init_sys_config(struct ipw_sys_config *sys_config)
9657{ 9658{
9658 memset(sys_config, 0, sizeof(struct ipw_sys_config)); 9659 memset(sys_config, 0, sizeof(struct ipw_sys_config));
9659 sys_config->bt_coexistence = 1; /* We may need to look into prvStaBtConfig */ 9660 sys_config->bt_coexistence = 0;
9660 sys_config->answer_broadcast_ssid_probe = 0; 9661 sys_config->answer_broadcast_ssid_probe = 0;
9661 sys_config->accept_all_data_frames = 0; 9662 sys_config->accept_all_data_frames = 0;
9662 sys_config->accept_non_directed_frames = 1; 9663 sys_config->accept_non_directed_frames = 1;
@@ -10362,6 +10363,20 @@ static int ipw_config(struct ipw_priv *priv)
10362 10363
10363 /* set basic system config settings */ 10364 /* set basic system config settings */
10364 init_sys_config(&priv->sys_config); 10365 init_sys_config(&priv->sys_config);
10366
10367 /* Support Bluetooth if we have BT h/w on board, and user wants to.
10368 * Does not support BT priority yet (don't abort or defer our Tx) */
10369 if (bt_coexist) {
10370 unsigned char bt_caps = priv->eeprom[EEPROM_SKU_CAPABILITY];
10371
10372 if (bt_caps & EEPROM_SKU_CAP_BT_CHANNEL_SIG)
10373 priv->sys_config.bt_coexistence
10374 |= CFG_BT_COEXISTENCE_SIGNAL_CHNL;
10375 if (bt_caps & EEPROM_SKU_CAP_BT_OOB)
10376 priv->sys_config.bt_coexistence
10377 |= CFG_BT_COEXISTENCE_OOB;
10378 }
10379
10365 if (priv->ieee->iw_mode == IW_MODE_ADHOC) 10380 if (priv->ieee->iw_mode == IW_MODE_ADHOC)
10366 priv->sys_config.answer_broadcast_ssid_probe = 1; 10381 priv->sys_config.answer_broadcast_ssid_probe = 1;
10367 else 10382 else
@@ -11351,6 +11366,9 @@ module_param(mode, int, 0444);
11351MODULE_PARM_DESC(mode, "network mode (0=BSS,1=IBSS)"); 11366MODULE_PARM_DESC(mode, "network mode (0=BSS,1=IBSS)");
11352#endif 11367#endif
11353 11368
11369module_param(bt_coexist, int, 0444);
11370MODULE_PARM_DESC(bt_coexist, "enable bluetooth coexistence (default off)");
11371
11354module_param(hwcrypto, int, 0444); 11372module_param(hwcrypto, int, 0444);
11355MODULE_PARM_DESC(hwcrypto, "enable hardware crypto (default on)"); 11373MODULE_PARM_DESC(hwcrypto, "enable hardware crypto (default on)");
11356 11374