Lines Matching refs:iterator

42  * ieee80211_radiotap_iterator_init - radiotap parser iterator initialization
43 * @iterator: radiotap_iterator to initialize
49 * This function initializes an opaque iterator struct which can then
55 * call __ieee80211_radiotap_iterator_init() to init a semi-opaque iterator
60 * The iterator's @this_arg member points to the start of the argument
62 * found in the iterator's @this_arg_index member. This arg index corresponds
67 * iterator->max_length after executing ieee80211_radiotap_iterator_init()
71 * You must take care when dereferencing iterator.this_arg
73 * get_unaligned((type *)iterator.this_arg) to dereference
74 * iterator.this_arg for type "type" safely on all arches.
81 struct ieee80211_radiotap_iterator *iterator,
93 iterator->rtheader = radiotap_header;
94 iterator->max_length = le16_to_cpu(get_unaligned(
96 iterator->arg_index = 0;
97 iterator->bitmap_shifter = le32_to_cpu(get_unaligned(
99 iterator->arg = (u8 *)radiotap_header + sizeof(*radiotap_header);
100 iterator->this_arg = NULL;
104 if (unlikely(iterator->bitmap_shifter & (1<<IEEE80211_RADIOTAP_EXT))) {
105 while (le32_to_cpu(get_unaligned((__le32 *)iterator->arg)) &
107 iterator->arg += sizeof(u32);
115 if (((ulong)iterator->arg - (ulong)iterator->rtheader)
116 > (ulong)iterator->max_length)
120 iterator->arg += sizeof(u32);
136 * ieee80211_radiotap_iterator_next - return next radiotap parser iterator arg
137 * @iterator: radiotap_iterator to move to next arg (if any)
152 * You must take care when dereferencing iterator.this_arg
154 * get_unaligned((type *)iterator.this_arg) to dereference
155 * iterator.this_arg for type "type" safely on all arches.
159 struct ieee80211_radiotap_iterator *iterator)
207 while (iterator->arg_index < (int) sizeof(rt_sizes)) {
211 if (!(iterator->bitmap_shifter & 1))
234 pad = (((ulong)iterator->arg) -
235 ((ulong)iterator->rtheader)) &
236 ((rt_sizes[iterator->arg_index] >> 4) - 1);
239 iterator->arg +=
240 (rt_sizes[iterator->arg_index] >> 4) - pad;
246 iterator->this_arg_index = iterator->arg_index;
247 iterator->this_arg = iterator->arg;
251 iterator->arg += rt_sizes[iterator->arg_index] & 0x0f;
260 if (((ulong)iterator->arg - (ulong)iterator->rtheader) >
261 (ulong) iterator->max_length)
265 iterator->arg_index++;
266 if (unlikely((iterator->arg_index & 31) == 0)) {
268 if (iterator->bitmap_shifter & 1) {
271 iterator->bitmap_shifter = le32_to_cpu(
272 get_unaligned(iterator->next_bitmap));
273 iterator->next_bitmap++;
276 iterator->arg_index = sizeof(rt_sizes);
278 iterator->bitmap_shifter >>= 1;