xref: /openwifi/user_space/inject_80211/radiotap.h (revision 7273ec43e17ceddce2fc08da166686f9b26c5c00)
1*7273ec43Smmehari #include "ieee80211_radiotap.h"
2*7273ec43Smmehari 
3*7273ec43Smmehari /* Radiotap header iteration
4*7273ec43Smmehari  *   implemented in net/wireless/radiotap.c
5*7273ec43Smmehari  *   docs in Documentation/networking/radiotap-headers.txt
6*7273ec43Smmehari  */
7*7273ec43Smmehari /**
8*7273ec43Smmehari  * struct ieee80211_radiotap_iterator - tracks walk thru present radiotap args
9*7273ec43Smmehari  * @rtheader: pointer to the radiotap header we are walking through
10*7273ec43Smmehari  * @max_length: length of radiotap header in cpu byte ordering
11*7273ec43Smmehari  * @this_arg_index: IEEE80211_RADIOTAP_... index of current arg
12*7273ec43Smmehari  * @this_arg: pointer to current radiotap arg
13*7273ec43Smmehari  * @arg_index: internal next argument index
14*7273ec43Smmehari  * @arg: internal next argument pointer
15*7273ec43Smmehari  * @next_bitmap: internal pointer to next present u32
16*7273ec43Smmehari  * @bitmap_shifter: internal shifter for curr u32 bitmap, b0 set == arg present
17*7273ec43Smmehari  */
18*7273ec43Smmehari 
19*7273ec43Smmehari struct ieee80211_radiotap_iterator {
20*7273ec43Smmehari 	struct ieee80211_radiotap_header *rtheader;
21*7273ec43Smmehari 	int max_length;
22*7273ec43Smmehari 	int this_arg_index;
23*7273ec43Smmehari 	u8 *this_arg;
24*7273ec43Smmehari 
25*7273ec43Smmehari 	int arg_index;
26*7273ec43Smmehari 	u8 *arg;
27*7273ec43Smmehari 	__le32 *next_bitmap;
28*7273ec43Smmehari 	u32 bitmap_shifter;
29*7273ec43Smmehari };
30*7273ec43Smmehari 
31*7273ec43Smmehari extern int ieee80211_radiotap_iterator_init(
32*7273ec43Smmehari    struct ieee80211_radiotap_iterator *iterator,
33*7273ec43Smmehari    struct ieee80211_radiotap_header *radiotap_header,
34*7273ec43Smmehari    int max_length);
35*7273ec43Smmehari 
36*7273ec43Smmehari extern int ieee80211_radiotap_iterator_next(
37*7273ec43Smmehari    struct ieee80211_radiotap_iterator *iterator);
38*7273ec43Smmehari 
39