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>
This commit is contained in:
Johannes Berg 2012-10-24 10:04:58 +02:00
parent e826117142
commit 71fe96bf9d

View File

@ -1516,10 +1516,8 @@ static int nl80211_set_wiphy(struct sk_buff *skb, struct genl_info *info)
result = 0; result = 0;
mutex_lock(&rdev->mtx); mutex_lock(&rdev->mtx);
} else if (nl80211_can_set_dev_channel(netdev->ieee80211_ptr)) } else
wdev = netdev->ieee80211_ptr; wdev = netdev->ieee80211_ptr;
else
wdev = NULL;
/* /*
* end workaround code, by now the rdev is available * 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]) { 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) if (result)
goto bad_res; goto bad_res;
} }