aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2014-02-20 15:02:02 -0500
committerJohn W. Linville <linville@tuxdriver.com>2014-02-20 15:02:02 -0500
commit88daf80dcca19ff995cc263592426f734a9702f3 (patch)
tree7a52e25df74e52d00c3821032e719244e8a5526f /include/linux
parent010d3c3989706d800ae72253773fa6537cc9f74c (diff)
parent35582ad9d342025653aaf28ed321bf5352488d7f (diff)
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/ieee80211.h199
1 files changed, 133 insertions, 66 deletions
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h
index e526a8cecb70..5f349355ee54 100644
--- a/include/linux/ieee80211.h
+++ b/include/linux/ieee80211.h
@@ -597,6 +597,20 @@ static inline int ieee80211_is_qos_nullfunc(__le16 fc)
597} 597}
598 598
599/** 599/**
600 * ieee80211_is_bufferable_mmpdu - check if frame is bufferable MMPDU
601 * @fc: frame control field in little-endian byteorder
602 */
603static inline bool ieee80211_is_bufferable_mmpdu(__le16 fc)
604{
605 /* IEEE 802.11-2012, definition of "bufferable management frame";
606 * note that this ignores the IBSS special case. */
607 return ieee80211_is_mgmt(fc) &&
608 (ieee80211_is_action(fc) ||
609 ieee80211_is_disassoc(fc) ||
610 ieee80211_is_deauth(fc));
611}
612
613/**
600 * ieee80211_is_first_frag - check if IEEE80211_SCTL_FRAG is not set 614 * ieee80211_is_first_frag - check if IEEE80211_SCTL_FRAG is not set
601 * @seq_ctrl: frame sequence control bytes in little-endian byteorder 615 * @seq_ctrl: frame sequence control bytes in little-endian byteorder
602 */ 616 */
@@ -1636,51 +1650,22 @@ enum ieee80211_reasoncode {
1636enum ieee80211_eid { 1650enum ieee80211_eid {
1637 WLAN_EID_SSID = 0, 1651 WLAN_EID_SSID = 0,
1638 WLAN_EID_SUPP_RATES = 1, 1652 WLAN_EID_SUPP_RATES = 1,
1639 WLAN_EID_FH_PARAMS = 2, 1653 WLAN_EID_FH_PARAMS = 2, /* reserved now */
1640 WLAN_EID_DS_PARAMS = 3, 1654 WLAN_EID_DS_PARAMS = 3,
1641 WLAN_EID_CF_PARAMS = 4, 1655 WLAN_EID_CF_PARAMS = 4,
1642 WLAN_EID_TIM = 5, 1656 WLAN_EID_TIM = 5,
1643 WLAN_EID_IBSS_PARAMS = 6, 1657 WLAN_EID_IBSS_PARAMS = 6,
1644 WLAN_EID_CHALLENGE = 16,
1645
1646 WLAN_EID_COUNTRY = 7, 1658 WLAN_EID_COUNTRY = 7,
1647 WLAN_EID_HP_PARAMS = 8, 1659 WLAN_EID_HP_PARAMS = 8,
1648 WLAN_EID_HP_TABLE = 9, 1660 WLAN_EID_HP_TABLE = 9,
1649 WLAN_EID_REQUEST = 10, 1661 WLAN_EID_REQUEST = 10,
1650
1651 WLAN_EID_QBSS_LOAD = 11, 1662 WLAN_EID_QBSS_LOAD = 11,
1652 WLAN_EID_EDCA_PARAM_SET = 12, 1663 WLAN_EID_EDCA_PARAM_SET = 12,
1653 WLAN_EID_TSPEC = 13, 1664 WLAN_EID_TSPEC = 13,
1654 WLAN_EID_TCLAS = 14, 1665 WLAN_EID_TCLAS = 14,
1655 WLAN_EID_SCHEDULE = 15, 1666 WLAN_EID_SCHEDULE = 15,
1656 WLAN_EID_TS_DELAY = 43, 1667 WLAN_EID_CHALLENGE = 16,
1657 WLAN_EID_TCLAS_PROCESSING = 44, 1668 /* 17-31 reserved for challenge text extension */
1658 WLAN_EID_QOS_CAPA = 46,
1659 /* 802.11z */
1660 WLAN_EID_LINK_ID = 101,
1661 /* 802.11s */
1662 WLAN_EID_MESH_CONFIG = 113,
1663 WLAN_EID_MESH_ID = 114,
1664 WLAN_EID_LINK_METRIC_REPORT = 115,
1665 WLAN_EID_CONGESTION_NOTIFICATION = 116,
1666 WLAN_EID_PEER_MGMT = 117,
1667 WLAN_EID_CHAN_SWITCH_PARAM = 118,
1668 WLAN_EID_MESH_AWAKE_WINDOW = 119,
1669 WLAN_EID_BEACON_TIMING = 120,
1670 WLAN_EID_MCCAOP_SETUP_REQ = 121,
1671 WLAN_EID_MCCAOP_SETUP_RESP = 122,
1672 WLAN_EID_MCCAOP_ADVERT = 123,
1673 WLAN_EID_MCCAOP_TEARDOWN = 124,
1674 WLAN_EID_GANN = 125,
1675 WLAN_EID_RANN = 126,
1676 WLAN_EID_PREQ = 130,
1677 WLAN_EID_PREP = 131,
1678 WLAN_EID_PERR = 132,
1679 WLAN_EID_PXU = 137,
1680 WLAN_EID_PXUC = 138,
1681 WLAN_EID_AUTH_MESH_PEER_EXCH = 139,
1682 WLAN_EID_MIC = 140,
1683
1684 WLAN_EID_PWR_CONSTRAINT = 32, 1669 WLAN_EID_PWR_CONSTRAINT = 32,
1685 WLAN_EID_PWR_CAPABILITY = 33, 1670 WLAN_EID_PWR_CAPABILITY = 33,
1686 WLAN_EID_TPC_REQUEST = 34, 1671 WLAN_EID_TPC_REQUEST = 34,
@@ -1691,66 +1676,114 @@ enum ieee80211_eid {
1691 WLAN_EID_MEASURE_REPORT = 39, 1676 WLAN_EID_MEASURE_REPORT = 39,
1692 WLAN_EID_QUIET = 40, 1677 WLAN_EID_QUIET = 40,
1693 WLAN_EID_IBSS_DFS = 41, 1678 WLAN_EID_IBSS_DFS = 41,
1694
1695 WLAN_EID_ERP_INFO = 42, 1679 WLAN_EID_ERP_INFO = 42,
1696 WLAN_EID_EXT_SUPP_RATES = 50, 1680 WLAN_EID_TS_DELAY = 43,
1697 1681 WLAN_EID_TCLAS_PROCESSING = 44,
1698 WLAN_EID_HT_CAPABILITY = 45, 1682 WLAN_EID_HT_CAPABILITY = 45,
1699 WLAN_EID_HT_OPERATION = 61, 1683 WLAN_EID_QOS_CAPA = 46,
1700 WLAN_EID_SECONDARY_CHANNEL_OFFSET = 62, 1684 /* 47 reserved for Broadcom */
1701
1702 WLAN_EID_RSN = 48, 1685 WLAN_EID_RSN = 48,
1703 WLAN_EID_MMIE = 76, 1686 WLAN_EID_802_15_COEX = 49,
1704 WLAN_EID_VENDOR_SPECIFIC = 221, 1687 WLAN_EID_EXT_SUPP_RATES = 50,
1705 WLAN_EID_QOS_PARAMETER = 222,
1706
1707 WLAN_EID_AP_CHAN_REPORT = 51, 1688 WLAN_EID_AP_CHAN_REPORT = 51,
1708 WLAN_EID_NEIGHBOR_REPORT = 52, 1689 WLAN_EID_NEIGHBOR_REPORT = 52,
1709 WLAN_EID_RCPI = 53, 1690 WLAN_EID_RCPI = 53,
1691 WLAN_EID_MOBILITY_DOMAIN = 54,
1692 WLAN_EID_FAST_BSS_TRANSITION = 55,
1693 WLAN_EID_TIMEOUT_INTERVAL = 56,
1694 WLAN_EID_RIC_DATA = 57,
1695 WLAN_EID_DSE_REGISTERED_LOCATION = 58,
1696 WLAN_EID_SUPPORTED_REGULATORY_CLASSES = 59,
1697 WLAN_EID_EXT_CHANSWITCH_ANN = 60,
1698 WLAN_EID_HT_OPERATION = 61,
1699 WLAN_EID_SECONDARY_CHANNEL_OFFSET = 62,
1710 WLAN_EID_BSS_AVG_ACCESS_DELAY = 63, 1700 WLAN_EID_BSS_AVG_ACCESS_DELAY = 63,
1711 WLAN_EID_ANTENNA_INFO = 64, 1701 WLAN_EID_ANTENNA_INFO = 64,
1712 WLAN_EID_RSNI = 65, 1702 WLAN_EID_RSNI = 65,
1713 WLAN_EID_MEASUREMENT_PILOT_TX_INFO = 66, 1703 WLAN_EID_MEASUREMENT_PILOT_TX_INFO = 66,
1714 WLAN_EID_BSS_AVAILABLE_CAPACITY = 67, 1704 WLAN_EID_BSS_AVAILABLE_CAPACITY = 67,
1715 WLAN_EID_BSS_AC_ACCESS_DELAY = 68, 1705 WLAN_EID_BSS_AC_ACCESS_DELAY = 68,
1706 WLAN_EID_TIME_ADVERTISEMENT = 69,
1716 WLAN_EID_RRM_ENABLED_CAPABILITIES = 70, 1707 WLAN_EID_RRM_ENABLED_CAPABILITIES = 70,
1717 WLAN_EID_MULTIPLE_BSSID = 71, 1708 WLAN_EID_MULTIPLE_BSSID = 71,
1718 WLAN_EID_BSS_COEX_2040 = 72, 1709 WLAN_EID_BSS_COEX_2040 = 72,
1719 WLAN_EID_OVERLAP_BSS_SCAN_PARAM = 74, 1710 WLAN_EID_OVERLAP_BSS_SCAN_PARAM = 74,
1720 WLAN_EID_EXT_CAPABILITY = 127,
1721
1722 WLAN_EID_MOBILITY_DOMAIN = 54,
1723 WLAN_EID_FAST_BSS_TRANSITION = 55,
1724 WLAN_EID_TIMEOUT_INTERVAL = 56,
1725 WLAN_EID_RIC_DATA = 57,
1726 WLAN_EID_RIC_DESCRIPTOR = 75, 1711 WLAN_EID_RIC_DESCRIPTOR = 75,
1727 1712 WLAN_EID_MMIE = 76,
1728 WLAN_EID_DSE_REGISTERED_LOCATION = 58, 1713 WLAN_EID_ASSOC_COMEBACK_TIME = 77,
1729 WLAN_EID_SUPPORTED_REGULATORY_CLASSES = 59, 1714 WLAN_EID_EVENT_REQUEST = 78,
1730 WLAN_EID_EXT_CHANSWITCH_ANN = 60, 1715 WLAN_EID_EVENT_REPORT = 79,
1731 1716 WLAN_EID_DIAGNOSTIC_REQUEST = 80,
1732 WLAN_EID_VHT_CAPABILITY = 191, 1717 WLAN_EID_DIAGNOSTIC_REPORT = 81,
1733 WLAN_EID_VHT_OPERATION = 192, 1718 WLAN_EID_LOCATION_PARAMS = 82,
1734 WLAN_EID_OPMODE_NOTIF = 199,
1735 WLAN_EID_WIDE_BW_CHANNEL_SWITCH = 194,
1736 WLAN_EID_CHANNEL_SWITCH_WRAPPER = 196,
1737 WLAN_EID_EXTENDED_BSS_LOAD = 193,
1738 WLAN_EID_VHT_TX_POWER_ENVELOPE = 195,
1739 WLAN_EID_AID = 197,
1740 WLAN_EID_QUIET_CHANNEL = 198,
1741
1742 /* 802.11ad */
1743 WLAN_EID_NON_TX_BSSID_CAP = 83, 1719 WLAN_EID_NON_TX_BSSID_CAP = 83,
1720 WLAN_EID_SSID_LIST = 84,
1721 WLAN_EID_MULTI_BSSID_IDX = 85,
1722 WLAN_EID_FMS_DESCRIPTOR = 86,
1723 WLAN_EID_FMS_REQUEST = 87,
1724 WLAN_EID_FMS_RESPONSE = 88,
1725 WLAN_EID_QOS_TRAFFIC_CAPA = 89,
1726 WLAN_EID_BSS_MAX_IDLE_PERIOD = 90,
1727 WLAN_EID_TSF_REQUEST = 91,
1728 WLAN_EID_TSF_RESPOSNE = 92,
1729 WLAN_EID_WNM_SLEEP_MODE = 93,
1730 WLAN_EID_TIM_BCAST_REQ = 94,
1731 WLAN_EID_TIM_BCAST_RESP = 95,
1732 WLAN_EID_COLL_IF_REPORT = 96,
1733 WLAN_EID_CHANNEL_USAGE = 97,
1734 WLAN_EID_TIME_ZONE = 98,
1735 WLAN_EID_DMS_REQUEST = 99,
1736 WLAN_EID_DMS_RESPONSE = 100,
1737 WLAN_EID_LINK_ID = 101,
1738 WLAN_EID_WAKEUP_SCHEDUL = 102,
1739 /* 103 reserved */
1740 WLAN_EID_CHAN_SWITCH_TIMING = 104,
1741 WLAN_EID_PTI_CONTROL = 105,
1742 WLAN_EID_PU_BUFFER_STATUS = 106,
1743 WLAN_EID_INTERWORKING = 107,
1744 WLAN_EID_ADVERTISEMENT_PROTOCOL = 108,
1745 WLAN_EID_EXPEDITED_BW_REQ = 109,
1746 WLAN_EID_QOS_MAP_SET = 110,
1747 WLAN_EID_ROAMING_CONSORTIUM = 111,
1748 WLAN_EID_EMERGENCY_ALERT = 112,
1749 WLAN_EID_MESH_CONFIG = 113,
1750 WLAN_EID_MESH_ID = 114,
1751 WLAN_EID_LINK_METRIC_REPORT = 115,
1752 WLAN_EID_CONGESTION_NOTIFICATION = 116,
1753 WLAN_EID_PEER_MGMT = 117,
1754 WLAN_EID_CHAN_SWITCH_PARAM = 118,
1755 WLAN_EID_MESH_AWAKE_WINDOW = 119,
1756 WLAN_EID_BEACON_TIMING = 120,
1757 WLAN_EID_MCCAOP_SETUP_REQ = 121,
1758 WLAN_EID_MCCAOP_SETUP_RESP = 122,
1759 WLAN_EID_MCCAOP_ADVERT = 123,
1760 WLAN_EID_MCCAOP_TEARDOWN = 124,
1761 WLAN_EID_GANN = 125,
1762 WLAN_EID_RANN = 126,
1763 WLAN_EID_EXT_CAPABILITY = 127,
1764 /* 128, 129 reserved for Agere */
1765 WLAN_EID_PREQ = 130,
1766 WLAN_EID_PREP = 131,
1767 WLAN_EID_PERR = 132,
1768 /* 133-136 reserved for Cisco */
1769 WLAN_EID_PXU = 137,
1770 WLAN_EID_PXUC = 138,
1771 WLAN_EID_AUTH_MESH_PEER_EXCH = 139,
1772 WLAN_EID_MIC = 140,
1773 WLAN_EID_DESTINATION_URI = 141,
1774 WLAN_EID_UAPSD_COEX = 142,
1744 WLAN_EID_WAKEUP_SCHEDULE = 143, 1775 WLAN_EID_WAKEUP_SCHEDULE = 143,
1745 WLAN_EID_EXT_SCHEDULE = 144, 1776 WLAN_EID_EXT_SCHEDULE = 144,
1746 WLAN_EID_STA_AVAILABILITY = 145, 1777 WLAN_EID_STA_AVAILABILITY = 145,
1747 WLAN_EID_DMG_TSPEC = 146, 1778 WLAN_EID_DMG_TSPEC = 146,
1748 WLAN_EID_DMG_AT = 147, 1779 WLAN_EID_DMG_AT = 147,
1749 WLAN_EID_DMG_CAP = 148, 1780 WLAN_EID_DMG_CAP = 148,
1781 /* 149-150 reserved for Cisco */
1750 WLAN_EID_DMG_OPERATION = 151, 1782 WLAN_EID_DMG_OPERATION = 151,
1751 WLAN_EID_DMG_BSS_PARAM_CHANGE = 152, 1783 WLAN_EID_DMG_BSS_PARAM_CHANGE = 152,
1752 WLAN_EID_DMG_BEAM_REFINEMENT = 153, 1784 WLAN_EID_DMG_BEAM_REFINEMENT = 153,
1753 WLAN_EID_CHANNEL_MEASURE_FEEDBACK = 154, 1785 WLAN_EID_CHANNEL_MEASURE_FEEDBACK = 154,
1786 /* 155-156 reserved for Cisco */
1754 WLAN_EID_AWAKE_WINDOW = 157, 1787 WLAN_EID_AWAKE_WINDOW = 157,
1755 WLAN_EID_MULTI_BAND = 158, 1788 WLAN_EID_MULTI_BAND = 158,
1756 WLAN_EID_ADDBA_EXT = 159, 1789 WLAN_EID_ADDBA_EXT = 159,
@@ -1767,11 +1800,34 @@ enum ieee80211_eid {
1767 WLAN_EID_MULTIPLE_MAC_ADDR = 170, 1800 WLAN_EID_MULTIPLE_MAC_ADDR = 170,
1768 WLAN_EID_U_PID = 171, 1801 WLAN_EID_U_PID = 171,
1769 WLAN_EID_DMG_LINK_ADAPT_ACK = 172, 1802 WLAN_EID_DMG_LINK_ADAPT_ACK = 172,
1803 /* 173 reserved for Symbol */
1804 WLAN_EID_MCCAOP_ADV_OVERVIEW = 174,
1770 WLAN_EID_QUIET_PERIOD_REQ = 175, 1805 WLAN_EID_QUIET_PERIOD_REQ = 175,
1806 /* 176 reserved for Symbol */
1771 WLAN_EID_QUIET_PERIOD_RESP = 177, 1807 WLAN_EID_QUIET_PERIOD_RESP = 177,
1808 /* 178-179 reserved for Symbol */
1809 /* 180 reserved for ISO/IEC 20011 */
1772 WLAN_EID_EPAC_POLICY = 182, 1810 WLAN_EID_EPAC_POLICY = 182,
1773 WLAN_EID_CLISTER_TIME_OFF = 183, 1811 WLAN_EID_CLISTER_TIME_OFF = 183,
1812 WLAN_EID_INTER_AC_PRIO = 184,
1813 WLAN_EID_SCS_DESCRIPTOR = 185,
1814 WLAN_EID_QLOAD_REPORT = 186,
1815 WLAN_EID_HCCA_TXOP_UPDATE_COUNT = 187,
1816 WLAN_EID_HL_STREAM_ID = 188,
1817 WLAN_EID_GCR_GROUP_ADDR = 189,
1774 WLAN_EID_ANTENNA_SECTOR_ID_PATTERN = 190, 1818 WLAN_EID_ANTENNA_SECTOR_ID_PATTERN = 190,
1819 WLAN_EID_VHT_CAPABILITY = 191,
1820 WLAN_EID_VHT_OPERATION = 192,
1821 WLAN_EID_EXTENDED_BSS_LOAD = 193,
1822 WLAN_EID_WIDE_BW_CHANNEL_SWITCH = 194,
1823 WLAN_EID_VHT_TX_POWER_ENVELOPE = 195,
1824 WLAN_EID_CHANNEL_SWITCH_WRAPPER = 196,
1825 WLAN_EID_AID = 197,
1826 WLAN_EID_QUIET_CHANNEL = 198,
1827 WLAN_EID_OPMODE_NOTIF = 199,
1828
1829 WLAN_EID_VENDOR_SPECIFIC = 221,
1830 WLAN_EID_QOS_PARAMETER = 222,
1775}; 1831};
1776 1832
1777/* Action category code */ 1833/* Action category code */
@@ -2192,10 +2248,10 @@ static inline u8 *ieee80211_get_DA(struct ieee80211_hdr *hdr)
2192} 2248}
2193 2249
2194/** 2250/**
2195 * ieee80211_is_robust_mgmt_frame - check if frame is a robust management frame 2251 * _ieee80211_is_robust_mgmt_frame - check if frame is a robust management frame
2196 * @hdr: the frame (buffer must include at least the first octet of payload) 2252 * @hdr: the frame (buffer must include at least the first octet of payload)
2197 */ 2253 */
2198static inline bool ieee80211_is_robust_mgmt_frame(struct ieee80211_hdr *hdr) 2254static inline bool _ieee80211_is_robust_mgmt_frame(struct ieee80211_hdr *hdr)
2199{ 2255{
2200 if (ieee80211_is_disassoc(hdr->frame_control) || 2256 if (ieee80211_is_disassoc(hdr->frame_control) ||
2201 ieee80211_is_deauth(hdr->frame_control)) 2257 ieee80211_is_deauth(hdr->frame_control))
@@ -2224,6 +2280,17 @@ static inline bool ieee80211_is_robust_mgmt_frame(struct ieee80211_hdr *hdr)
2224} 2280}
2225 2281
2226/** 2282/**
2283 * ieee80211_is_robust_mgmt_frame - check if skb contains a robust mgmt frame
2284 * @skb: the skb containing the frame, length will be checked
2285 */
2286static inline bool ieee80211_is_robust_mgmt_frame(struct sk_buff *skb)
2287{
2288 if (skb->len < 25)
2289 return false;
2290 return _ieee80211_is_robust_mgmt_frame((void *)skb->data);
2291}
2292
2293/**
2227 * ieee80211_is_public_action - check if frame is a public action frame 2294 * ieee80211_is_public_action - check if frame is a public action frame
2228 * @hdr: the frame 2295 * @hdr: the frame
2229 * @len: length of the frame 2296 * @len: length of the frame