diff options
author | Johannes Berg <johannes.berg@intel.com> | 2012-10-24 10:04:58 +0200 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2012-10-30 09:11:33 +0100 |
commit | 71fe96bf9db8b117d28de6f9ced606cae2ad9661 (patch) | |
tree | d764bfd5d36c488190a87f50b6abb0ee579710c0 | |
parent | mac80211_hwsim: allow using channel contexts (diff) | |
download | linux-71fe96bf9db8b117d28de6f9ced606cae2ad9661.tar.xz linux-71fe96bf9db8b117d28de6f9ced606cae2ad9661.zip |
nl80211: move "can set channel" check
Setting the wdev to NULL when the channel can't be
set for that interface type (to treat the channel
setting for the wiphy/monitor) currently works, but
is confusing in the code if netdev/wdev aren't both
set/unset in the same way. Move the check whether
the channel can be set to where it's needed so that
wdev and netdev are always both assigned or NULL.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r-- | net/wireless/nl80211.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 8c0857815a90..879ca620fd6f 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -1516,10 +1516,8 @@ static int nl80211_set_wiphy(struct sk_buff *skb, struct genl_info *info) result = 0; mutex_lock(&rdev->mtx); - } else if (nl80211_can_set_dev_channel(netdev->ieee80211_ptr)) + } else wdev = netdev->ieee80211_ptr; - else - wdev = NULL; /* * end workaround code, by now the rdev is available @@ -1579,7 +1577,9 @@ static int nl80211_set_wiphy(struct sk_buff *skb, struct genl_info *info) } if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { - result = __nl80211_set_channel(rdev, wdev, info); + result = __nl80211_set_channel(rdev, + nl80211_can_set_dev_channel(wdev) ? wdev : NULL, + info); if (result) goto bad_res; } |