Blame view
include/net/ieee80211_radiotap.h
6.63 KB
007e5dddd wireless: clean u... |
1 |
/* |
42f82e2e6 wireless: radiota... |
2 3 4 5 6 7 8 9 10 11 12 13 14 |
* Copyright (c) 2017 Intel Deutschland GmbH * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
3905ec456 [PATCH] ieee80211... |
15 |
*/ |
42f82e2e6 wireless: radiota... |
16 17 |
#ifndef __RADIOTAP_H #define __RADIOTAP_H |
3905ec456 [PATCH] ieee80211... |
18 |
|
3905ec456 [PATCH] ieee80211... |
19 |
#include <linux/kernel.h> |
dfe6e81de [MAC80211]: Add g... |
20 |
#include <asm/unaligned.h> |
3905ec456 [PATCH] ieee80211... |
21 |
|
42f82e2e6 wireless: radiota... |
22 23 |
/** * struct ieee82011_radiotap_header - base radiotap header |
a0d69f229 [PATCH] sparse-an... |
24 |
*/ |
3905ec456 [PATCH] ieee80211... |
25 |
struct ieee80211_radiotap_header { |
42f82e2e6 wireless: radiota... |
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
/** * @it_version: radiotap version, always 0 */ uint8_t it_version; /** * @it_pad: padding (or alignment) */ uint8_t it_pad; /** * @it_len: overall radiotap header length */ __le16 it_len; /** * @it_present: (first) present word */ __le32 it_present; |
6a86b9c78 mac80211: fix rad... |
45 |
} __packed; |
3905ec456 [PATCH] ieee80211... |
46 |
|
42f82e2e6 wireless: radiota... |
47 48 49 50 51 |
/* version is always 0 */ #define PKTHDR_RADIOTAP_VERSION 0 /* see the radiotap website for the descriptions */ enum ieee80211_radiotap_presence { |
3905ec456 [PATCH] ieee80211... |
52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
IEEE80211_RADIOTAP_TSFT = 0, IEEE80211_RADIOTAP_FLAGS = 1, IEEE80211_RADIOTAP_RATE = 2, IEEE80211_RADIOTAP_CHANNEL = 3, IEEE80211_RADIOTAP_FHSS = 4, IEEE80211_RADIOTAP_DBM_ANTSIGNAL = 5, IEEE80211_RADIOTAP_DBM_ANTNOISE = 6, IEEE80211_RADIOTAP_LOCK_QUALITY = 7, IEEE80211_RADIOTAP_TX_ATTENUATION = 8, IEEE80211_RADIOTAP_DB_TX_ATTENUATION = 9, IEEE80211_RADIOTAP_DBM_TX_POWER = 10, IEEE80211_RADIOTAP_ANTENNA = 11, IEEE80211_RADIOTAP_DB_ANTSIGNAL = 12, IEEE80211_RADIOTAP_DB_ANTNOISE = 13, |
876c9d3ae [PATCH] Marvell L... |
66 67 68 69 |
IEEE80211_RADIOTAP_RX_FLAGS = 14, IEEE80211_RADIOTAP_TX_FLAGS = 15, IEEE80211_RADIOTAP_RTS_RETRIES = 16, IEEE80211_RADIOTAP_DATA_RETRIES = 17, |
42f82e2e6 wireless: radiota... |
70 |
/* 18 is XChannel, but it's not defined yet */ |
6d744bace mac80211: add MCS... |
71 |
IEEE80211_RADIOTAP_MCS = 19, |
48613ece3 wireless: add rad... |
72 |
IEEE80211_RADIOTAP_AMPDU_STATUS = 20, |
516489218 mac80211: support... |
73 |
IEEE80211_RADIOTAP_VHT = 21, |
99ee7cae3 mac80211: add sup... |
74 |
IEEE80211_RADIOTAP_TIMESTAMP = 22, |
6d744bace mac80211: add MCS... |
75 |
|
33e5a2f77 wireless: update ... |
76 77 78 |
/* valid in every it_present bitmap, even vendor namespaces */ IEEE80211_RADIOTAP_RADIOTAP_NAMESPACE = 29, IEEE80211_RADIOTAP_VENDOR_NAMESPACE = 30, |
876c9d3ae [PATCH] Marvell L... |
79 |
IEEE80211_RADIOTAP_EXT = 31 |
3905ec456 [PATCH] ieee80211... |
80 |
}; |
42f82e2e6 wireless: radiota... |
81 82 83 84 85 86 87 88 89 90 |
/* for IEEE80211_RADIOTAP_FLAGS */ enum ieee80211_radiotap_flags { IEEE80211_RADIOTAP_F_CFP = 0x01, IEEE80211_RADIOTAP_F_SHORTPRE = 0x02, IEEE80211_RADIOTAP_F_WEP = 0x04, IEEE80211_RADIOTAP_F_FRAG = 0x08, IEEE80211_RADIOTAP_F_FCS = 0x10, IEEE80211_RADIOTAP_F_DATAPAD = 0x20, IEEE80211_RADIOTAP_F_BADFCS = 0x40, }; |
876c9d3ae [PATCH] Marvell L... |
91 |
|
42f82e2e6 wireless: radiota... |
92 93 94 95 96 97 98 99 100 101 |
/* for IEEE80211_RADIOTAP_CHANNEL */ enum ieee80211_radiotap_channel_flags { IEEE80211_CHAN_CCK = 0x0020, IEEE80211_CHAN_OFDM = 0x0040, IEEE80211_CHAN_2GHZ = 0x0080, IEEE80211_CHAN_5GHZ = 0x0100, IEEE80211_CHAN_DYN = 0x0400, IEEE80211_CHAN_HALF = 0x4000, IEEE80211_CHAN_QUARTER = 0x8000, }; |
3905ec456 [PATCH] ieee80211... |
102 |
|
42f82e2e6 wireless: radiota... |
103 104 105 106 |
/* for IEEE80211_RADIOTAP_RX_FLAGS */ enum ieee80211_radiotap_rx_flags { IEEE80211_RADIOTAP_F_RX_BADPLCP = 0x0002, }; |
6d744bace mac80211: add MCS... |
107 |
|
42f82e2e6 wireless: radiota... |
108 109 110 111 112 113 114 |
/* for IEEE80211_RADIOTAP_TX_FLAGS */ enum ieee80211_radiotap_tx_flags { IEEE80211_RADIOTAP_F_TX_FAIL = 0x0001, IEEE80211_RADIOTAP_F_TX_CTS = 0x0002, IEEE80211_RADIOTAP_F_TX_RTS = 0x0004, IEEE80211_RADIOTAP_F_TX_NOACK = 0x0008, }; |
6d744bace mac80211: add MCS... |
115 |
|
42f82e2e6 wireless: radiota... |
116 117 118 119 120 121 122 123 124 |
/* for IEEE80211_RADIOTAP_MCS "have" flags */ enum ieee80211_radiotap_mcs_have { IEEE80211_RADIOTAP_MCS_HAVE_BW = 0x01, IEEE80211_RADIOTAP_MCS_HAVE_MCS = 0x02, IEEE80211_RADIOTAP_MCS_HAVE_GI = 0x04, IEEE80211_RADIOTAP_MCS_HAVE_FMT = 0x08, IEEE80211_RADIOTAP_MCS_HAVE_FEC = 0x10, IEEE80211_RADIOTAP_MCS_HAVE_STBC = 0x20, }; |
786677d10 mac80211: add STB... |
125 |
|
42f82e2e6 wireless: radiota... |
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
enum ieee80211_radiotap_mcs_flags { IEEE80211_RADIOTAP_MCS_BW_MASK = 0x03, IEEE80211_RADIOTAP_MCS_BW_20 = 0, IEEE80211_RADIOTAP_MCS_BW_40 = 1, IEEE80211_RADIOTAP_MCS_BW_20L = 2, IEEE80211_RADIOTAP_MCS_BW_20U = 3, IEEE80211_RADIOTAP_MCS_SGI = 0x04, IEEE80211_RADIOTAP_MCS_FMT_GF = 0x08, IEEE80211_RADIOTAP_MCS_FEC_LDPC = 0x10, IEEE80211_RADIOTAP_MCS_STBC_MASK = 0x60, IEEE80211_RADIOTAP_MCS_STBC_1 = 1, IEEE80211_RADIOTAP_MCS_STBC_2 = 2, IEEE80211_RADIOTAP_MCS_STBC_3 = 3, IEEE80211_RADIOTAP_MCS_STBC_SHIFT = 5, }; |
6d744bace mac80211: add MCS... |
142 |
|
42f82e2e6 wireless: radiota... |
143 144 145 146 147 148 149 150 151 |
/* for IEEE80211_RADIOTAP_AMPDU_STATUS */ enum ieee80211_radiotap_ampdu_flags { IEEE80211_RADIOTAP_AMPDU_REPORT_ZEROLEN = 0x0001, IEEE80211_RADIOTAP_AMPDU_IS_ZEROLEN = 0x0002, IEEE80211_RADIOTAP_AMPDU_LAST_KNOWN = 0x0004, IEEE80211_RADIOTAP_AMPDU_IS_LAST = 0x0008, IEEE80211_RADIOTAP_AMPDU_DELIM_CRC_ERR = 0x0010, IEEE80211_RADIOTAP_AMPDU_DELIM_CRC_KNOWN = 0x0020, }; |
6d744bace mac80211: add MCS... |
152 |
|
42f82e2e6 wireless: radiota... |
153 154 155 156 157 158 159 160 161 162 163 164 |
/* for IEEE80211_RADIOTAP_VHT */ enum ieee80211_radiotap_vht_known { IEEE80211_RADIOTAP_VHT_KNOWN_STBC = 0x0001, IEEE80211_RADIOTAP_VHT_KNOWN_TXOP_PS_NA = 0x0002, IEEE80211_RADIOTAP_VHT_KNOWN_GI = 0x0004, IEEE80211_RADIOTAP_VHT_KNOWN_SGI_NSYM_DIS = 0x0008, IEEE80211_RADIOTAP_VHT_KNOWN_LDPC_EXTRA_OFDM_SYM = 0x0010, IEEE80211_RADIOTAP_VHT_KNOWN_BEAMFORMED = 0x0020, IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH = 0x0040, IEEE80211_RADIOTAP_VHT_KNOWN_GROUP_ID = 0x0080, IEEE80211_RADIOTAP_VHT_KNOWN_PARTIAL_AID = 0x0100, }; |
516489218 mac80211: support... |
165 |
|
42f82e2e6 wireless: radiota... |
166 167 168 169 170 171 172 173 |
enum ieee80211_radiotap_vht_flags { IEEE80211_RADIOTAP_VHT_FLAG_STBC = 0x01, IEEE80211_RADIOTAP_VHT_FLAG_TXOP_PS_NA = 0x02, IEEE80211_RADIOTAP_VHT_FLAG_SGI = 0x04, IEEE80211_RADIOTAP_VHT_FLAG_SGI_NSYM_M10_9 = 0x08, IEEE80211_RADIOTAP_VHT_FLAG_LDPC_EXTRA_OFDM_SYM = 0x10, IEEE80211_RADIOTAP_VHT_FLAG_BEAMFORMED = 0x20, }; |
516489218 mac80211: support... |
174 |
|
42f82e2e6 wireless: radiota... |
175 176 177 178 179 180 |
enum ieee80211_radiotap_vht_coding { IEEE80211_RADIOTAP_CODING_LDPC_USER0 = 0x01, IEEE80211_RADIOTAP_CODING_LDPC_USER1 = 0x02, IEEE80211_RADIOTAP_CODING_LDPC_USER2 = 0x04, IEEE80211_RADIOTAP_CODING_LDPC_USER3 = 0x08, }; |
516489218 mac80211: support... |
181 |
|
42f82e2e6 wireless: radiota... |
182 183 184 185 186 187 188 189 190 191 192 193 194 |
/* for IEEE80211_RADIOTAP_TIMESTAMP */ enum ieee80211_radiotap_timestamp_unit_spos { IEEE80211_RADIOTAP_TIMESTAMP_UNIT_MASK = 0x000F, IEEE80211_RADIOTAP_TIMESTAMP_UNIT_MS = 0x0000, IEEE80211_RADIOTAP_TIMESTAMP_UNIT_US = 0x0001, IEEE80211_RADIOTAP_TIMESTAMP_UNIT_NS = 0x0003, IEEE80211_RADIOTAP_TIMESTAMP_SPOS_MASK = 0x00F0, IEEE80211_RADIOTAP_TIMESTAMP_SPOS_BEGIN_MDPU = 0x0000, IEEE80211_RADIOTAP_TIMESTAMP_SPOS_PLCP_SIG_ACQ = 0x0010, IEEE80211_RADIOTAP_TIMESTAMP_SPOS_EO_PPDU = 0x0020, IEEE80211_RADIOTAP_TIMESTAMP_SPOS_EO_MPDU = 0x0030, IEEE80211_RADIOTAP_TIMESTAMP_SPOS_UNKNOWN = 0x00F0, }; |
99ee7cae3 mac80211: add sup... |
195 |
|
42f82e2e6 wireless: radiota... |
196 197 198 199 200 |
enum ieee80211_radiotap_timestamp_flags { IEEE80211_RADIOTAP_TIMESTAMP_FLAG_64BIT = 0x00, IEEE80211_RADIOTAP_TIMESTAMP_FLAG_32BIT = 0x01, IEEE80211_RADIOTAP_TIMESTAMP_FLAG_ACCURACY = 0x02, }; |
99ee7cae3 mac80211: add sup... |
201 |
|
42f82e2e6 wireless: radiota... |
202 203 204 205 |
/** * ieee80211_get_radiotap_len - get radiotap header length */ static inline u16 ieee80211_get_radiotap_len(const char *data) |
571ecf676 [MAC80211]: split... |
206 |
{ |
42f82e2e6 wireless: radiota... |
207 |
struct ieee80211_radiotap_header *hdr = (void *)data; |
571ecf676 [MAC80211]: split... |
208 |
|
8b5ac31e2 include: use get/... |
209 |
return get_unaligned_le16(&hdr->it_len); |
571ecf676 [MAC80211]: split... |
210 |
} |
42f82e2e6 wireless: radiota... |
211 |
#endif /* __RADIOTAP_H */ |