Lines Matching refs:beacon
4988 struct beacon_data *beacon, in ieee80211_set_beacon_cntdwn() argument
4999 beacon_data = beacon->tail; in ieee80211_set_beacon_cntdwn()
5000 beacon_data_len = beacon->tail_len; in ieee80211_set_beacon_cntdwn()
5003 beacon_data = beacon->head; in ieee80211_set_beacon_cntdwn()
5004 beacon_data_len = beacon->head_len; in ieee80211_set_beacon_cntdwn()
5007 beacon_data = beacon->head; in ieee80211_set_beacon_cntdwn()
5008 beacon_data_len = beacon->head_len; in ieee80211_set_beacon_cntdwn()
5016 bcn_offsets = beacon->cntdwn_counter_offsets; in ieee80211_set_beacon_cntdwn()
5017 count = beacon->cntdwn_current_counter; in ieee80211_set_beacon_cntdwn()
5036 static u8 __ieee80211_beacon_update_cntdwn(struct beacon_data *beacon) in __ieee80211_beacon_update_cntdwn() argument
5038 beacon->cntdwn_current_counter--; in __ieee80211_beacon_update_cntdwn()
5041 WARN_ON_ONCE(!beacon->cntdwn_current_counter); in __ieee80211_beacon_update_cntdwn()
5043 return beacon->cntdwn_current_counter; in __ieee80211_beacon_update_cntdwn()
5050 struct beacon_data *beacon = NULL; in ieee80211_beacon_update_cntdwn() local
5063 beacon = rcu_dereference(link->u.ap.beacon); in ieee80211_beacon_update_cntdwn()
5065 beacon = rcu_dereference(sdata->u.ibss.presp); in ieee80211_beacon_update_cntdwn()
5067 beacon = rcu_dereference(sdata->u.mesh.beacon); in ieee80211_beacon_update_cntdwn()
5069 if (!beacon) in ieee80211_beacon_update_cntdwn()
5072 count = __ieee80211_beacon_update_cntdwn(beacon); in ieee80211_beacon_update_cntdwn()
5083 struct beacon_data *beacon = NULL; in ieee80211_beacon_set_cntdwn() local
5088 beacon = rcu_dereference(sdata->deflink.u.ap.beacon); in ieee80211_beacon_set_cntdwn()
5090 beacon = rcu_dereference(sdata->u.ibss.presp); in ieee80211_beacon_set_cntdwn()
5092 beacon = rcu_dereference(sdata->u.mesh.beacon); in ieee80211_beacon_set_cntdwn()
5094 if (!beacon) in ieee80211_beacon_set_cntdwn()
5097 if (counter < beacon->cntdwn_current_counter) in ieee80211_beacon_set_cntdwn()
5098 beacon->cntdwn_current_counter = counter; in ieee80211_beacon_set_cntdwn()
5110 struct beacon_data *beacon = NULL; in ieee80211_beacon_cntdwn_is_complete() local
5128 beacon = rcu_dereference(link->u.ap.beacon); in ieee80211_beacon_cntdwn_is_complete()
5129 if (WARN_ON(!beacon || !beacon->tail)) in ieee80211_beacon_cntdwn_is_complete()
5131 beacon_data = beacon->tail; in ieee80211_beacon_cntdwn_is_complete()
5132 beacon_data_len = beacon->tail_len; in ieee80211_beacon_cntdwn_is_complete()
5136 beacon = rcu_dereference(ifibss->presp); in ieee80211_beacon_cntdwn_is_complete()
5137 if (!beacon) in ieee80211_beacon_cntdwn_is_complete()
5140 beacon_data = beacon->head; in ieee80211_beacon_cntdwn_is_complete()
5141 beacon_data_len = beacon->head_len; in ieee80211_beacon_cntdwn_is_complete()
5145 beacon = rcu_dereference(ifmsh->beacon); in ieee80211_beacon_cntdwn_is_complete()
5146 if (!beacon) in ieee80211_beacon_cntdwn_is_complete()
5149 beacon_data = beacon->head; in ieee80211_beacon_cntdwn_is_complete()
5150 beacon_data_len = beacon->head_len; in ieee80211_beacon_cntdwn_is_complete()
5156 if (!beacon->cntdwn_counter_offsets[0]) in ieee80211_beacon_cntdwn_is_complete()
5159 if (WARN_ON_ONCE(beacon->cntdwn_counter_offsets[0] > beacon_data_len)) in ieee80211_beacon_cntdwn_is_complete()
5162 if (beacon_data[beacon->cntdwn_counter_offsets[0]] == 1) in ieee80211_beacon_cntdwn_is_complete()
5214 struct beacon_data *beacon, in ieee80211_beacon_get_finish() argument
5226 if (offs && beacon) { in ieee80211_beacon_get_finish()
5230 u16 csa_off = beacon->cntdwn_counter_offsets[i]; in ieee80211_beacon_get_finish()
5267 ieee80211_beacon_add_mbssid(struct sk_buff *skb, struct beacon_data *beacon, in ieee80211_beacon_add_mbssid() argument
5270 if (!beacon->mbssid_ies || !beacon->mbssid_ies->cnt || in ieee80211_beacon_add_mbssid()
5271 i > beacon->mbssid_ies->cnt) in ieee80211_beacon_add_mbssid()
5274 if (i < beacon->mbssid_ies->cnt) { in ieee80211_beacon_add_mbssid()
5275 skb_put_data(skb, beacon->mbssid_ies->elem[i].data, in ieee80211_beacon_add_mbssid()
5276 beacon->mbssid_ies->elem[i].len); in ieee80211_beacon_add_mbssid()
5278 if (beacon->rnr_ies && beacon->rnr_ies->cnt) { in ieee80211_beacon_add_mbssid()
5279 skb_put_data(skb, beacon->rnr_ies->elem[i].data, in ieee80211_beacon_add_mbssid()
5280 beacon->rnr_ies->elem[i].len); in ieee80211_beacon_add_mbssid()
5282 for (i = beacon->mbssid_ies->cnt; i < beacon->rnr_ies->cnt; i++) in ieee80211_beacon_add_mbssid()
5283 skb_put_data(skb, beacon->rnr_ies->elem[i].data, in ieee80211_beacon_add_mbssid()
5284 beacon->rnr_ies->elem[i].len); in ieee80211_beacon_add_mbssid()
5290 for (i = 0; i < beacon->mbssid_ies->cnt; i++) in ieee80211_beacon_add_mbssid()
5291 skb_put_data(skb, beacon->mbssid_ies->elem[i].data, in ieee80211_beacon_add_mbssid()
5292 beacon->mbssid_ies->elem[i].len); in ieee80211_beacon_add_mbssid()
5301 struct beacon_data *beacon, in ieee80211_beacon_get_ap() argument
5312 if (beacon->cntdwn_counter_offsets[0]) { in ieee80211_beacon_get_ap()
5316 ieee80211_set_beacon_cntdwn(sdata, beacon, link); in ieee80211_beacon_get_ap()
5322 mbssid_len = ieee80211_get_mbssid_beacon_len(beacon->mbssid_ies, in ieee80211_beacon_get_ap()
5323 beacon->rnr_ies, in ieee80211_beacon_get_ap()
5326 skb = dev_alloc_skb(local->tx_headroom + beacon->head_len + in ieee80211_beacon_get_ap()
5327 beacon->tail_len + 256 + in ieee80211_beacon_get_ap()
5333 skb_put_data(skb, beacon->head, beacon->head_len); in ieee80211_beacon_get_ap()
5338 offs->tim_offset = beacon->head_len; in ieee80211_beacon_get_ap()
5339 offs->tim_length = skb->len - beacon->head_len; in ieee80211_beacon_get_ap()
5340 offs->cntdwn_counter_offs[0] = beacon->cntdwn_counter_offsets[0]; in ieee80211_beacon_get_ap()
5343 ieee80211_beacon_add_mbssid(skb, beacon, ema_index); in ieee80211_beacon_get_ap()
5351 if (beacon->tail) in ieee80211_beacon_get_ap()
5352 skb_put_data(skb, beacon->tail, beacon->tail_len); in ieee80211_beacon_get_ap()
5359 ieee80211_beacon_get_finish(hw, vif, link, offs, beacon, skb, in ieee80211_beacon_get_ap()
5369 bool is_template, struct beacon_data *beacon, in ieee80211_beacon_get_ap_ema_list() argument
5374 if (!beacon->mbssid_ies || !beacon->mbssid_ies->cnt) in ieee80211_beacon_get_ap_ema_list()
5377 ema = kzalloc(struct_size(ema, bcn, beacon->mbssid_ies->cnt), in ieee80211_beacon_get_ap_ema_list()
5382 for (ema->cnt = 0; ema->cnt < beacon->mbssid_ies->cnt; ema->cnt++) { in ieee80211_beacon_get_ap_ema_list()
5386 is_template, beacon, in ieee80211_beacon_get_ap_ema_list()
5392 if (ema->cnt == beacon->mbssid_ies->cnt) in ieee80211_beacon_get_ap_ema_list()
5411 struct beacon_data *beacon = NULL; in __ieee80211_beacon_get() local
5433 beacon = rcu_dereference(link->u.ap.beacon); in __ieee80211_beacon_get()
5434 if (!beacon) in __ieee80211_beacon_get()
5442 beacon, in __ieee80211_beacon_get()
5445 if (beacon->mbssid_ies && beacon->mbssid_ies->cnt) { in __ieee80211_beacon_get()
5446 if (ema_index >= beacon->mbssid_ies->cnt) in __ieee80211_beacon_get()
5450 ema_index = beacon->mbssid_ies->cnt; in __ieee80211_beacon_get()
5456 is_template, beacon, in __ieee80211_beacon_get()
5464 beacon = rcu_dereference(ifibss->presp); in __ieee80211_beacon_get()
5465 if (!beacon) in __ieee80211_beacon_get()
5468 if (beacon->cntdwn_counter_offsets[0]) { in __ieee80211_beacon_get()
5470 __ieee80211_beacon_update_cntdwn(beacon); in __ieee80211_beacon_get()
5472 ieee80211_set_beacon_cntdwn(sdata, beacon, link); in __ieee80211_beacon_get()
5475 skb = dev_alloc_skb(local->tx_headroom + beacon->head_len + in __ieee80211_beacon_get()
5480 skb_put_data(skb, beacon->head, beacon->head_len); in __ieee80211_beacon_get()
5486 ieee80211_beacon_get_finish(hw, vif, link, offs, beacon, skb, in __ieee80211_beacon_get()
5491 beacon = rcu_dereference(ifmsh->beacon); in __ieee80211_beacon_get()
5492 if (!beacon) in __ieee80211_beacon_get()
5495 if (beacon->cntdwn_counter_offsets[0]) { in __ieee80211_beacon_get()
5502 __ieee80211_beacon_update_cntdwn(beacon); in __ieee80211_beacon_get()
5504 ieee80211_set_beacon_cntdwn(sdata, beacon, link); in __ieee80211_beacon_get()
5508 ifmsh->sync_ops->adjust_tsf(sdata, beacon); in __ieee80211_beacon_get()
5511 beacon->head_len + in __ieee80211_beacon_get()
5513 beacon->tail_len + in __ieee80211_beacon_get()
5518 skb_put_data(skb, beacon->head, beacon->head_len); in __ieee80211_beacon_get()
5523 offs->tim_offset = beacon->head_len; in __ieee80211_beacon_get()
5524 offs->tim_length = skb->len - beacon->head_len; in __ieee80211_beacon_get()
5527 skb_put_data(skb, beacon->tail, beacon->tail_len); in __ieee80211_beacon_get()
5528 ieee80211_beacon_get_finish(hw, vif, link, offs, beacon, skb, in __ieee80211_beacon_get()
5910 struct beacon_data *beacon = in ieee80211_get_buffered_bc() local
5911 rcu_dereference(sdata->deflink.u.ap.beacon); in ieee80211_get_buffered_bc()
5913 if (!beacon || !beacon->head) in ieee80211_get_buffered_bc()