cfg80211: fix disabling WPA via wext (SIOCSIWAUTH)
cfg80211_set_wpa_version completely missed the use case when disabling WPA, considering IW_AUTH_WPA_VERSION_DISABLED an invalid argument. This caused weird error messages in wpa_supplicant. Signed-off-by: Gábor Stefanik <netrolller.3d@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
4b9631a473
commit
323d566eae
|
@ -880,9 +880,19 @@ static int cfg80211_set_wpa_version(struct wireless_dev *wdev, u32 wpa_versions)
|
||||||
wdev->wext.connect.crypto.wpa_versions = 0;
|
wdev->wext.connect.crypto.wpa_versions = 0;
|
||||||
|
|
||||||
if (wpa_versions & ~(IW_AUTH_WPA_VERSION_WPA |
|
if (wpa_versions & ~(IW_AUTH_WPA_VERSION_WPA |
|
||||||
IW_AUTH_WPA_VERSION_WPA2))
|
IW_AUTH_WPA_VERSION_WPA2|
|
||||||
|
IW_AUTH_WPA_VERSION_DISABLED))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
if ((wpa_versions & IW_AUTH_WPA_VERSION_DISABLED) &&
|
||||||
|
(wpa_versions & (IW_AUTH_WPA_VERSION_WPA|
|
||||||
|
IW_AUTH_WPA_VERSION_WPA2)))
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (wpa_versions & IW_AUTH_WPA_VERSION_DISABLED)
|
||||||
|
wdev->wext.connect.crypto.wpa_versions &=
|
||||||
|
~(NL80211_WPA_VERSION_1|NL80211_WPA_VERSION_2);
|
||||||
|
|
||||||
if (wpa_versions & IW_AUTH_WPA_VERSION_WPA)
|
if (wpa_versions & IW_AUTH_WPA_VERSION_WPA)
|
||||||
wdev->wext.connect.crypto.wpa_versions |=
|
wdev->wext.connect.crypto.wpa_versions |=
|
||||||
NL80211_WPA_VERSION_1;
|
NL80211_WPA_VERSION_1;
|
||||||
|
|
Loading…
Reference in New Issue