Commit be898fed authored by Chung-Hsien Hsu's avatar Chung-Hsien Hsu Committed by Kalle Valo
Browse files

brcmfmac: send port authorized event for FT-802.1X



With FT-802.1X, driver should send a port authorized event right after
sending a roamed event. It is used to indicate that a new AP is already
authorized so 802.1X is not required.

Acked-by: default avatarArend van Spriel <arend.vanspriel@broadcom.com>
Signed-off-by: default avatarChung-Hsien Hsu <stanley.hsu@cypress.com>
Signed-off-by: default avatarChi-Hsien Lin <chi-hsien.lin@cypress.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 54ecb8f7
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -1647,6 +1647,7 @@ brcmf_set_key_mgmt(struct net_device *ndev, struct cfg80211_connect_params *sme)
	u16 count;

	profile->use_fwsup = BRCMF_PROFILE_FWSUP_NONE;
	profile->is_ft = false;

	if (!sme->crypto.n_akm_suites)
		return 0;
@@ -1691,11 +1692,13 @@ brcmf_set_key_mgmt(struct net_device *ndev, struct cfg80211_connect_params *sme)
			break;
		case WLAN_AKM_SUITE_FT_8021X:
			val = WPA2_AUTH_UNSPECIFIED | WPA2_AUTH_FT;
			profile->is_ft = true;
			if (sme->want_1x)
				profile->use_fwsup = BRCMF_PROFILE_FWSUP_1X;
			break;
		case WLAN_AKM_SUITE_FT_PSK:
			val = WPA2_AUTH_PSK | WPA2_AUTH_FT;
			profile->is_ft = true;
			break;
		default:
			bphy_err(drvr, "invalid cipher group (%d)\n",
@@ -5554,6 +5557,11 @@ brcmf_bss_roaming_done(struct brcmf_cfg80211_info *cfg,
	cfg80211_roamed(ndev, &roam_info, GFP_KERNEL);
	brcmf_dbg(CONN, "Report roaming result\n");

	if (profile->use_fwsup == BRCMF_PROFILE_FWSUP_1X && profile->is_ft) {
		cfg80211_port_authorized(ndev, profile->bssid, GFP_KERNEL);
		brcmf_dbg(CONN, "Report port authorized\n");
	}

	set_bit(BRCMF_VIF_STATUS_CONNECTED, &ifp->vif->sme_state);
	brcmf_dbg(TRACE, "Exit\n");
	return err;
+1 −0
Original line number Diff line number Diff line
@@ -122,6 +122,7 @@ struct brcmf_cfg80211_profile {
	struct brcmf_cfg80211_security sec;
	struct brcmf_wsec_key key[BRCMF_MAX_DEFAULT_KEYS];
	enum brcmf_profile_fwsup use_fwsup;
	bool is_ft;
};

/**