Lines Matching refs:beacon

398 	 * the frame is buffered to be sent after DTIM beacon frame.
432 /* device releases frame after DTIM beacon */
4986 struct beacon_data *beacon,
4997 beacon_data = beacon->tail;
4998 beacon_data_len = beacon->tail_len;
5001 beacon_data = beacon->head;
5002 beacon_data_len = beacon->head_len;
5005 beacon_data = beacon->head;
5006 beacon_data_len = beacon->head_len;
5014 bcn_offsets = beacon->cntdwn_counter_offsets;
5015 count = beacon->cntdwn_current_counter;
5034 static u8 __ieee80211_beacon_update_cntdwn(struct beacon_data *beacon)
5036 beacon->cntdwn_current_counter--;
5039 WARN_ON_ONCE(!beacon->cntdwn_current_counter);
5041 return beacon->cntdwn_current_counter;
5048 struct beacon_data *beacon = NULL;
5061 beacon = rcu_dereference(link->u.ap.beacon);
5063 beacon = rcu_dereference(sdata->u.ibss.presp);
5065 beacon = rcu_dereference(sdata->u.mesh.beacon);
5067 if (!beacon)
5070 count = __ieee80211_beacon_update_cntdwn(beacon);
5081 struct beacon_data *beacon = NULL;
5086 beacon = rcu_dereference(sdata->deflink.u.ap.beacon);
5088 beacon = rcu_dereference(sdata->u.ibss.presp);
5090 beacon = rcu_dereference(sdata->u.mesh.beacon);
5092 if (!beacon)
5095 if (counter < beacon->cntdwn_current_counter)
5096 beacon->cntdwn_current_counter = counter;
5108 struct beacon_data *beacon = NULL;
5126 beacon = rcu_dereference(link->u.ap.beacon);
5127 if (WARN_ON(!beacon || !beacon->tail))
5129 beacon_data = beacon->tail;
5130 beacon_data_len = beacon->tail_len;
5134 beacon = rcu_dereference(ifibss->presp);
5135 if (!beacon)
5138 beacon_data = beacon->head;
5139 beacon_data_len = beacon->head_len;
5143 beacon = rcu_dereference(ifmsh->beacon);
5144 if (!beacon)
5147 beacon_data = beacon->head;
5148 beacon_data_len = beacon->head_len;
5154 if (!beacon->cntdwn_counter_offsets[0])
5157 if (WARN_ON_ONCE(beacon->cntdwn_counter_offsets[0] > beacon_data_len))
5160 if (beacon_data[beacon->cntdwn_counter_offsets[0]] == 1)
5212 struct beacon_data *beacon,
5224 if (offs && beacon) {
5228 u16 csa_off = beacon->cntdwn_counter_offsets[i];
5265 ieee80211_beacon_add_mbssid(struct sk_buff *skb, struct beacon_data *beacon,
5268 if (!beacon->mbssid_ies || !beacon->mbssid_ies->cnt ||
5269 i > beacon->mbssid_ies->cnt)
5272 if (i < beacon->mbssid_ies->cnt) {
5273 skb_put_data(skb, beacon->mbssid_ies->elem[i].data,
5274 beacon->mbssid_ies->elem[i].len);
5276 if (beacon->rnr_ies && beacon->rnr_ies->cnt) {
5277 skb_put_data(skb, beacon->rnr_ies->elem[i].data,
5278 beacon->rnr_ies->elem[i].len);
5280 for (i = beacon->mbssid_ies->cnt; i < beacon->rnr_ies->cnt; i++)
5281 skb_put_data(skb, beacon->rnr_ies->elem[i].data,
5282 beacon->rnr_ies->elem[i].len);
5287 /* i == beacon->mbssid_ies->cnt, include all MBSSID elements */
5288 for (i = 0; i < beacon->mbssid_ies->cnt; i++)
5289 skb_put_data(skb, beacon->mbssid_ies->elem[i].data,
5290 beacon->mbssid_ies->elem[i].len);
5299 struct beacon_data *beacon,
5310 if (beacon->cntdwn_counter_offsets[0]) {
5314 ieee80211_set_beacon_cntdwn(sdata, beacon, link);
5320 mbssid_len = ieee80211_get_mbssid_beacon_len(beacon->mbssid_ies,
5321 beacon->rnr_ies,
5324 skb = dev_alloc_skb(local->tx_headroom + beacon->head_len +
5325 beacon->tail_len + 256 +
5331 skb_put_data(skb, beacon->head, beacon->head_len);
5336 offs->tim_offset = beacon->head_len;
5337 offs->tim_length = skb->len - beacon->head_len;
5338 offs->cntdwn_counter_offs[0] = beacon->cntdwn_counter_offsets[0];
5341 ieee80211_beacon_add_mbssid(skb, beacon, ema_index);
5349 if (beacon->tail)
5350 skb_put_data(skb, beacon->tail, beacon->tail_len);
5355 ieee80211_beacon_get_finish(hw, vif, link, offs, beacon, skb,
5365 bool is_template, struct beacon_data *beacon,
5370 if (!beacon->mbssid_ies || !beacon->mbssid_ies->cnt)
5373 ema = kzalloc(struct_size(ema, bcn, beacon->mbssid_ies->cnt),
5378 for (ema->cnt = 0; ema->cnt < beacon->mbssid_ies->cnt; ema->cnt++) {
5382 is_template, beacon,
5388 if (ema->cnt == beacon->mbssid_ies->cnt)
5407 struct beacon_data *beacon = NULL;
5429 beacon = rcu_dereference(link->u.ap.beacon);
5430 if (!beacon)
5438 beacon,
5441 if (beacon->mbssid_ies && beacon->mbssid_ies->cnt) {
5442 if (ema_index >= beacon->mbssid_ies->cnt)
5446 ema_index = beacon->mbssid_ies->cnt;
5452 is_template, beacon,
5460 beacon = rcu_dereference(ifibss->presp);
5461 if (!beacon)
5464 if (beacon->cntdwn_counter_offsets[0]) {
5466 __ieee80211_beacon_update_cntdwn(beacon);
5468 ieee80211_set_beacon_cntdwn(sdata, beacon, link);
5471 skb = dev_alloc_skb(local->tx_headroom + beacon->head_len +
5476 skb_put_data(skb, beacon->head, beacon->head_len);
5482 ieee80211_beacon_get_finish(hw, vif, link, offs, beacon, skb,
5487 beacon = rcu_dereference(ifmsh->beacon);
5488 if (!beacon)
5491 if (beacon->cntdwn_counter_offsets[0]) {
5498 __ieee80211_beacon_update_cntdwn(beacon);
5500 ieee80211_set_beacon_cntdwn(sdata, beacon, link);
5504 ifmsh->sync_ops->adjust_tsf(sdata, beacon);
5507 beacon->head_len +
5509 beacon->tail_len +
5514 skb_put_data(skb, beacon->head, beacon->head_len);
5519 offs->tim_offset = beacon->head_len;
5520 offs->tim_length = skb->len - beacon->head_len;
5523 skb_put_data(skb, beacon->tail, beacon->tail_len);
5524 ieee80211_beacon_get_finish(hw, vif, link, offs, beacon, skb,
5906 struct beacon_data *beacon =
5907 rcu_dereference(sdata->deflink.u.ap.beacon);
5909 if (!beacon || !beacon->head)
5920 goto out; /* send buffered bc/mc only after DTIM beacon */