|
@@ -43,7 +43,7 @@ enum work_action {
|
|
|
/* utils */
|
|
|
static inline void ASSERT_WORK_MTX(struct ieee80211_local *local)
|
|
|
{
|
|
|
- WARN_ON(!mutex_is_locked(&local->work_mtx));
|
|
|
+ lockdep_assert_held(&local->mtx);
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -757,7 +757,7 @@ static void ieee80211_work_rx_queued_mgmt(struct ieee80211_local *local,
|
|
|
mgmt = (struct ieee80211_mgmt *) skb->data;
|
|
|
fc = le16_to_cpu(mgmt->frame_control);
|
|
|
|
|
|
- mutex_lock(&local->work_mtx);
|
|
|
+ mutex_lock(&local->mtx);
|
|
|
|
|
|
list_for_each_entry(wk, &local->work_list, list) {
|
|
|
const u8 *bssid = NULL;
|
|
@@ -833,7 +833,7 @@ static void ieee80211_work_rx_queued_mgmt(struct ieee80211_local *local,
|
|
|
WARN(1, "unexpected: %d", rma);
|
|
|
}
|
|
|
|
|
|
- mutex_unlock(&local->work_mtx);
|
|
|
+ mutex_unlock(&local->mtx);
|
|
|
|
|
|
if (rma != WORK_ACT_DONE)
|
|
|
goto out;
|
|
@@ -845,9 +845,9 @@ static void ieee80211_work_rx_queued_mgmt(struct ieee80211_local *local,
|
|
|
case WORK_DONE_REQUEUE:
|
|
|
synchronize_rcu();
|
|
|
wk->started = false; /* restart */
|
|
|
- mutex_lock(&local->work_mtx);
|
|
|
+ mutex_lock(&local->mtx);
|
|
|
list_add_tail(&wk->list, &local->work_list);
|
|
|
- mutex_unlock(&local->work_mtx);
|
|
|
+ mutex_unlock(&local->mtx);
|
|
|
}
|
|
|
|
|
|
out:
|
|
@@ -890,7 +890,7 @@ static void ieee80211_work_work(struct work_struct *work)
|
|
|
|
|
|
ieee80211_recalc_idle(local);
|
|
|
|
|
|
- mutex_lock(&local->work_mtx);
|
|
|
+ mutex_lock(&local->mtx);
|
|
|
|
|
|
list_for_each_entry_safe(wk, tmp, &local->work_list, list) {
|
|
|
bool started = wk->started;
|
|
@@ -995,17 +995,13 @@ static void ieee80211_work_work(struct work_struct *work)
|
|
|
run_again(local, jiffies + HZ/2);
|
|
|
}
|
|
|
|
|
|
- mutex_lock(&local->scan_mtx);
|
|
|
-
|
|
|
if (list_empty(&local->work_list) && local->scan_req &&
|
|
|
!local->scanning)
|
|
|
ieee80211_queue_delayed_work(&local->hw,
|
|
|
&local->scan_work,
|
|
|
round_jiffies_relative(0));
|
|
|
|
|
|
- mutex_unlock(&local->scan_mtx);
|
|
|
-
|
|
|
- mutex_unlock(&local->work_mtx);
|
|
|
+ mutex_unlock(&local->mtx);
|
|
|
|
|
|
ieee80211_recalc_idle(local);
|
|
|
|
|
@@ -1035,16 +1031,15 @@ void ieee80211_add_work(struct ieee80211_work *wk)
|
|
|
wk->started = false;
|
|
|
|
|
|
local = wk->sdata->local;
|
|
|
- mutex_lock(&local->work_mtx);
|
|
|
+ mutex_lock(&local->mtx);
|
|
|
list_add_tail(&wk->list, &local->work_list);
|
|
|
- mutex_unlock(&local->work_mtx);
|
|
|
+ mutex_unlock(&local->mtx);
|
|
|
|
|
|
ieee80211_queue_work(&local->hw, &local->work_work);
|
|
|
}
|
|
|
|
|
|
void ieee80211_work_init(struct ieee80211_local *local)
|
|
|
{
|
|
|
- mutex_init(&local->work_mtx);
|
|
|
INIT_LIST_HEAD(&local->work_list);
|
|
|
setup_timer(&local->work_timer, ieee80211_work_timer,
|
|
|
(unsigned long)local);
|
|
@@ -1057,7 +1052,7 @@ void ieee80211_work_purge(struct ieee80211_sub_if_data *sdata)
|
|
|
struct ieee80211_local *local = sdata->local;
|
|
|
struct ieee80211_work *wk;
|
|
|
|
|
|
- mutex_lock(&local->work_mtx);
|
|
|
+ mutex_lock(&local->mtx);
|
|
|
list_for_each_entry(wk, &local->work_list, list) {
|
|
|
if (wk->sdata != sdata)
|
|
|
continue;
|
|
@@ -1065,19 +1060,19 @@ void ieee80211_work_purge(struct ieee80211_sub_if_data *sdata)
|
|
|
wk->started = true;
|
|
|
wk->timeout = jiffies;
|
|
|
}
|
|
|
- mutex_unlock(&local->work_mtx);
|
|
|
+ mutex_unlock(&local->mtx);
|
|
|
|
|
|
/* run cleanups etc. */
|
|
|
ieee80211_work_work(&local->work_work);
|
|
|
|
|
|
- mutex_lock(&local->work_mtx);
|
|
|
+ mutex_lock(&local->mtx);
|
|
|
list_for_each_entry(wk, &local->work_list, list) {
|
|
|
if (wk->sdata != sdata)
|
|
|
continue;
|
|
|
WARN_ON(1);
|
|
|
break;
|
|
|
}
|
|
|
- mutex_unlock(&local->work_mtx);
|
|
|
+ mutex_unlock(&local->mtx);
|
|
|
}
|
|
|
|
|
|
ieee80211_rx_result ieee80211_work_rx_mgmt(struct ieee80211_sub_if_data *sdata,
|
|
@@ -1163,7 +1158,7 @@ int ieee80211_wk_cancel_remain_on_channel(struct ieee80211_sub_if_data *sdata,
|
|
|
struct ieee80211_work *wk, *tmp;
|
|
|
bool found = false;
|
|
|
|
|
|
- mutex_lock(&local->work_mtx);
|
|
|
+ mutex_lock(&local->mtx);
|
|
|
list_for_each_entry_safe(wk, tmp, &local->work_list, list) {
|
|
|
if ((unsigned long) wk == cookie) {
|
|
|
wk->timeout = jiffies;
|
|
@@ -1171,7 +1166,7 @@ int ieee80211_wk_cancel_remain_on_channel(struct ieee80211_sub_if_data *sdata,
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- mutex_unlock(&local->work_mtx);
|
|
|
+ mutex_unlock(&local->mtx);
|
|
|
|
|
|
if (!found)
|
|
|
return -ENOENT;
|