Commit 4a7f13ee authored by Jussi Kivilinna's avatar Jussi Kivilinna Committed by John W. Linville

rndis_wlan: set cipher suites for cfg80211

rndis_wlan does not set cipher suites list for cfg80211 which causes
wext-compat-range to report rndis_wlan not supporting WPA. Patch adds
cipher suites list and fixes NetworkManager not being able to connect to
WPA encrypted APs.
Signed-off-by: default avatarJussi Kivilinna <jussi.kivilinna@mbnet.fi>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 7cf4a2e7
...@@ -413,6 +413,13 @@ static const struct ieee80211_rate rndis_rates[] = { ...@@ -413,6 +413,13 @@ static const struct ieee80211_rate rndis_rates[] = {
{ .bitrate = 540 } { .bitrate = 540 }
}; };
static const u32 rndis_cipher_suites[] = {
WLAN_CIPHER_SUITE_WEP40,
WLAN_CIPHER_SUITE_WEP104,
WLAN_CIPHER_SUITE_TKIP,
WLAN_CIPHER_SUITE_CCMP,
};
struct rndis_wlan_encr_key { struct rndis_wlan_encr_key {
int len; int len;
int cipher; int cipher;
...@@ -441,6 +448,7 @@ struct rndis_wlan_private { ...@@ -441,6 +448,7 @@ struct rndis_wlan_private {
struct ieee80211_supported_band band; struct ieee80211_supported_band band;
struct ieee80211_channel channels[ARRAY_SIZE(rndis_channels)]; struct ieee80211_channel channels[ARRAY_SIZE(rndis_channels)];
struct ieee80211_rate rates[ARRAY_SIZE(rndis_rates)]; struct ieee80211_rate rates[ARRAY_SIZE(rndis_rates)];
u32 cipher_suites[ARRAY_SIZE(rndis_cipher_suites)];
struct iw_statistics iwstats; struct iw_statistics iwstats;
struct iw_statistics privstats; struct iw_statistics privstats;
...@@ -2892,7 +2900,7 @@ static int rndis_wlan_bind(struct usbnet *usbdev, struct usb_interface *intf) ...@@ -2892,7 +2900,7 @@ static int rndis_wlan_bind(struct usbnet *usbdev, struct usb_interface *intf)
| BIT(NL80211_IFTYPE_ADHOC); | BIT(NL80211_IFTYPE_ADHOC);
wiphy->max_scan_ssids = 1; wiphy->max_scan_ssids = 1;
/* TODO: fill-out band information based on priv->caps */ /* TODO: fill-out band/encr information based on priv->caps */
rndis_wlan_get_caps(usbdev); rndis_wlan_get_caps(usbdev);
memcpy(priv->channels, rndis_channels, sizeof(rndis_channels)); memcpy(priv->channels, rndis_channels, sizeof(rndis_channels));
...@@ -2904,6 +2912,11 @@ static int rndis_wlan_bind(struct usbnet *usbdev, struct usb_interface *intf) ...@@ -2904,6 +2912,11 @@ static int rndis_wlan_bind(struct usbnet *usbdev, struct usb_interface *intf)
wiphy->bands[IEEE80211_BAND_2GHZ] = &priv->band; wiphy->bands[IEEE80211_BAND_2GHZ] = &priv->band;
wiphy->signal_type = CFG80211_SIGNAL_TYPE_UNSPEC; wiphy->signal_type = CFG80211_SIGNAL_TYPE_UNSPEC;
memcpy(priv->cipher_suites, rndis_cipher_suites,
sizeof(rndis_cipher_suites));
wiphy->cipher_suites = priv->cipher_suites;
wiphy->n_cipher_suites = ARRAY_SIZE(rndis_cipher_suites);
set_wiphy_dev(wiphy, &usbdev->udev->dev); set_wiphy_dev(wiphy, &usbdev->udev->dev);
if (wiphy_register(wiphy)) { if (wiphy_register(wiphy)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment