Lines Matching defs:an

119 static int ath_tx_node_is_asleep(struct ath_softc *sc, struct ath_node *an);
121 static int ath_tx_ampdu_pending(struct ath_softc *sc, struct ath_node *an,
123 static int ath_tx_ampdu_running(struct ath_softc *sc, struct ath_node *an,
130 ath_tx_retry_clone(struct ath_softc *sc, struct ath_node *an,
214 * Since the sender may try to set an AC which is
453 * If 11n is enabled, set it up as if it's an aggregate
465 * descriptor in the first frame in an
545 * Setup segments+descriptors for an 11n aggregate.
663 * info. But if the last frame in an aggregate has one
673 * is called on the final descriptor in an MPDU or A-MPDU -
1010 * Construct the 802.11 header+trailer for an encrypted
1011 * frame. The only reason this can fail is because of an
1224 * size and the size of an ACK frame. We call into the
1228 * NB: CTS is assumed the same size as an ACK so we can
1422 struct ath_node *an = ATH_NODE(bf->bf_node);
1426 if (an->clrdmask == 1) {
1428 an->clrdmask = 0;
1445 ath_tx_should_swq_frame(struct ath_softc *sc, struct ath_node *an,
1448 struct ieee80211_node *ni = &an->an_node;
1510 struct ath_node *an = ATH_NODE(bf->bf_node);
1511 struct ath_tid *tid = &an->an_tid[bf->bf_state.bfs_tid];
1574 struct ath_node *an;
1638 an = ATH_NODE(ni);
1659 rix = an->an_mgmtrix;
1668 rix = an->an_mgmtrix;
1683 rix = an->an_mcastrix;
1690 rix = an->an_mgmtrix;
1775 * descriptors when the h/w hits an EOL condition or
1777 * an interrupt. We periodically mark descriptors in this
2134 /* XXX If it's an ADDBA, override the correct queue */
2510 * Return an alternate TID for ADDBA request frames.
2566 ath_tx_addto_baw(struct ath_softc *sc, struct ath_node *an,
2577 tap = ath_tx_get_tx_tid(an, tid->tid);
2658 ath_tx_switch_baw_buf(struct ath_softc *sc, struct ath_node *an,
2667 tap = ath_tx_get_tx_tid(an, tid->tid);
2705 ath_tx_update_baw(struct ath_softc *sc, struct ath_node *an,
2714 tap = ath_tx_get_tx_tid(an, tid->tid);
2763 if (tid->an->an_leak_count > 0) {
2769 if ((tid->an->an_stack_psq > 0)
2770 || (tid->an->an_swq_depth > 0))
2778 tid->an->an_node.ni_macaddr,
2780 tid->an->an_leak_count,
2781 tid->an->an_stack_psq,
2782 tid->an->an_swq_depth,
2791 tid->an->an_leak_count --;
2801 if (tid->an->an_leak_count > 0) {
2842 if (tid->an->an_leak_count) {
2941 * Attempt to direct dispatch an aggregate frame to hardware.
2946 ath_tx_xmit_aggr(struct ath_softc *sc, struct ath_node *an,
2949 struct ath_tid *tid = &an->an_tid[bf->bf_state.bfs_tid];
2954 tap = ath_tx_get_tx_tid(an, tid->tid);
3009 ath_tx_addto_baw(sc, an, tid, bf);
3037 struct ath_node *an = ATH_NODE(ni);
3049 atid = &an->an_tid[tid];
3080 } else if (ath_tx_ampdu_pending(sc, an, tid)) {
3085 } else if (ath_tx_ampdu_running(sc, an, tid)) {
3119 ath_tx_xmit_aggr(sc, an, txq, bf);
3180 ath_tx_set_clrdmask(struct ath_softc *sc, struct ath_node *an)
3187 if (an->an_tid[i].isfiltered == 1)
3190 an->clrdmask = 1;
3202 ath_tx_tid_init(struct ath_softc *sc, struct ath_node *an)
3208 atid = &an->an_tid[i];
3216 atid->an = an;
3229 an->clrdmask = 1; /* Always start by setting this bit */
3265 tid->an->an_node.ni_macaddr, ":");
3280 ath_tx_set_clrdmask(sc, tid->an);
3368 ath_tx_set_clrdmask(sc, tid->an);
3414 nbf = ath_tx_retry_clone(sc, tid->an, tid, bf);
3464 nbf = ath_tx_retry_clone(sc, tid->an, tid, bf);
3537 tid->an->an_node.ni_macaddr,
3544 __func__, tid->an->an_node.ni_macaddr, ":",
3569 tid->an->an_node.ni_macaddr,
3598 tid->an->an_node.ni_macaddr,
3602 tap = ath_tx_get_tx_tid(tid->an, tid->tid);
3605 * This is an error condition!
3610 __func__, tid->an->an_node.ni_macaddr, ":",
3620 tid->an->an_node.ni_macaddr,
3634 ath_tx_set_clrdmask(sc, tid->an);
3645 tid->an->an_node.ni_macaddr,
3654 if (ieee80211_send_bar(&tid->an->an_node, tap, tap->txa_start) == 0) {
3664 __func__, tid->an->an_node.ni_macaddr, ":",
3670 ath_tx_tid_drain_pkt(struct ath_softc *sc, struct ath_node *an,
3680 if (ath_tx_ampdu_running(sc, an, tid->tid) &&
3688 ath_tx_update_baw(sc, an, tid, bf);
3702 /* Strip it out of an aggregate list if it was in one */
3710 ath_tx_tid_drain_print(struct ath_softc *sc, struct ath_node *an,
3713 struct ieee80211_node *ni = &an->an_node;
3718 tap = ath_tx_get_tx_tid(an, tid->tid);
3781 * It can also be called on an active node during an interface
3792 ath_tx_tid_drain(struct ath_softc *sc, struct ath_node *an,
3797 struct ieee80211_node *ni = &an->an_node;
3800 tap = ath_tx_get_tx_tid(an, tid->tid);
3813 ath_tx_tid_drain_print(sc, an, "norm", tid, bf);
3818 ath_tx_tid_drain_pkt(sc, an, tid, bf_cq, bf);
3829 ath_tx_tid_drain_print(sc, an, "filt", tid, bf);
3834 ath_tx_tid_drain_pkt(sc, an, tid, bf_cq, bf);
3844 ath_tx_set_clrdmask(sc, tid->an);
3867 an,
3951 ath_tx_node_flush(struct ath_softc *sc, struct ath_node *an)
3960 &an->an_node);
3967 an->an_node.ni_macaddr,
3969 an->an_is_powersave,
3970 an->an_stack_psq,
3971 an->an_tim_set,
3972 an->an_swq_depth,
3973 an->clrdmask,
3974 an->an_leak_count);
3977 struct ath_tid *atid = &an->an_tid[tid];
3980 ath_tx_tid_drain(sc, an, atid, &bf_cq);
3992 an->an_leak_count = 0;
4021 ath_tx_tid_drain(sc, tid->an, tid, &bf_cq);
4053 struct ath_node *an = ATH_NODE(ni);
4055 struct ath_tid *atid = &an->an_tid[tid];
4104 * during a hw queue drain and the frame wanted an ACK.
4116 * an A-MPDU.
4125 struct ath_node *an = ATH_NODE(ni);
4127 struct ath_tid *atid = &an->an_tid[tid];
4160 ath_tx_tid_cleanup(struct ath_softc *sc, struct ath_node *an, int tid,
4163 struct ath_tid *atid = &an->an_tid[tid];
4194 ath_tx_update_baw(sc, an, atid, bf);
4221 tap = ath_tx_get_tx_tid(an, tid);
4242 ath_tx_retry_clone(struct ath_softc *sc, struct ath_node *an,
4289 ath_tx_switch_baw_buf(sc, an, tid, bf, nbf);
4298 * Handle retrying an unaggregate frame in an aggregate
4303 * non-aggregate frames in an aggregate session are
4311 struct ath_node *an = ATH_NODE(ni);
4313 struct ath_tid *atid = &an->an_tid[tid];
4318 tap = ath_tx_get_tx_tid(an, tid);
4331 nbf = ath_tx_retry_clone(sc, an, atid, bf);
4347 ath_tx_update_baw(sc, an, atid, bf);
4402 struct ath_node *an = ATH_NODE(ni);
4404 struct ath_tid *atid = &an->an_tid[tid];
4425 nbf = ath_tx_retry_clone(sc, an, atid, bf);
4438 ath_tx_update_baw(sc, an, atid, bf);
4461 * error pkt completion for an aggregate destination
4468 struct ath_node *an = ATH_NODE(ni);
4490 tap = ath_tx_get_tx_tid(an, tid->tid);
4546 * Handle clean-up of packets from an aggregate list.
4556 struct ath_node *an = ATH_NODE(ni);
4558 struct ath_tid *atid = &an->an_tid[tid];
4598 * Handle completion of an set of aggregate frames.
4609 struct ath_node *an = ATH_NODE(ni);
4611 struct ath_tid *atid = &an->an_tid[tid];
4690 ath_tx_update_baw(sc, an, atid, bf);
4735 tap = ath_tx_get_tx_tid(an, tid);
4780 /* AR5416 BA bug; this requires an interface reset */
4786 /* XXX TODO: schedule an interface reset */
4831 ath_tx_update_baw(sc, an, atid, bf);
4932 * Handle completion of unaggregated frames in an ADDBA
4942 struct ath_node *an = ATH_NODE(ni);
4944 struct ath_tid *atid = &an->an_tid[tid];
5038 ath_tx_update_baw(sc, an, atid, bf);
5090 ath_tx_update_baw(sc, an, atid, bf);
5138 ath_tx_tid_hw_queue_aggr(struct ath_softc *sc, struct ath_node *an,
5155 tap = ath_tx_get_tx_tid(an, tid->tid);
5199 * ever have been queued as an aggregate in the
5243 status = ath_tx_form_aggr(sc, an, tid, &bf_q);
5327 * XXX TODO: it should update all frames in an aggregate
5342 * Checking for an empty txq is done above.
5367 ath_tx_tid_hw_queue_norm(struct ath_softc *sc, struct ath_node *an,
5374 __func__, an, tid->tid);
5379 if (ath_tx_ampdu_pending(sc, an, tid->tid))
5382 if (ath_tx_ampdu_running(sc, an, tid->tid))
5500 if (ath_tx_ampdu_running(sc, tid->an, tid->tid))
5501 ath_tx_tid_hw_queue_aggr(sc, tid->an, tid);
5503 ath_tx_tid_hw_queue_norm(sc, tid->an, tid);
5545 ath_tx_get_tx_tid(struct ath_node *an, int tid)
5547 struct ieee80211_node *ni = &an->an_node;
5561 ath_tx_ampdu_running(struct ath_softc *sc, struct ath_node *an, int tid)
5568 tap = ath_tx_get_tx_tid(an, tid);
5579 ath_tx_ampdu_pending(struct ath_softc *sc, struct ath_node *an, int tid)
5586 tap = ath_tx_get_tx_tid(an, tid);
5599 * Method to handle sending an ADDBA request.
5612 struct ath_node *an = ATH_NODE(ni);
5613 struct ath_tid *atid = &an->an_tid[tid];
5665 * Handle an ADDBA response.
5690 struct ath_node *an = ATH_NODE(ni);
5691 struct ath_tid *atid = &an->an_tid[tid];
5737 struct ath_node *an = ATH_NODE(ni);
5738 struct ath_tid *atid = &an->an_tid[tid];
5774 ath_tx_tid_cleanup(sc, an, tid, &bf_cq);
5797 ath_tx_node_reassoc(struct ath_softc *sc, struct ath_node *an)
5810 tid = &an->an_tid[i];
5817 an->an_node.ni_macaddr,
5820 ath_tx_tid_cleanup(sc, an, i, &bf_cq);
5852 struct ath_node *an = ATH_NODE(ni);
5853 struct ath_tid *atid = &an->an_tid[tid];
5901 struct ath_node *an = ATH_NODE(ni);
5902 struct ath_tid *atid = &an->an_tid[tid];
5928 ath_tx_node_is_asleep(struct ath_softc *sc, struct ath_node *an)
5933 return (an->an_is_powersave);
5955 ath_tx_node_sleep(struct ath_softc *sc, struct ath_node *an)
5966 if (an->an_is_powersave) {
5969 __func__, an->an_node.ni_macaddr, ":");
5975 atid = &an->an_tid[tid];
5982 an->an_is_powersave = 1;
5992 ath_tx_node_wakeup(struct ath_softc *sc, struct ath_node *an)
6003 if (an->an_is_powersave == 0) {
6006 "%s: an=%p: node was already awake\n",
6007 __func__, an);
6012 an->an_is_powersave = 0;
6016 an->an_leak_count = 0;
6019 atid = &an->an_tid[tid];