|
@@ -565,7 +565,7 @@ static void ieee80211_chswitch_timer(unsigned long data)
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- queue_work(sdata->local->hw.workqueue, &ifmgd->chswitch_work);
|
|
|
+ ieee80211_queue_work(&sdata->local->hw, &ifmgd->chswitch_work);
|
|
|
}
|
|
|
|
|
|
void ieee80211_sta_process_chanswitch(struct ieee80211_sub_if_data *sdata,
|
|
@@ -597,7 +597,7 @@ void ieee80211_sta_process_chanswitch(struct ieee80211_sub_if_data *sdata,
|
|
|
sdata->local->csa_channel = new_ch;
|
|
|
|
|
|
if (sw_elem->count <= 1) {
|
|
|
- queue_work(sdata->local->hw.workqueue, &ifmgd->chswitch_work);
|
|
|
+ ieee80211_queue_work(&sdata->local->hw, &ifmgd->chswitch_work);
|
|
|
} else {
|
|
|
ieee80211_stop_queues_by_reason(&sdata->local->hw,
|
|
|
IEEE80211_QUEUE_STOP_REASON_CSA);
|
|
@@ -763,7 +763,7 @@ void ieee80211_dynamic_ps_timer(unsigned long data)
|
|
|
if (local->quiescing || local->suspended)
|
|
|
return;
|
|
|
|
|
|
- queue_work(local->hw.workqueue, &local->dynamic_ps_enable_work);
|
|
|
+ ieee80211_queue_work(&local->hw, &local->dynamic_ps_enable_work);
|
|
|
}
|
|
|
|
|
|
/* MLME */
|
|
@@ -950,7 +950,7 @@ ieee80211_direct_probe(struct ieee80211_sub_if_data *sdata,
|
|
|
* due to work needing to be done. Hence, queue the STAs work
|
|
|
* again for that.
|
|
|
*/
|
|
|
- queue_work(local->hw.workqueue, &ifmgd->work);
|
|
|
+ ieee80211_queue_work(&local->hw, &ifmgd->work);
|
|
|
return RX_MGMT_CFG80211_AUTH_TO;
|
|
|
}
|
|
|
|
|
@@ -995,7 +995,7 @@ ieee80211_authenticate(struct ieee80211_sub_if_data *sdata,
|
|
|
* due to work needing to be done. Hence, queue the STAs work
|
|
|
* again for that.
|
|
|
*/
|
|
|
- queue_work(local->hw.workqueue, &ifmgd->work);
|
|
|
+ ieee80211_queue_work(&local->hw, &ifmgd->work);
|
|
|
return RX_MGMT_CFG80211_AUTH_TO;
|
|
|
}
|
|
|
|
|
@@ -1124,7 +1124,7 @@ ieee80211_associate(struct ieee80211_sub_if_data *sdata,
|
|
|
* due to work needing to be done. Hence, queue the STAs work
|
|
|
* again for that.
|
|
|
*/
|
|
|
- queue_work(local->hw.workqueue, &ifmgd->work);
|
|
|
+ ieee80211_queue_work(&local->hw, &ifmgd->work);
|
|
|
return RX_MGMT_CFG80211_ASSOC_TO;
|
|
|
}
|
|
|
|
|
@@ -1232,8 +1232,7 @@ void ieee80211_beacon_loss(struct ieee80211_vif *vif)
|
|
|
{
|
|
|
struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
|
|
|
|
|
|
- queue_work(sdata->local->hw.workqueue,
|
|
|
- &sdata->u.mgd.beacon_loss_work);
|
|
|
+ ieee80211_queue_work(&sdata->local->hw, &sdata->u.mgd.beacon_loss_work);
|
|
|
}
|
|
|
EXPORT_SYMBOL(ieee80211_beacon_loss);
|
|
|
|
|
@@ -1888,7 +1887,7 @@ ieee80211_rx_result ieee80211_sta_rx_mgmt(struct ieee80211_sub_if_data *sdata,
|
|
|
case IEEE80211_STYPE_DISASSOC:
|
|
|
case IEEE80211_STYPE_ACTION:
|
|
|
skb_queue_tail(&sdata->u.mgd.skb_queue, skb);
|
|
|
- queue_work(local->hw.workqueue, &sdata->u.mgd.work);
|
|
|
+ ieee80211_queue_work(&local->hw, &sdata->u.mgd.work);
|
|
|
return RX_QUEUED;
|
|
|
}
|
|
|
|
|
@@ -2026,7 +2025,7 @@ static void ieee80211_sta_timer(unsigned long data)
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- queue_work(local->hw.workqueue, &ifmgd->work);
|
|
|
+ ieee80211_queue_work(&local->hw, &ifmgd->work);
|
|
|
}
|
|
|
|
|
|
static void ieee80211_sta_work(struct work_struct *work)
|
|
@@ -2051,13 +2050,11 @@ static void ieee80211_sta_work(struct work_struct *work)
|
|
|
return;
|
|
|
|
|
|
/*
|
|
|
- * Nothing should have been stuffed into the workqueue during
|
|
|
- * the suspend->resume cycle. If this WARN is seen then there
|
|
|
- * is a bug with either the driver suspend or something in
|
|
|
- * mac80211 stuffing into the workqueue which we haven't yet
|
|
|
- * cleared during mac80211's suspend cycle.
|
|
|
+ * ieee80211_queue_work() should have picked up most cases,
|
|
|
+ * here we'll pick the the rest.
|
|
|
*/
|
|
|
- if (WARN_ON(local->suspended))
|
|
|
+ if (WARN(local->suspended, "STA MLME work scheduled while "
|
|
|
+ "going to suspend\n"))
|
|
|
return;
|
|
|
|
|
|
ifmgd = &sdata->u.mgd;
|
|
@@ -2113,9 +2110,9 @@ static void ieee80211_sta_work(struct work_struct *work)
|
|
|
mutex_unlock(&ifmgd->mtx);
|
|
|
|
|
|
if (test_and_clear_bit(IEEE80211_STA_REQ_SCAN, &ifmgd->request))
|
|
|
- queue_delayed_work(local->hw.workqueue,
|
|
|
- &local->scan_work,
|
|
|
- round_jiffies_relative(0));
|
|
|
+ ieee80211_queue_delayed_work(&local->hw,
|
|
|
+ &local->scan_work,
|
|
|
+ round_jiffies_relative(0));
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -2196,8 +2193,7 @@ static void ieee80211_sta_bcn_mon_timer(unsigned long data)
|
|
|
if (local->quiescing)
|
|
|
return;
|
|
|
|
|
|
- queue_work(sdata->local->hw.workqueue,
|
|
|
- &sdata->u.mgd.beacon_loss_work);
|
|
|
+ ieee80211_queue_work(&sdata->local->hw, &sdata->u.mgd.beacon_loss_work);
|
|
|
}
|
|
|
|
|
|
static void ieee80211_sta_conn_mon_timer(unsigned long data)
|
|
@@ -2210,7 +2206,7 @@ static void ieee80211_sta_conn_mon_timer(unsigned long data)
|
|
|
if (local->quiescing)
|
|
|
return;
|
|
|
|
|
|
- queue_work(local->hw.workqueue, &ifmgd->monitor_work);
|
|
|
+ ieee80211_queue_work(&local->hw, &ifmgd->monitor_work);
|
|
|
}
|
|
|
|
|
|
static void ieee80211_sta_monitor_work(struct work_struct *work)
|
|
@@ -2229,10 +2225,10 @@ static void ieee80211_restart_sta_timer(struct ieee80211_sub_if_data *sdata)
|
|
|
IEEE80211_STA_CONNECTION_POLL);
|
|
|
|
|
|
/* let's probe the connection once */
|
|
|
- queue_work(sdata->local->hw.workqueue,
|
|
|
+ ieee80211_queue_work(&sdata->local->hw,
|
|
|
&sdata->u.mgd.monitor_work);
|
|
|
/* and do all the other regular work too */
|
|
|
- queue_work(sdata->local->hw.workqueue,
|
|
|
+ ieee80211_queue_work(&sdata->local->hw,
|
|
|
&sdata->u.mgd.work);
|
|
|
}
|
|
|
}
|
|
@@ -2393,7 +2389,7 @@ int ieee80211_mgd_auth(struct ieee80211_sub_if_data *sdata,
|
|
|
list_add(&wk->list, &sdata->u.mgd.work_list);
|
|
|
mutex_unlock(&ifmgd->mtx);
|
|
|
|
|
|
- queue_work(sdata->local->hw.workqueue, &sdata->u.mgd.work);
|
|
|
+ ieee80211_queue_work(&sdata->local->hw, &sdata->u.mgd.work);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -2467,7 +2463,7 @@ int ieee80211_mgd_assoc(struct ieee80211_sub_if_data *sdata,
|
|
|
else
|
|
|
ifmgd->flags &= ~IEEE80211_STA_CONTROL_PORT;
|
|
|
|
|
|
- queue_work(sdata->local->hw.workqueue, &sdata->u.mgd.work);
|
|
|
+ ieee80211_queue_work(&sdata->local->hw, &sdata->u.mgd.work);
|
|
|
|
|
|
err = 0;
|
|
|
|