Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5394af4d authored by Jouni Malinen's avatar Jouni Malinen Committed by John W. Linville
Browse files

mac80211: 802.11w - STA flag for MFP



Add flags for setting STA entries and struct ieee80211_if_sta to
indicate whether management frame protection (MFP) is used.

Signed-off-by: default avatarJouni Malinen <j@w1.fi>
Acked-by: default avatarJohannes Berg <johannes@sipsolutions.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 039498c6
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -412,12 +412,14 @@ enum nl80211_iftype {
 * @NL80211_STA_FLAG_SHORT_PREAMBLE: station is capable of receiving frames
 *	with short barker preamble
 * @NL80211_STA_FLAG_WME: station is WME/QoS capable
 * @NL80211_STA_FLAG_MFP: station uses management frame protection
 */
enum nl80211_sta_flags {
	__NL80211_STA_FLAG_INVALID,
	NL80211_STA_FLAG_AUTHORIZED,
	NL80211_STA_FLAG_SHORT_PREAMBLE,
	NL80211_STA_FLAG_WME,
	NL80211_STA_FLAG_MFP,

	/* keep last */
	__NL80211_STA_FLAG_AFTER_LAST,
+2 −0
Original line number Diff line number Diff line
@@ -112,12 +112,14 @@ struct beacon_parameters {
 * @STATION_FLAG_SHORT_PREAMBLE: station is capable of receiving frames
 *	with short preambles
 * @STATION_FLAG_WME: station is WME/QoS capable
 * @STATION_FLAG_MFP: station uses management frame protection
 */
enum station_flags {
	STATION_FLAG_CHANGED		= 1<<0,
	STATION_FLAG_AUTHORIZED		= 1<<NL80211_STA_FLAG_AUTHORIZED,
	STATION_FLAG_SHORT_PREAMBLE	= 1<<NL80211_STA_FLAG_SHORT_PREAMBLE,
	STATION_FLAG_WME		= 1<<NL80211_STA_FLAG_WME,
	STATION_FLAG_MFP		= 1<<NL80211_STA_FLAG_MFP,
};

/**
+4 −0
Original line number Diff line number Diff line
@@ -630,6 +630,10 @@ static void sta_apply_parameters(struct ieee80211_local *local,
		sta->flags &= ~WLAN_STA_WME;
		if (params->station_flags & STATION_FLAG_WME)
			sta->flags |= WLAN_STA_WME;

		sta->flags &= ~WLAN_STA_MFP;
		if (params->station_flags & STATION_FLAG_MFP)
			sta->flags |= WLAN_STA_MFP;
		spin_unlock_bh(&sta->lock);
	}

+3 −2
Original line number Diff line number Diff line
@@ -67,14 +67,15 @@ static ssize_t sta_flags_read(struct file *file, char __user *userbuf,
	char buf[100];
	struct sta_info *sta = file->private_data;
	u32 staflags = get_sta_flags(sta);
	int res = scnprintf(buf, sizeof(buf), "%s%s%s%s%s%s%s",
	int res = scnprintf(buf, sizeof(buf), "%s%s%s%s%s%s%s%s",
		staflags & WLAN_STA_AUTH ? "AUTH\n" : "",
		staflags & WLAN_STA_ASSOC ? "ASSOC\n" : "",
		staflags & WLAN_STA_PS ? "PS\n" : "",
		staflags & WLAN_STA_AUTHORIZED ? "AUTHORIZED\n" : "",
		staflags & WLAN_STA_SHORT_PREAMBLE ? "SHORT PREAMBLE\n" : "",
		staflags & WLAN_STA_WME ? "WME\n" : "",
		staflags & WLAN_STA_WDS ? "WDS\n" : "");
		staflags & WLAN_STA_WDS ? "WDS\n" : "",
		staflags & WLAN_STA_MFP ? "MFP\n" : "");
	return simple_read_from_buffer(userbuf, count, ppos, buf, res);
}
STA_OPS(flags);
+1 −0
Original line number Diff line number Diff line
@@ -260,6 +260,7 @@ struct mesh_preq_queue {
#define IEEE80211_STA_PRIVACY_INVOKED	BIT(13)
#define IEEE80211_STA_TKIP_WEP_USED	BIT(14)
#define IEEE80211_STA_CSA_RECEIVED	BIT(15)
#define IEEE80211_STA_MFP_ENABLED	BIT(16)
/* flags for MLME request */
#define IEEE80211_STA_REQ_SCAN 0
#define IEEE80211_STA_REQ_DIRECT_PROBE 1
Loading