Commit cbb1ec94 authored by Arend van Spriel's avatar Arend van Spriel Committed by John W. Linville

brcmfmac: fix problem connecting to AP without security

The bcm43236 device showed having an issue connection to an AP without
security when auth_type was set to automatic. For this particular device
a workaround is made by selecting open-system. This problem does not
occur when using wpa_supplicant as it will not use auth type automatic.
Reviewed-by: default avatarHante Meuleman <meuleman@broadcom.com>
Reviewed-by: default avatarPieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: default avatarPiotr Haber <phaber@broadcom.com>
Signed-off-by: default avatarArend van Spriel <arend@broadcom.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 371830ea
...@@ -1365,9 +1365,28 @@ brcmf_set_sharedkey(struct net_device *ndev, ...@@ -1365,9 +1365,28 @@ brcmf_set_sharedkey(struct net_device *ndev,
return err; return err;
} }
static
enum nl80211_auth_type brcmf_war_auth_type(struct brcmf_if *ifp,
enum nl80211_auth_type type)
{
u32 ci;
if (type == NL80211_AUTHTYPE_AUTOMATIC) {
/* shift to ignore chip revision */
ci = brcmf_get_chip_info(ifp) >> 4;
switch (ci) {
case 43236:
brcmf_dbg(CONN, "43236 WAR: use OPEN instead of AUTO\n");
return NL80211_AUTHTYPE_OPEN_SYSTEM;
default:
break;
}
}
return type;
}
static s32 static s32
brcmf_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, brcmf_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev,
struct cfg80211_connect_params *sme) struct cfg80211_connect_params *sme)
{ {
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
struct brcmf_if *ifp = netdev_priv(ndev); struct brcmf_if *ifp = netdev_priv(ndev);
...@@ -1410,6 +1429,7 @@ brcmf_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, ...@@ -1410,6 +1429,7 @@ brcmf_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev,
goto done; goto done;
} }
sme->auth_type = brcmf_war_auth_type(ifp, sme->auth_type);
err = brcmf_set_auth_type(ndev, sme); err = brcmf_set_auth_type(ndev, sme);
if (err) { if (err) {
brcmf_err("wl_set_auth_type failed (%d)\n", err); brcmf_err("wl_set_auth_type failed (%d)\n", err);
......
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