]> Pileus Git - ~andy/linux/commitdiff
Modified ipw_config and STATUS_INIT setting to correct race condition
authorJames Ketrenos <jketreno@linux.intel.com>
Fri, 12 Aug 2005 14:17:04 +0000 (09:17 -0500)
committerJames Ketrenos <jketreno@linux.intel.com>
Mon, 7 Nov 2005 23:50:52 +0000 (17:50 -0600)
with request_scan being called before initialized if invoked from
insmod, resulting in no association occurring during boot until iwlist
scan is run.

Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
drivers/net/wireless/ipw2200.c

index f825aa462c99641f848027eaf4917b1e78e3da12..6e862c2905deb2b12e7c4e3a165dc3e946ab2d83 100644 (file)
@@ -10465,9 +10465,17 @@ static int ipw_config(struct ipw_priv *priv)
        if (ipw_send_host_complete(priv))
                goto error;
 
-       /* If configured to try and auto-associate, kick off a scan */
-       if (priv->config & CFG_ASSOCIATE)
-               queue_work(priv->workqueue, &priv->request_scan);
+       priv->status |= STATUS_INIT;
+
+       ipw_led_init(priv);
+       ipw_led_radio_on(priv);
+       priv->notif_missed_beacons = 0;
+
+       /* Set hardware WEP key if it is configured. */
+       if ((priv->capability & CAP_PRIVACY_ON) &&
+           (priv->ieee->sec.level == SEC_LEVEL_1) &&
+           !(priv->ieee->host_encrypt || priv->ieee->host_decrypt))
+               ipw_set_hwcrypto_keys(priv);
 
        return 0;
 
@@ -10773,17 +10781,10 @@ static int ipw_up(struct ipw_priv *priv)
                rc = ipw_config(priv);
                if (!rc) {
                        IPW_DEBUG_INFO("Configured device on count %i\n", i);
-                       ipw_led_init(priv);
-                       ipw_led_radio_on(priv);
-                       priv->notif_missed_beacons = 0;
-                       priv->status |= STATUS_INIT;
-
-                       /* Set hardware WEP key if it is configured. */
-                       if ((priv->capability & CAP_PRIVACY_ON) &&
-                           (priv->ieee->sec.level == SEC_LEVEL_1) &&
-                           !(priv->ieee->host_encrypt ||
-                             priv->ieee->host_decrypt))
-                               ipw_set_hwcrypto_keys(priv);
+
+                       /* If configure to try and auto-associate, kick
+                        * off a scan. */
+                       queue_work(priv->workqueue, &priv->request_scan);
 
                        return 0;
                }