Skip to content

Commit

Permalink
Modified ipw_config and STATUS_INIT setting to correct race condition
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
James Ketrenos committed Nov 7, 2005
1 parent 6de9f7f commit e666619
Showing 1 changed file with 15 additions and 14 deletions.
29 changes: 15 additions & 14 deletions drivers/net/wireless/ipw2200.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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;
}
Expand Down

0 comments on commit e666619

Please sign in to comment.