Lines Matching refs:beacon
405 * the frame is buffered to be sent after DTIM beacon frame.
439 /* device releases frame after DTIM beacon */
4961 struct beacon_data *beacon,
4972 beacon_data = beacon->tail;
4973 beacon_data_len = beacon->tail_len;
4976 beacon_data = beacon->head;
4977 beacon_data_len = beacon->head_len;
4980 beacon_data = beacon->head;
4981 beacon_data_len = beacon->head_len;
4989 bcn_offsets = beacon->cntdwn_counter_offsets;
4990 count = beacon->cntdwn_current_counter;
5009 static u8 __ieee80211_beacon_update_cntdwn(struct beacon_data *beacon)
5011 beacon->cntdwn_current_counter--;
5014 WARN_ON_ONCE(!beacon->cntdwn_current_counter);
5016 return beacon->cntdwn_current_counter;
5022 struct beacon_data *beacon = NULL;
5028 beacon = rcu_dereference(sdata->deflink.u.ap.beacon);
5030 beacon = rcu_dereference(sdata->u.ibss.presp);
5032 beacon = rcu_dereference(sdata->u.mesh.beacon);
5034 if (!beacon)
5037 count = __ieee80211_beacon_update_cntdwn(beacon);
5048 struct beacon_data *beacon = NULL;
5053 beacon = rcu_dereference(sdata->deflink.u.ap.beacon);
5055 beacon = rcu_dereference(sdata->u.ibss.presp);
5057 beacon = rcu_dereference(sdata->u.mesh.beacon);
5059 if (!beacon)
5062 if (counter < beacon->cntdwn_current_counter)
5063 beacon->cntdwn_current_counter = counter;
5073 struct beacon_data *beacon = NULL;
5083 beacon = rcu_dereference(sdata->deflink.u.ap.beacon);
5084 if (WARN_ON(!beacon || !beacon->tail))
5086 beacon_data = beacon->tail;
5087 beacon_data_len = beacon->tail_len;
5091 beacon = rcu_dereference(ifibss->presp);
5092 if (!beacon)
5095 beacon_data = beacon->head;
5096 beacon_data_len = beacon->head_len;
5100 beacon = rcu_dereference(ifmsh->beacon);
5101 if (!beacon)
5104 beacon_data = beacon->head;
5105 beacon_data_len = beacon->head_len;
5111 if (!beacon->cntdwn_counter_offsets[0])
5114 if (WARN_ON_ONCE(beacon->cntdwn_counter_offsets[0] > beacon_data_len))
5117 if (beacon_data[beacon->cntdwn_counter_offsets[0]] == 1)
5169 struct beacon_data *beacon,
5181 if (offs && beacon) {
5185 u16 csa_off = beacon->cntdwn_counter_offsets[i];
5222 ieee80211_beacon_add_mbssid(struct sk_buff *skb, struct beacon_data *beacon,
5225 if (!beacon->mbssid_ies || !beacon->mbssid_ies->cnt ||
5226 i > beacon->mbssid_ies->cnt)
5229 if (i < beacon->mbssid_ies->cnt) {
5230 skb_put_data(skb, beacon->mbssid_ies->elem[i].data,
5231 beacon->mbssid_ies->elem[i].len);
5233 if (beacon->rnr_ies && beacon->rnr_ies->cnt) {
5234 skb_put_data(skb, beacon->rnr_ies->elem[i].data,
5235 beacon->rnr_ies->elem[i].len);
5237 for (i = beacon->mbssid_ies->cnt; i < beacon->rnr_ies->cnt; i++)
5238 skb_put_data(skb, beacon->rnr_ies->elem[i].data,
5239 beacon->rnr_ies->elem[i].len);
5244 /* i == beacon->mbssid_ies->cnt, include all MBSSID elements */
5245 for (i = 0; i < beacon->mbssid_ies->cnt; i++)
5246 skb_put_data(skb, beacon->mbssid_ies->elem[i].data,
5247 beacon->mbssid_ies->elem[i].len);
5256 struct beacon_data *beacon,
5267 if (beacon->cntdwn_counter_offsets[0]) {
5271 ieee80211_set_beacon_cntdwn(sdata, beacon, link);
5277 mbssid_len = ieee80211_get_mbssid_beacon_len(beacon->mbssid_ies,
5278 beacon->rnr_ies,
5281 skb = dev_alloc_skb(local->tx_headroom + beacon->head_len +
5282 beacon->tail_len + 256 +
5288 skb_put_data(skb, beacon->head, beacon->head_len);
5293 offs->tim_offset = beacon->head_len;
5294 offs->tim_length = skb->len - beacon->head_len;
5295 offs->cntdwn_counter_offs[0] = beacon->cntdwn_counter_offsets[0];
5298 ieee80211_beacon_add_mbssid(skb, beacon, ema_index);
5306 if (beacon->tail)
5307 skb_put_data(skb, beacon->tail, beacon->tail_len);
5312 ieee80211_beacon_get_finish(hw, vif, link, offs, beacon, skb,
5322 bool is_template, struct beacon_data *beacon,
5327 if (!beacon->mbssid_ies || !beacon->mbssid_ies->cnt)
5330 ema = kzalloc(struct_size(ema, bcn, beacon->mbssid_ies->cnt),
5335 for (ema->cnt = 0; ema->cnt < beacon->mbssid_ies->cnt; ema->cnt++) {
5339 is_template, beacon,
5345 if (ema->cnt == beacon->mbssid_ies->cnt)
5364 struct beacon_data *beacon = NULL;
5386 beacon = rcu_dereference(link->u.ap.beacon);
5387 if (!beacon)
5395 beacon,
5398 if (beacon->mbssid_ies && beacon->mbssid_ies->cnt) {
5399 if (ema_index >= beacon->mbssid_ies->cnt)
5403 ema_index = beacon->mbssid_ies->cnt;
5409 is_template, beacon,
5417 beacon = rcu_dereference(ifibss->presp);
5418 if (!beacon)
5421 if (beacon->cntdwn_counter_offsets[0]) {
5423 __ieee80211_beacon_update_cntdwn(beacon);
5425 ieee80211_set_beacon_cntdwn(sdata, beacon, link);
5428 skb = dev_alloc_skb(local->tx_headroom + beacon->head_len +
5433 skb_put_data(skb, beacon->head, beacon->head_len);
5439 ieee80211_beacon_get_finish(hw, vif, link, offs, beacon, skb,
5444 beacon = rcu_dereference(ifmsh->beacon);
5445 if (!beacon)
5448 if (beacon->cntdwn_counter_offsets[0]) {
5455 __ieee80211_beacon_update_cntdwn(beacon);
5457 ieee80211_set_beacon_cntdwn(sdata, beacon, link);
5461 ifmsh->sync_ops->adjust_tsf(sdata, beacon);
5464 beacon->head_len +
5466 beacon->tail_len +
5471 skb_put_data(skb, beacon->head, beacon->head_len);
5476 offs->tim_offset = beacon->head_len;
5477 offs->tim_length = skb->len - beacon->head_len;
5480 skb_put_data(skb, beacon->tail, beacon->tail_len);
5481 ieee80211_beacon_get_finish(hw, vif, link, offs, beacon, skb,
5865 struct beacon_data *beacon =
5866 rcu_dereference(sdata->deflink.u.ap.beacon);
5868 if (!beacon || !beacon->head)
5879 goto out; /* send buffered bc/mc only after DTIM beacon */