Lines Matching refs:iterator

96 	struct ieee80211_radiotap_iterator *iterator,  in ieee80211_radiotap_iterator_init()  argument
112 iterator->_rtheader = radiotap_header; in ieee80211_radiotap_iterator_init()
113 iterator->_max_length = get_unaligned_le16(&radiotap_header->it_len); in ieee80211_radiotap_iterator_init()
114 iterator->_arg_index = 0; in ieee80211_radiotap_iterator_init()
115 iterator->_bitmap_shifter = get_unaligned_le32(&radiotap_header->it_present); in ieee80211_radiotap_iterator_init()
116 iterator->_arg = (uint8_t *)radiotap_header + sizeof(*radiotap_header); in ieee80211_radiotap_iterator_init()
117 iterator->_reset_on_ext = 0; in ieee80211_radiotap_iterator_init()
118 iterator->_next_bitmap = &radiotap_header->it_present; in ieee80211_radiotap_iterator_init()
119 iterator->_next_bitmap++; in ieee80211_radiotap_iterator_init()
120 iterator->_vns = vns; in ieee80211_radiotap_iterator_init()
121 iterator->current_namespace = &radiotap_ns; in ieee80211_radiotap_iterator_init()
122 iterator->is_radiotap_ns = 1; in ieee80211_radiotap_iterator_init()
126 if (iterator->_bitmap_shifter & (1<<IEEE80211_RADIOTAP_EXT)) { in ieee80211_radiotap_iterator_init()
127 if ((unsigned long)iterator->_arg - in ieee80211_radiotap_iterator_init()
128 (unsigned long)iterator->_rtheader + sizeof(uint32_t) > in ieee80211_radiotap_iterator_init()
129 (unsigned long)iterator->_max_length) in ieee80211_radiotap_iterator_init()
131 while (get_unaligned_le32(iterator->_arg) & in ieee80211_radiotap_iterator_init()
133 iterator->_arg += sizeof(uint32_t); in ieee80211_radiotap_iterator_init()
141 if ((unsigned long)iterator->_arg - in ieee80211_radiotap_iterator_init()
142 (unsigned long)iterator->_rtheader + in ieee80211_radiotap_iterator_init()
144 (unsigned long)iterator->_max_length) in ieee80211_radiotap_iterator_init()
148 iterator->_arg += sizeof(uint32_t); in ieee80211_radiotap_iterator_init()
157 iterator->this_arg = iterator->_arg; in ieee80211_radiotap_iterator_init()
165 static void find_ns(struct ieee80211_radiotap_iterator *iterator, in find_ns() argument
170 iterator->current_namespace = NULL; in find_ns()
172 if (!iterator->_vns) in find_ns()
175 for (i = 0; i < iterator->_vns->n_ns; i++) { in find_ns()
176 if (iterator->_vns->ns[i].oui != oui) in find_ns()
178 if (iterator->_vns->ns[i].subns != subns) in find_ns()
181 iterator->current_namespace = &iterator->_vns->ns[i]; in find_ns()
212 struct ieee80211_radiotap_iterator *iterator) in ieee80211_radiotap_iterator_next() argument
220 if ((iterator->_arg_index % 32) == IEEE80211_RADIOTAP_EXT && in ieee80211_radiotap_iterator_next()
221 !(iterator->_bitmap_shifter & 1)) in ieee80211_radiotap_iterator_next()
224 if (!(iterator->_bitmap_shifter & 1)) in ieee80211_radiotap_iterator_next()
228 switch (iterator->_arg_index % 32) { in ieee80211_radiotap_iterator_next()
239 if (!iterator->current_namespace || in ieee80211_radiotap_iterator_next()
240 iterator->_arg_index >= iterator->current_namespace->n_bits) { in ieee80211_radiotap_iterator_next()
241 if (iterator->current_namespace == &radiotap_ns) in ieee80211_radiotap_iterator_next()
245 align = iterator->current_namespace->align_size[iterator->_arg_index].align; in ieee80211_radiotap_iterator_next()
246 size = iterator->current_namespace->align_size[iterator->_arg_index].size; in ieee80211_radiotap_iterator_next()
250 iterator->_arg = iterator->_next_ns_data; in ieee80211_radiotap_iterator_next()
252 iterator->current_namespace = NULL; in ieee80211_radiotap_iterator_next()
270 pad = ((unsigned long)iterator->_arg - in ieee80211_radiotap_iterator_next()
271 (unsigned long)iterator->_rtheader) & (align - 1); in ieee80211_radiotap_iterator_next()
274 iterator->_arg += align - pad; in ieee80211_radiotap_iterator_next()
276 if (iterator->_arg_index % 32 == IEEE80211_RADIOTAP_VENDOR_NAMESPACE) { in ieee80211_radiotap_iterator_next()
279 if ((unsigned long)iterator->_arg + size - in ieee80211_radiotap_iterator_next()
280 (unsigned long)iterator->_rtheader > in ieee80211_radiotap_iterator_next()
281 (unsigned long)iterator->_max_length) in ieee80211_radiotap_iterator_next()
284 oui = (*iterator->_arg << 16) | in ieee80211_radiotap_iterator_next()
285 (*(iterator->_arg + 1) << 8) | in ieee80211_radiotap_iterator_next()
286 *(iterator->_arg + 2); in ieee80211_radiotap_iterator_next()
287 subns = *(iterator->_arg + 3); in ieee80211_radiotap_iterator_next()
289 find_ns(iterator, oui, subns); in ieee80211_radiotap_iterator_next()
291 vnslen = get_unaligned_le16(iterator->_arg + 4); in ieee80211_radiotap_iterator_next()
292 iterator->_next_ns_data = iterator->_arg + size + vnslen; in ieee80211_radiotap_iterator_next()
293 if (!iterator->current_namespace) in ieee80211_radiotap_iterator_next()
301 iterator->this_arg_index = iterator->_arg_index; in ieee80211_radiotap_iterator_next()
302 iterator->this_arg = iterator->_arg; in ieee80211_radiotap_iterator_next()
303 iterator->this_arg_size = size; in ieee80211_radiotap_iterator_next()
306 iterator->_arg += size; in ieee80211_radiotap_iterator_next()
315 if ((unsigned long)iterator->_arg - in ieee80211_radiotap_iterator_next()
316 (unsigned long)iterator->_rtheader > in ieee80211_radiotap_iterator_next()
317 (unsigned long)iterator->_max_length) in ieee80211_radiotap_iterator_next()
321 switch (iterator->_arg_index % 32) { in ieee80211_radiotap_iterator_next()
323 iterator->_reset_on_ext = 1; in ieee80211_radiotap_iterator_next()
325 iterator->is_radiotap_ns = 0; in ieee80211_radiotap_iterator_next()
332 iterator->this_arg_index = in ieee80211_radiotap_iterator_next()
334 if (!iterator->current_namespace) in ieee80211_radiotap_iterator_next()
338 iterator->_reset_on_ext = 1; in ieee80211_radiotap_iterator_next()
339 iterator->current_namespace = &radiotap_ns; in ieee80211_radiotap_iterator_next()
340 iterator->is_radiotap_ns = 1; in ieee80211_radiotap_iterator_next()
347 iterator->_bitmap_shifter = in ieee80211_radiotap_iterator_next()
348 get_unaligned_le32(iterator->_next_bitmap); in ieee80211_radiotap_iterator_next()
349 iterator->_next_bitmap++; in ieee80211_radiotap_iterator_next()
350 if (iterator->_reset_on_ext) in ieee80211_radiotap_iterator_next()
351 iterator->_arg_index = 0; in ieee80211_radiotap_iterator_next()
353 iterator->_arg_index++; in ieee80211_radiotap_iterator_next()
354 iterator->_reset_on_ext = 0; in ieee80211_radiotap_iterator_next()
360 iterator->_bitmap_shifter >>= 1; in ieee80211_radiotap_iterator_next()
361 iterator->_arg_index++; in ieee80211_radiotap_iterator_next()