Lines Matching refs:beacon

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