Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 328149
b: refs/heads/master
c: 30dd3ed
h: refs/heads/master
i:
  328147: c63337d
v: v3
  • Loading branch information
Johannes Berg committed Sep 6, 2012
1 parent a9f0d33 commit 3a2204c
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 27 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 944b9e375d89271c39995d363f62cb91734fae5f
refs/heads/master: 30dd3edf97abda301150c8cf26fed21e53e3a9ce
1 change: 0 additions & 1 deletion trunk/net/mac80211/ieee80211_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -970,7 +970,6 @@ struct ieee80211_local {
int scan_channel_idx;
int scan_ies_len;

struct ieee80211_sched_scan_ies sched_scan_ies;
struct work_struct sched_scan_stopped_work;
struct ieee80211_sub_if_data __rcu *sched_scan_sdata;

Expand Down
39 changes: 14 additions & 25 deletions trunk/net/mac80211/scan.c
Original file line number Diff line number Diff line change
Expand Up @@ -917,6 +917,7 @@ int ieee80211_request_sched_scan_start(struct ieee80211_sub_if_data *sdata,
struct cfg80211_sched_scan_request *req)
{
struct ieee80211_local *local = sdata->local;
struct ieee80211_sched_scan_ies sched_scan_ies;
int ret, i;

mutex_lock(&local->mtx);
Expand All @@ -935,33 +936,28 @@ int ieee80211_request_sched_scan_start(struct ieee80211_sub_if_data *sdata,
if (!local->hw.wiphy->bands[i])
continue;

local->sched_scan_ies.ie[i] = kzalloc(2 +
IEEE80211_MAX_SSID_LEN +
local->scan_ies_len +
req->ie_len,
GFP_KERNEL);
if (!local->sched_scan_ies.ie[i]) {
sched_scan_ies.ie[i] = kzalloc(2 + IEEE80211_MAX_SSID_LEN +
local->scan_ies_len +
req->ie_len,
GFP_KERNEL);
if (!sched_scan_ies.ie[i]) {
ret = -ENOMEM;
goto out_free;
}

local->sched_scan_ies.len[i] =
ieee80211_build_preq_ies(local,
local->sched_scan_ies.ie[i],
sched_scan_ies.len[i] =
ieee80211_build_preq_ies(local, sched_scan_ies.ie[i],
req->ie, req->ie_len, i,
(u32) -1, 0);
}

ret = drv_sched_scan_start(local, sdata, req,
&local->sched_scan_ies);
if (ret == 0) {
ret = drv_sched_scan_start(local, sdata, req, &sched_scan_ies);
if (ret == 0)
rcu_assign_pointer(local->sched_scan_sdata, sdata);
goto out;
}

out_free:
while (i > 0)
kfree(local->sched_scan_ies.ie[--i]);
kfree(sched_scan_ies.ie[--i]);
out:
mutex_unlock(&local->mtx);
return ret;
Expand All @@ -970,7 +966,7 @@ int ieee80211_request_sched_scan_start(struct ieee80211_sub_if_data *sdata,
int ieee80211_request_sched_scan_stop(struct ieee80211_sub_if_data *sdata)
{
struct ieee80211_local *local = sdata->local;
int ret = 0, i;
int ret = 0;

mutex_lock(&local->mtx);

Expand All @@ -979,12 +975,9 @@ int ieee80211_request_sched_scan_stop(struct ieee80211_sub_if_data *sdata)
goto out;
}

if (rcu_access_pointer(local->sched_scan_sdata)) {
for (i = 0; i < IEEE80211_NUM_BANDS; i++)
kfree(local->sched_scan_ies.ie[i]);

if (rcu_access_pointer(local->sched_scan_sdata))
drv_sched_scan_stop(local, sdata);
}

out:
mutex_unlock(&local->mtx);

Expand All @@ -1006,7 +999,6 @@ void ieee80211_sched_scan_stopped_work(struct work_struct *work)
struct ieee80211_local *local =
container_of(work, struct ieee80211_local,
sched_scan_stopped_work);
int i;

mutex_lock(&local->mtx);

Expand All @@ -1015,9 +1007,6 @@ void ieee80211_sched_scan_stopped_work(struct work_struct *work)
return;
}

for (i = 0; i < IEEE80211_NUM_BANDS; i++)
kfree(local->sched_scan_ies.ie[i]);

rcu_assign_pointer(local->sched_scan_sdata, NULL);

mutex_unlock(&local->mtx);
Expand Down

0 comments on commit 3a2204c

Please sign in to comment.