summaryrefslogtreecommitdiffstats
path: root/src/common/include/proto/ieee80211_radiotap.h
blob: d3945b8403a0f6b92e777635f1365fab05fce0ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
/* $FreeBSD: src/sys/net80211/ieee80211_radiotap.h,v 1.11 2007/12/13 01:23:40 sam Exp $ */

#ifndef _NET80211_IEEE80211_RADIOTAP_H_
#define _NET80211_IEEE80211_RADIOTAP_H_

#if defined(__KERNEL__) || defined(_KERNEL)
#ifndef DLT_IEEE802_11_RADIO
#define	DLT_IEEE802_11_RADIO	127	
#endif
#endif 

#define	IEEE80211_RADIOTAP_HDRLEN	64

struct ieee80211_radiotap_header {
	uint8_t		it_version;	
	uint8_t		it_pad;
	uint16_t	it_len;		
	uint32_t	it_present;	
} __attribute__((packed));

enum ieee80211_radiotap_type {
	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,

	IEEE80211_RADIOTAP_TXFLAGS = 15,
	IEEE80211_RADIOTAP_RETRIES = 17,
	IEEE80211_RADIOTAP_XCHANNEL = 18,
	IEEE80211_RADIOTAP_MCS = 19,
	IEEE80211_RADIOTAP_AMPDU = 20,
	IEEE80211_RADIOTAP_VHT = 21,
	IEEE80211_RADIOTAP_RADIOTAP_NAMESPACE = 29,
	IEEE80211_RADIOTAP_VENDOR_NAMESPACE = 30,
	IEEE80211_RADIOTAP_EXT = 31,
	};

#ifndef _KERNEL

#define	IEEE80211_CHAN_TURBO	0x00000010 
#define	IEEE80211_CHAN_CCK	0x00000020 
#define	IEEE80211_CHAN_OFDM	0x00000040 
#define	IEEE80211_CHAN_2GHZ	0x00000080 
#define	IEEE80211_CHAN_5GHZ	0x00000100 
#define	IEEE80211_CHAN_PASSIVE	0x00000200 
#define	IEEE80211_CHAN_DYN	0x00000400 
#define	IEEE80211_CHAN_GFSK	0x00000800 
#define	IEEE80211_CHAN_GSM	0x00001000 
#define	IEEE80211_CHAN_STURBO	0x00002000 
#define	IEEE80211_CHAN_HALF	0x00004000 
#define	IEEE80211_CHAN_QUARTER	0x00008000 
#define	IEEE80211_CHAN_HT20	0x00010000 
#define	IEEE80211_CHAN_HT40U	0x00020000 
#define	IEEE80211_CHAN_HT40D	0x00040000 
#endif 

#define	IEEE80211_RADIOTAP_F_CFP	0x01	
#define	IEEE80211_RADIOTAP_F_SHORTPRE	0x02	
#define	IEEE80211_RADIOTAP_F_WEP	0x04	
#define	IEEE80211_RADIOTAP_F_FRAG	0x08	
#define	IEEE80211_RADIOTAP_F_FCS	0x10	
#define	IEEE80211_RADIOTAP_F_DATAPAD	0x20	
#define	IEEE80211_RADIOTAP_F_BADFCS	0x40	

#define IEEE80211_RADIOTAP_MCS_HAVE_BW          0x01
#define IEEE80211_RADIOTAP_MCS_HAVE_MCS         0x02
#define IEEE80211_RADIOTAP_MCS_HAVE_GI          0x04
#define IEEE80211_RADIOTAP_MCS_HAVE_FMT         0x08
#define IEEE80211_RADIOTAP_MCS_HAVE_FEC         0x10

#define IEEE80211_RADIOTAP_MCS_BW_MASK          0x03
#define IEEE80211_RADIOTAP_MCS_BW_20		0
#define IEEE80211_RADIOTAP_MCS_BW_40		1
#define IEEE80211_RADIOTAP_MCS_BW_20L		2
#define IEEE80211_RADIOTAP_MCS_BW_20U		3
#define IEEE80211_RADIOTAP_MCS_SGI              0x04
#define IEEE80211_RADIOTAP_MCS_FMT_GF           0x08
#define IEEE80211_RADIOTAP_MCS_FEC_LDPC         0x10

#define IEEE80211_RADIOTAP_MCS_BW_80		0x20
#define IEEE80211_RADIOTAP_MCS_BW_20LL		0x40
#define IEEE80211_RADIOTAP_MCS_BW_20LU		0x60
#define IEEE80211_RADIOTAP_MCS_BW_20UL		0x80
#define IEEE80211_RADIOTAP_MCS_BW_20UU		0xa0
#define IEEE80211_RADIOTAP_MCS_BW_40L		0xc0
#define IEEE80211_RADIOTAP_MCS_BW_40U		0xe0

#define IEEE80211_RADIOTAP_VHT_HAVE_STBC	0x0001
#define IEEE80211_RADIOTAP_VHT_HAVE_TXOP_PS	0x0002
#define IEEE80211_RADIOTAP_VHT_HAVE_GI		0x0004
#define IEEE80211_RADIOTAP_VHT_HAVE_SGI_NSYM_DA	0x0008
#define IEEE80211_RADIOTAP_VHT_HAVE_LDPC_EXTRA	0x0010
#define IEEE80211_RADIOTAP_VHT_HAVE_BF		0x0020
#define IEEE80211_RADIOTAP_VHT_HAVE_BW		0x0040
#define IEEE80211_RADIOTAP_VHT_HAVE_GID		0x0080
#define IEEE80211_RADIOTAP_VHT_HAVE_PAID	0x0100

#define IEEE80211_RADIOTAP_VHT_STBC		0x01
#define IEEE80211_RADIOTAP_VHT_TXOP_PS		0x02
#define IEEE80211_RADIOTAP_VHT_SGI		0x04
#define IEEE80211_RADIOTAP_VHT_SGI_NSYM_DA	0x08
#define IEEE80211_RADIOTAP_VHT_LDPC_EXTRA	0x10
#define IEEE80211_RADIOTAP_VHT_BF		0x20

#define IEEE80211_RADIOTAP_VHT_NSS		0x0f
#define IEEE80211_RADIOTAP_VHT_MCS		0xf0

#define IEEE80211_RADIOTAP_VHT_CODING_LDPC	0x01

#define IEEE80211_RADIOTAP_VHT_BW_20    	IEEE80211_RADIOTAP_MCS_BW_20
#define IEEE80211_RADIOTAP_VHT_BW_40    	IEEE80211_RADIOTAP_MCS_BW_40
#define IEEE80211_RADIOTAP_VHT_BW_20L   	IEEE80211_RADIOTAP_MCS_BW_20L
#define IEEE80211_RADIOTAP_VHT_BW_20U   	IEEE80211_RADIOTAP_MCS_BW_20U
#define IEEE80211_RADIOTAP_VHT_BW_80    	4
#define IEEE80211_RADIOTAP_VHT_BW_40L   	5
#define IEEE80211_RADIOTAP_VHT_BW_40U   	6
#define IEEE80211_RADIOTAP_VHT_BW_20LL		7
#define IEEE80211_RADIOTAP_VHT_BW_20LU		8
#define IEEE80211_RADIOTAP_VHT_BW_20UL		9
#define IEEE80211_RADIOTAP_VHT_BW_20UU		10
#define IEEE80211_RADIOTAP_VHT_BW_160		11
#define IEEE80211_RADIOTAP_VHT_BW_80L		12
#define IEEE80211_RADIOTAP_VHT_BW_80U		13
#define IEEE80211_RADIOTAP_VHT_BW_40LL		14
#define IEEE80211_RADIOTAP_VHT_BW_40LU		15
#define IEEE80211_RADIOTAP_VHT_BW_40UL		16
#define IEEE80211_RADIOTAP_VHT_BW_40UU		17
#define IEEE80211_RADIOTAP_VHT_BW_20LLL		18
#define IEEE80211_RADIOTAP_VHT_BW_20LLU		19
#define IEEE80211_RADIOTAP_VHT_BW_20LUL		20
#define IEEE80211_RADIOTAP_VHT_BW_20LUU		21
#define IEEE80211_RADIOTAP_VHT_BW_20ULL		22
#define IEEE80211_RADIOTAP_VHT_BW_20ULU		23
#define IEEE80211_RADIOTAP_VHT_BW_20UUL		24
#define IEEE80211_RADIOTAP_VHT_BW_20UUU		25

#define IEEE80211_RADIOTAP_TXF_FAIL	0x0001	
#define IEEE80211_RADIOTAP_TXF_CTS	0x0002	
#define IEEE80211_RADIOTAP_TXF_RTSCTS	0x0004	
#define IEEE80211_RADIOTAP_TXF_NOACK	0x0008	
#define IEEE80211_RADIOTAP_TXF_SEQOVR	0x0010	

#define IEEE80211_RADIOTAP_AMPDU_REPORT_ZEROLEN         0x0001
#define IEEE80211_RADIOTAP_AMPDU_IS_ZEROLEN             0x0002
#define IEEE80211_RADIOTAP_AMPDU_LAST_KNOWN             0x0004
#define IEEE80211_RADIOTAP_AMPDU_IS_LAST                0x0008
#define IEEE80211_RADIOTAP_AMPDU_DELIM_CRC_ERR          0x0010
#define IEEE80211_RADIOTAP_AMPDU_DELIM_CRC_KNOWN        0x0020
#define IEEE80211_RADIOTAP_AMPDU_MPDU_ONLY		0x8000

#endif