diff options
Diffstat (limited to 'include/linux/ieee80211.h')
| -rw-r--r-- | include/linux/ieee80211.h | 32 | 
1 files changed, 32 insertions, 0 deletions
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h index 48363c3c40f..210e2c32553 100644 --- a/include/linux/ieee80211.h +++ b/include/linux/ieee80211.h @@ -128,6 +128,7 @@  #define IEEE80211_QOS_CTL_ACK_POLICY_NOACK	0x0020  #define IEEE80211_QOS_CTL_ACK_POLICY_NO_EXPL	0x0040  #define IEEE80211_QOS_CTL_ACK_POLICY_BLOCKACK	0x0060 +#define IEEE80211_QOS_CTL_ACK_POLICY_MASK	0x0060  /* A-MSDU 802.11n */  #define IEEE80211_QOS_CTL_A_MSDU_PRESENT	0x0080  /* Mesh Control 802.11s */ @@ -543,6 +544,15 @@ static inline int ieee80211_is_qos_nullfunc(__le16 fc)  	       cpu_to_le16(IEEE80211_FTYPE_DATA | IEEE80211_STYPE_QOS_NULLFUNC);  } +/** + * ieee80211_is_first_frag - check if IEEE80211_SCTL_FRAG is not set + * @seq_ctrl: frame sequence control bytes in little-endian byteorder + */ +static inline int ieee80211_is_first_frag(__le16 seq_ctrl) +{ +	return (seq_ctrl & cpu_to_le16(IEEE80211_SCTL_FRAG)) == 0; +} +  struct ieee80211s_hdr {  	u8 flags;  	u8 ttl; @@ -770,6 +780,9 @@ struct ieee80211_mgmt {  	} u;  } __attribute__ ((packed)); +/* Supported Rates value encodings in 802.11n-2009 7.3.2.2 */ +#define BSS_MEMBERSHIP_SELECTOR_HT_PHY	127 +  /* mgmt header + 1 byte category code */  #define IEEE80211_MIN_ACTION_SIZE offsetof(struct ieee80211_mgmt, u.action.u) @@ -1552,6 +1565,8 @@ enum ieee80211_sa_query_action {  #define WLAN_CIPHER_SUITE_WEP104	0x000FAC05  #define WLAN_CIPHER_SUITE_AES_CMAC	0x000FAC06 +#define WLAN_CIPHER_SUITE_SMS4		0x00147201 +  /* AKM suite selectors */  #define WLAN_AKM_SUITE_8021X		0x000FAC01  #define WLAN_AKM_SUITE_PSK		0x000FAC02 @@ -1689,6 +1704,23 @@ static inline bool ieee80211_is_robust_mgmt_frame(struct ieee80211_hdr *hdr)  }  /** + * ieee80211_is_public_action - check if frame is a public action frame + * @hdr: the frame + * @len: length of the frame + */ +static inline bool ieee80211_is_public_action(struct ieee80211_hdr *hdr, +					      size_t len) +{ +	struct ieee80211_mgmt *mgmt = (void *)hdr; + +	if (len < IEEE80211_MIN_ACTION_SIZE) +		return false; +	if (!ieee80211_is_action(hdr->frame_control)) +		return false; +	return mgmt->u.action.category == WLAN_CATEGORY_PUBLIC; +} + +/**   * ieee80211_fhss_chan_to_freq - get channel frequency   * @channel: the FHSS channel   *  |