|
|
@ -0,0 +1,69 @@ |
|
|
|
diff -urp ipw2100-0.54/ipw2100.c ipw2100-0.54-new/ipw2100_main.c
|
|
|
|
--- ipw2100-0.54/ipw2100.c 2004-09-01 04:23:09.000000000 +0800
|
|
|
|
+++ ipw2100-0.54-new/ipw2100_main.c 2004-09-14 13:26:20.742098168 +0800
|
|
|
|
@@ -1373,6 +1373,13 @@ static int ipw2100_up(struct ipw2100_pri
|
|
|
|
u32 lock; |
|
|
|
u32 ord_len = sizeof(lock); |
|
|
|
|
|
|
|
+ /* Quite if manually disabled. */
|
|
|
|
+ if (priv->manual_disable) {
|
|
|
|
+ printk(KERN_INFO "%s: Radio is disabled by Manual Disable "
|
|
|
|
+ "switch\n", priv->ndev->name);
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
/* If the interrupt is enabled, turn it off... */ |
|
|
|
spin_lock_irqsave(&priv->low_lock, flags); |
|
|
|
ipw2100_hw_disable_interrupt(priv); |
|
|
|
@@ -1419,26 +1426,17 @@ static int ipw2100_up(struct ipw2100_pri
|
|
|
|
} |
|
|
|
|
|
|
|
priv->in_scan = 0; |
|
|
|
+ priv->rf_kill = ipw2100_get_rf_switch(priv);
|
|
|
|
|
|
|
|
- if (priv->hw_features & HW_FEATURE_RFKILL)
|
|
|
|
- priv->rf_kill = ipw2100_get_rf_switch(priv);
|
|
|
|
- else
|
|
|
|
- priv->rf_kill = 0;
|
|
|
|
-
|
|
|
|
- if (priv->rf_kill || priv->manual_disable) {
|
|
|
|
- if (priv->rf_kill)
|
|
|
|
- printk(KERN_INFO "%s: Radio is disabled by RF switch\n",
|
|
|
|
- priv->ndev->name);
|
|
|
|
- if (priv->manual_disable)
|
|
|
|
- printk(KERN_INFO "%s: Radio is disabled by Manual Disable switch\n",
|
|
|
|
- priv->ndev->name);
|
|
|
|
+ if (priv->rf_kill) {
|
|
|
|
+ printk(KERN_INFO "%s: Radio is disabled by RF switch\n",
|
|
|
|
+ priv->ndev->name);
|
|
|
|
|
|
|
|
if (priv->stop_rf_check) { |
|
|
|
priv->stop_rf_check = 0; |
|
|
|
priv->rf_switch_timer.expires = jiffies + HZ; |
|
|
|
add_timer(&priv->rf_switch_timer); |
|
|
|
} |
|
|
|
-
|
|
|
|
/* Since the RF switch is off, we will defer |
|
|
|
* the sending of the HOST_COMPLETE */ |
|
|
|
deferred = 1; |
|
|
|
@@ -5869,7 +5867,7 @@ static void shim__set_security(struct ie
|
|
|
|
priv->sec.flags & BIT(0) ? '1' : '0'); |
|
|
|
|
|
|
|
if (!priv->connected) |
|
|
|
- ipw2100_configure_security(priv, 0);
|
|
|
|
+ ipw2100_configure_security(priv, priv->manual_disable);
|
|
|
|
} |
|
|
|
|
|
|
|
static struct ieee80211_helper_functions ipw2100_ieee_callbacks = { |
|
|
|
@@ -6219,7 +6217,10 @@ static void ipw2100_rf_switch_check(unsi
|
|
|
|
if (!priv->rf_kill) { |
|
|
|
/* Kill timer; we don't need to poll for RF going |
|
|
|
* off since the firmware will tell us */ |
|
|
|
- priv->stop_rf_check = 1;
|
|
|
|
+ if (!priv->stop_rf_check) {
|
|
|
|
+ priv->stop_rf_check = 1;
|
|
|
|
+ del_timer_sync(&priv->rf_switch_timer);
|
|
|
|
+ }
|
|
|
|
|
|
|
|
/* Restart the NIC */ |
|
|
|
schedule_reset(priv); |