cfg80211: fix station change if TDLS isn't supported
authorJohannes Berg <johannes.berg@intel.com>
Mon, 18 Feb 2013 13:57:42 +0000 (14:57 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 18 Feb 2013 17:26:24 +0000 (18:26 +0100)
Larry noticed (and bisected) that commit df881293c6ba9a12868491a717b25
"cfg80211: Pass TDLS peer's QoS/HT/VHT information during set_station"
broke secure connections. This is is the case only for drivers that
don't support TDLS, where any kind of change, even just the change of
authorized flag that is required for normal operation, was rejected
now. To fix this, remove the checks. I have some patches that will add
proper verification for all the different cases later.

Cc: Jouni Malinen <j@w1.fi>
Bisected-by: Larry Finger <Larry.Finger@lwfinger.net>
Tested-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/wireless/nl80211.c

index 580ffea..35545cc 100644 (file)
@@ -3418,19 +3418,10 @@ nl80211_sta_wme_policy[NL80211_STA_WME_MAX + 1] __read_mostly = {
 static int nl80211_set_station_tdls(struct genl_info *info,
                                    struct station_parameters *params)
 {
-       struct cfg80211_registered_device *rdev = info->user_ptr[0];
        struct nlattr *tb[NL80211_STA_WME_MAX + 1];
        struct nlattr *nla;
        int err;
 
-       /* Can only set if TDLS ... */
-       if (!(rdev->wiphy.flags & WIPHY_FLAG_SUPPORTS_TDLS))
-               return -EOPNOTSUPP;
-
-       /* ... with external setup is supported */
-       if (!(rdev->wiphy.flags & WIPHY_FLAG_TDLS_EXTERNAL_SETUP))
-               return -EOPNOTSUPP;
-
        /* Dummy STA entry gets updated once the peer capabilities are known */
        if (info->attrs[NL80211_ATTR_HT_CAPABILITY])
                params->ht_capa =