Convert softmac to use global workqueue instead of private one...
Signed-off-by: John W. Linville <linville@tuxdriver.com>
u8 scanning:1, /* protects scanning from being done multiple times at once */
associated:1;
- /* workquere for scannning, ... */
- struct workqueue_struct *workqueue;
-
struct ieee80211softmac_scaninfo *scaninfo;
struct ieee80211softmac_assoc_info associnfo;
/* Set a timer for timeout */
/* FIXME: make timeout configurable */
- queue_delayed_work(mac->workqueue, &mac->associnfo.timeout, 5 * HZ);
+ schedule_delayed_work(&mac->associnfo.timeout, 5 * HZ);
}
void
network->authenticated = 0;
/* we don't want to do this more than once ... */
network->auth_desynced_once = 1;
- queue_work(mac->workqueue, &mac->associnfo.work);
+ schedule_work(&mac->associnfo.work);
break;
}
default:
/* add to list */
list_add_tail(&auth->list, &mac->auth_queue);
- queue_work(mac->workqueue, &auth->work);
+ schedule_work(&auth->work);
spin_unlock_irqrestore(&mac->lock, flags);
return 0;
net->authenticated = 0;
net->authenticating = 1;
/* add a timeout call so we eventually give up waiting for an auth reply */
- queue_delayed_work(mac->workqueue, &auth->work, IEEE80211SOFTMAC_AUTH_TIMEOUT);
+ schedule_delayed_work(&auth->work, IEEE80211SOFTMAC_AUTH_TIMEOUT);
auth->retry--;
spin_unlock_irqrestore(&mac->lock, flags);
if (ieee80211softmac_send_mgt_frame(mac, auth->net, IEEE80211_STYPE_AUTH, auth->state))
kfree(net);
/* let's try to re-associate */
- queue_work(mac->workqueue, &mac->associnfo.work);
+ schedule_work(&mac->associnfo.work);
spin_unlock_irqrestore(&mac->lock, flags);
}
if ((eventptr->event_type == event || eventptr->event_type == -1)
&& (eventptr->event_context == NULL || eventptr->event_context == event_ctx)) {
list_del(&eventptr->list);
- queue_work(mac->workqueue, &eventptr->work);
+ schedule_work(&eventptr->work);
}
}
}
* (once they're written)
*/
- softmac->workqueue = create_workqueue("80211softmac");
- if (!softmac->workqueue)
- goto err_free_ieee80211;
-
INIT_LIST_HEAD(&softmac->auth_queue);
INIT_LIST_HEAD(&softmac->network_list);
INIT_LIST_HEAD(&softmac->events);
cancel_delayed_work(&eventptr->work);
spin_unlock_irqrestore(&sm->lock, flags);
- flush_workqueue(sm->workqueue);
+ flush_scheduled_work();
// now we should be save and no longer need locking...
spin_lock_irqsave(&sm->lock, flags);
{
struct ieee80211softmac_device *sm = ieee80211_priv(dev);
ieee80211softmac_clear_pending_work(sm);
- destroy_workqueue(sm->workqueue);
kfree(sm->scaninfo);
kfree(sm->wpa.IE);
free_ieee80211(dev);
// TODO: is this if correct, or should we do this only if scanning from assoc request?
if (sm->associnfo.req_essid.len)
ieee80211softmac_send_mgt_frame(sm, &sm->associnfo.req_essid, IEEE80211_STYPE_PROBE_REQ, 0);
- queue_delayed_work(sm->workqueue, &si->softmac_scan, IEEE80211SOFTMAC_PROBE_DELAY);
+ schedule_delayed_work(&si->softmac_scan, IEEE80211SOFTMAC_PROBE_DELAY);
return;
} else {
dprintk(PFX "Not probing Channel %d (not allowed here)\n", si->channels[current_channel_idx].channel);
sm->scaninfo->current_channel_idx = 0;
sm->scaninfo->started = 1;
INIT_COMPLETION(sm->scaninfo->finished);
- queue_work(sm->workqueue, &sm->scaninfo->softmac_scan);
+ schedule_work(&sm->scaninfo->softmac_scan);
spin_unlock_irqrestore(&sm->lock, flags);
return 0;
}
sm->associnfo.req_essid.len = length;
/* queue lower level code to do work (if necessary) */
- queue_work(sm->workqueue, &sm->associnfo.work);
+ schedule_work(&sm->associnfo.work);
spin_unlock_irqrestore(&sm->lock, flags);
return 0;
spin_lock_irqsave(&mac->lock, flags);
if (!memcmp(any, data->ap_addr.sa_data, ETH_ALEN) ||
!memcmp(off, data->ap_addr.sa_data, ETH_ALEN)) {
- queue_work(mac->workqueue, &mac->associnfo.work);
+ schedule_work(&mac->associnfo.work);
goto out;
} else {
if (!memcmp(mac->associnfo.bssid, data->ap_addr.sa_data, ETH_ALEN)) {
memcpy(mac->associnfo.bssid, data->ap_addr.sa_data, ETH_ALEN);
}
/* queue associate if new bssid or (old one again and not associated) */
- queue_work(mac->workqueue,&mac->associnfo.work);
+ schedule_work(&mac->associnfo.work);
}
out: