Răsfoiți Sursa

mwifiex: update cfg80211 with correct reason code when association fails

This patch adds support to send correct reason code got from
firmware when association attempt fails. Also, the error message
displayed for association failure due to network incompatibility
is modified. Current message "cannot find ssid.." misleads user.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Amitkumar Karwar 13 ani în urmă
părinte
comite
0697588428
2 a modificat fișierele cu 16 adăugiri și 5 ștergeri
  1. 14 3
      drivers/net/wireless/mwifiex/cfg80211.c
  2. 2 2
      drivers/net/wireless/mwifiex/scan.c

+ 14 - 3
drivers/net/wireless/mwifiex/cfg80211.c

@@ -1596,8 +1596,9 @@ done:
 		}
 		}
 	}
 	}
 
 
-	if (mwifiex_bss_start(priv, bss, &req_ssid))
-		return -EFAULT;
+	ret = mwifiex_bss_start(priv, bss, &req_ssid);
+	if (ret)
+		return ret;
 
 
 	if (mode == NL80211_IFTYPE_ADHOC) {
 	if (mode == NL80211_IFTYPE_ADHOC) {
 		/* Inform the BSS information to kernel, otherwise
 		/* Inform the BSS information to kernel, otherwise
@@ -1652,9 +1653,19 @@ done:
 			"info: association to bssid %pM failed\n",
 			"info: association to bssid %pM failed\n",
 			priv->cfg_bssid);
 			priv->cfg_bssid);
 		memset(priv->cfg_bssid, 0, ETH_ALEN);
 		memset(priv->cfg_bssid, 0, ETH_ALEN);
+
+		if (ret > 0)
+			cfg80211_connect_result(priv->netdev, priv->cfg_bssid,
+						NULL, 0, NULL, 0, ret,
+						GFP_KERNEL);
+		else
+			cfg80211_connect_result(priv->netdev, priv->cfg_bssid,
+						NULL, 0, NULL, 0,
+						WLAN_STATUS_UNSPECIFIED_FAILURE,
+						GFP_KERNEL);
 	}
 	}
 
 
-	return ret;
+	return 0;
 }
 }
 
 
 /*
 /*

+ 2 - 2
drivers/net/wireless/mwifiex/scan.c

@@ -1434,8 +1434,8 @@ int mwifiex_check_network_compatibility(struct mwifiex_private *priv,
 			ret = mwifiex_is_network_compatible(priv, bss_desc,
 			ret = mwifiex_is_network_compatible(priv, bss_desc,
 							    priv->bss_mode);
 							    priv->bss_mode);
 			if (ret)
 			if (ret)
-				dev_err(priv->adapter->dev, "cannot find ssid "
-					"%s\n", bss_desc->ssid.ssid);
+				dev_err(priv->adapter->dev,
+					"Incompatible network settings\n");
 			break;
 			break;
 		default:
 		default:
 			ret = 0;
 			ret = 0;