Lines Matching full:beacon
24 sc->beacon.tx_processed = false; in ath9k_reset_beacon_status()
25 sc->beacon.tx_last = false; in ath9k_reset_beacon_status()
40 ath9k_hw_get_txq_props(ah, sc->beacon.beaconq, &qi); in ath9k_beaconq_config()
44 /* Always burst out beacon and CAB traffic. */ in ath9k_beaconq_config()
60 if (!ath9k_hw_set_txq_props(ah, sc->beacon.beaconq, &qi)) { in ath9k_beaconq_config()
61 ath_err(common, "Unable to update h/w beacon queue parameters\n"); in ath9k_beaconq_config()
63 ath9k_hw_resettxqueue(ah, sc->beacon.beaconq); in ath9k_beaconq_config()
68 * Associates the beacon frame buffer with a transmit descriptor. Will set
103 info.qcu = sc->beacon.beaconq; in ath9k_beacon_setup()
120 struct ath_txq *cabq = sc->beacon.cabq; in ath9k_beacon_generate()
145 mgmt_hdr->u.beacon.timestamp = avp->tsf_adjust; in ath9k_beacon_generate()
169 * beacon is also a DTIM. in ath9k_beacon_generate()
181 ath_dbg(common, BEACON, in ath9k_beacon_generate()
201 avp->av_bcbuf = list_first_entry(&sc->beacon.bbuf, struct ath_buf, list); in ath9k_beacon_assign_slot()
205 if (sc->beacon.bslot[slot] == NULL) { in ath9k_beacon_assign_slot()
211 sc->beacon.bslot[avp->av_bslot] = vif; in ath9k_beacon_assign_slot()
213 ath_dbg(common, CONFIG, "Added interface at beacon slot: %d\n", in ath9k_beacon_assign_slot()
223 ath_dbg(common, CONFIG, "Removing interface at beacon slot: %d\n", in ath9k_beacon_remove_slot()
238 sc->beacon.bslot[avp->av_bslot] = NULL; in ath9k_beacon_remove_slot()
239 list_add_tail(&bf->list, &sc->beacon.bbuf); in ath9k_beacon_remove_slot()
258 if (sc->beacon.bslot[slot]) { in ath9k_beacon_ensure_primary_slot()
269 vif = sc->beacon.bslot[slot + first_slot]; in ath9k_beacon_ensure_primary_slot()
270 sc->beacon.bslot[slot] = vif; in ath9k_beacon_ensure_primary_slot()
277 sc->beacon.bslot[slot] = NULL; in ath9k_beacon_ensure_primary_slot()
281 vif = sc->beacon.bslot[0]; in ath9k_beacon_ensure_primary_slot()
290 "Adjusting global TSF after beacon slot reassignment: %lld\n", in ath9k_beacon_ensure_primary_slot()
309 struct ath_beacon_config *cur_conf = &sc->cur_chan->beacon; in ath9k_beacon_choose_slot()
317 ath_dbg(common, BEACON, "slot 0, tsf: %llu\n", in ath9k_beacon_choose_slot()
328 ath_dbg(common, BEACON, "slot: %d tsf: %llu tsftu: %u\n", in ath9k_beacon_choose_slot()
344 if (!sc->beacon.bslot[slot]) in ath9k_set_tsfadjust()
347 avp = (void *)sc->beacon.bslot[slot]->drv_priv; in ath9k_set_tsfadjust()
350 * beacon late, so need to adjust the TSF starting point to be in ath9k_set_tsfadjust()
351 * later in time (i.e. the theoretical first beacon has a TSF in ath9k_set_tsfadjust()
405 * Check if the previous beacon has gone out. If in ath9k_beacon_tasklet()
411 if (ath9k_hw_numtxpending(ah, sc->beacon.beaconq) != 0) { in ath9k_beacon_tasklet()
412 sc->beacon.bmisscnt++; in ath9k_beacon_tasklet()
417 * If the previous beacon has not been transmitted in ath9k_beacon_tasklet()
425 if (sc->beacon.bmisscnt < BSTUCK_THRESH * sc->nbcnvifs) { in ath9k_beacon_tasklet()
428 sc->beacon.bmisscnt); in ath9k_beacon_tasklet()
429 ath9k_hw_stop_dma_queue(ah, sc->beacon.beaconq); in ath9k_beacon_tasklet()
430 if (sc->beacon.bmisscnt > 3) in ath9k_beacon_tasklet()
432 } else if (sc->beacon.bmisscnt >= BSTUCK_THRESH) { in ath9k_beacon_tasklet()
433 ath_dbg(common, BSTUCK, "beacon is officially stuck\n"); in ath9k_beacon_tasklet()
434 sc->beacon.bmisscnt = 0; in ath9k_beacon_tasklet()
442 vif = sc->beacon.bslot[slot]; in ath9k_beacon_tasklet()
464 if (sc->beacon.bmisscnt != 0) { in ath9k_beacon_tasklet()
465 ath_dbg(common, BSTUCK, "resume beacon xmit after %u misses\n", in ath9k_beacon_tasklet()
466 sc->beacon.bmisscnt); in ath9k_beacon_tasklet()
467 sc->beacon.bmisscnt = 0; in ath9k_beacon_tasklet()
473 * we mark updateslot, then wait one beacon before effecting in ath9k_beacon_tasklet()
475 * beacon interval to note the state change. in ath9k_beacon_tasklet()
481 * again. If we miss a beacon for that slot then we'll be in ath9k_beacon_tasklet()
482 * slow to transition but we'll be sure at least one beacon in ath9k_beacon_tasklet()
486 if (sc->beacon.updateslot == UPDATE) { in ath9k_beacon_tasklet()
487 sc->beacon.updateslot = COMMIT; in ath9k_beacon_tasklet()
488 sc->beacon.slotupdate = slot; in ath9k_beacon_tasklet()
489 } else if (sc->beacon.updateslot == COMMIT && in ath9k_beacon_tasklet()
490 sc->beacon.slotupdate == slot) { in ath9k_beacon_tasklet()
491 ah->slottime = sc->beacon.slottime; in ath9k_beacon_tasklet()
493 sc->beacon.updateslot = OK; in ath9k_beacon_tasklet()
499 ath_dbg(common, BEACON, in ath9k_beacon_tasklet()
500 "Transmitting beacon for slot: %d\n", slot); in ath9k_beacon_tasklet()
503 ath9k_hw_puttxbuf(ah, sc->beacon.beaconq, bf->bf_daddr); in ath9k_beacon_tasklet()
506 ath9k_hw_txstart(ah, sc->beacon.beaconq); in ath9k_beacon_tasklet()
522 sc->beacon.bmisscnt = 0; in ath9k_beacon_init()
531 sc->beacon.bmisscnt = 0; in ath9k_beacon_stop()
579 * Set the global 'beacon has been configured' flag for the in ath9k_beacon_config_adhoc()
592 struct ath_beacon_config *cur_conf = &ctx->beacon; in ath9k_cache_beacon_config()
594 ath_dbg(common, BEACON, in ath9k_cache_beacon_config()
595 "Caching beacon data for BSS: %pM\n", bss_conf->bssid); in ath9k_cache_beacon_config()
603 * It looks like mac80211 may end up using beacon interval of zero in in ath9k_cache_beacon_config()
606 * do sanity check on beacon interval for all operating modes. in ath9k_cache_beacon_config()
648 cur_conf = &ctx->beacon; in ath9k_beacon_config()
660 /* Update the beacon configuration. */ in ath9k_beacon_config()
664 * Configure the HW beacon registers only when we have a valid in ath9k_beacon_config()
665 * beacon interval. in ath9k_beacon_config()
701 struct ath_beacon_config *cur_conf = &sc->cur_chan->beacon; in ath9k_set_beacon()