2011-05-27 14:24:40

by Luis R. Rodriguez

[permalink] [raw]
Subject: [PATCH] cfg80211: skip disabled channels on channel survey

The channel survey information will be empy for
disabled channels so simply discard those entries.

Signed-off-by: Luis R. Rodriguez <[email protected]>
---
net/wireless/nl80211.c | 19 +++++++++++++++----
1 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index ec83f41..e283816 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -3754,10 +3754,6 @@ static int nl80211_send_survey(struct sk_buff *msg, u32 pid, u32 seq,
void *hdr;
struct nlattr *infoattr;

- /* Survey without a channel doesn't make sense */
- if (!survey->channel)
- return -EINVAL;
-
hdr = nl80211hdr_put(msg, pid, seq, flags,
NL80211_CMD_NEW_SURVEY_RESULTS);
if (!hdr)
@@ -3820,6 +3816,8 @@ static int nl80211_dump_survey(struct sk_buff *skb,
}

while (1) {
+ struct ieee80211_channel *chan;
+
res = dev->ops->dump_survey(&dev->wiphy, netdev, survey_idx,
&survey);
if (res == -ENOENT)
@@ -3827,6 +3825,19 @@ static int nl80211_dump_survey(struct sk_buff *skb,
if (res)
goto out_err;

+ /* Survey without a channel doesn't make sense */
+ if (!survey.channel) {
+ res = -EINVAL;
+ goto out;
+ }
+
+ chan = ieee80211_get_channel(&dev->wiphy,
+ survey.channel->center_freq);
+ if (!chan || chan->flags & IEEE80211_CHAN_DISABLED) {
+ survey_idx++;
+ continue;
+ }
+
if (nl80211_send_survey(skb,
NETLINK_CB(cb->skb).pid,
cb->nlh->nlmsg_seq, NLM_F_MULTI,
--
1.7.4.1



2011-05-29 15:37:20

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: [PATCH] cfg80211: skip disabled channels on channel survey

On Fri, May 27, 2011 at 12:28 PM, Johannes Berg
<[email protected]> wrote:
>> The channel survey information will be empy for
>> disabled channels so simply discard those entries.
>
> What if the channel was recently disabled?

Then we'd stop sending survey data for it.

Luis

2011-05-27 19:25:22

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] cfg80211: skip disabled channels on channel survey

> The channel survey information will be empy for
> disabled channels so simply discard those entries.

What if the channel was recently disabled?

Johannes