aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2014-02-20 16:55:49 -0500
committerDavid S. Miller <davem@davemloft.net>2014-02-20 16:55:49 -0500
commit61cc776fc1f51616ab22a898a2ea01e2cf0be567 (patch)
tree7a52e25df74e52d00c3821032e719244e8a5526f /include/linux
parent010d3c3989706d800ae72253773fa6537cc9f74c (diff)
parent88daf80dcca19ff995cc263592426f734a9702f3 (diff)
Merge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next
John W. Linville says: ==================== Please pull this batch of wireless updates intended for the 3.15 stream! For the mac80211 bits, Johannes says: "We have some cleanups and minor fixes as well as userspace API improvements from a lot of people, extended VHT support for radiotap from Emmanuel, CSA improvements from Andrei, Luca and Michal. I've also included my work on hwsim to make dynamic registration of radios possible." Along with that, we get the usual round of updates to ath9k, brcmfmac, mwifiex, wcn36xx, and the ti drivers -- nothing particularly noteworthy, mostly just random updates and refactoring. Also included is a pull of the wireless tree, intended to resolve some potential merge issues. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
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