Lines Matching defs:an

121 static int ath_tx_node_is_asleep(struct ath_softc *sc, struct ath_node *an);
123 static int ath_tx_ampdu_pending(struct ath_softc *sc, struct ath_node *an,
125 static int ath_tx_ampdu_running(struct ath_softc *sc, struct ath_node *an,
132 ath_tx_retry_clone(struct ath_softc *sc, struct ath_node *an,
452 * If 11n is enabled, set it up as if it's an aggregate
464 * descriptor in the first frame in an
544 * Setup segments+descriptors for an 11n aggregate.
662 * info. But if the last frame in an aggregate has one
672 * is called on the final descriptor in an MPDU or A-MPDU -
993 * Construct the 802.11 header+trailer for an encrypted
994 * frame. The only reason this can fail is because of an
1216 * size and the size of an ACK frame. We call into the
1220 * NB: CTS is assumed the same size as an ACK so we can
1418 struct ath_node *an = ATH_NODE(bf->bf_node);
1422 if (an->clrdmask == 1) {
1424 an->clrdmask = 0;
1441 ath_tx_should_swq_frame(struct ath_softc *sc, struct ath_node *an,
1444 struct ieee80211_node *ni = &an->an_node;
1505 struct ath_node *an = ATH_NODE(bf->bf_node);
1506 struct ath_tid *tid = &an->an_tid[bf->bf_state.bfs_tid];
1566 struct ath_node *an;
1633 an = ATH_NODE(ni);
1655 rix = an->an_mgmtrix;
1664 rix = an->an_mgmtrix;
1679 rix = an->an_mcastrix;
1686 rix = an->an_mgmtrix;
1788 * you'll get an RX report for the RTS response, then
1789 * an RX report for the NULL frame, and then the TX
1812 * descriptors when the h/w hits an EOL condition or
1814 * an interrupt. We periodically mark descriptors in this
2155 struct ath_node *an = ATH_NODE(ni);
2183 /* XXX If it's an ADDBA, override the correct queue */
2252 rix = an->an_mgmtrix;
2580 * Return an alternate TID for ADDBA request frames.
2635 ath_tx_addto_baw(struct ath_softc *sc, struct ath_node *an,
2646 tap = ath_tx_get_tx_tid(an, tid->tid);
2726 ath_tx_switch_baw_buf(struct ath_softc *sc, struct ath_node *an,
2735 tap = ath_tx_get_tx_tid(an, tid->tid);
2773 ath_tx_update_baw(struct ath_softc *sc, struct ath_node *an,
2782 tap = ath_tx_get_tx_tid(an, tid->tid);
2831 if (tid->an->an_leak_count > 0) {
2837 if ((tid->an->an_stack_psq > 0)
2838 || (tid->an->an_swq_depth > 0))
2846 tid->an->an_node.ni_macaddr,
2848 tid->an->an_leak_count,
2849 tid->an->an_stack_psq,
2850 tid->an->an_swq_depth,
2859 tid->an->an_leak_count --;
2869 if (tid->an->an_leak_count > 0) {
2910 if (tid->an->an_leak_count) {
3021 * Attempt to direct dispatch an aggregate frame to hardware.
3026 ath_tx_xmit_aggr(struct ath_softc *sc, struct ath_node *an,
3029 struct ath_tid *tid = &an->an_tid[bf->bf_state.bfs_tid];
3034 tap = ath_tx_get_tx_tid(an, tid->tid);
3090 ath_tx_addto_baw(sc, an, tid, bf);
3118 struct ath_node *an = ATH_NODE(ni);
3130 atid = &an->an_tid[tid];
3161 } else if (ath_tx_ampdu_pending(sc, an, tid)) {
3166 } else if (ath_tx_ampdu_running(sc, an, tid)) {
3171 * If the hardware queue is busy, sending an aggregate frame
3213 ath_tx_xmit_aggr(sc, an, txq, bf);
3274 ath_tx_set_clrdmask(struct ath_softc *sc, struct ath_node *an)
3281 if (an->an_tid[i].isfiltered == 1)
3284 an->clrdmask = 1;
3296 ath_tx_tid_init(struct ath_softc *sc, struct ath_node *an)
3302 atid = &an->an_tid[i];
3310 atid->an = an;
3323 an->clrdmask = 1; /* Always start by setting this bit */
3341 tid->an->an_node.ni_macaddr, ":",
3363 tid->an->an_node.ni_macaddr, ":",
3372 tid->an->an_node.ni_macaddr, ":",
3383 ath_tx_set_clrdmask(sc, tid->an);
3476 ath_tx_set_clrdmask(sc, tid->an);
3528 nbf = ath_tx_retry_clone(sc, tid->an, tid, bf);
3580 nbf = ath_tx_retry_clone(sc, tid->an, tid, bf);
3653 tid->an->an_node.ni_macaddr,
3660 __func__, tid->an->an_node.ni_macaddr, ":",
3685 tid->an->an_node.ni_macaddr,
3714 tid->an->an_node.ni_macaddr,
3718 tap = ath_tx_get_tx_tid(tid->an, tid->tid);
3721 * This is an error condition!
3726 __func__, tid->an->an_node.ni_macaddr, ":",
3736 tid->an->an_node.ni_macaddr,
3750 ath_tx_set_clrdmask(sc, tid->an);
3761 tid->an->an_node.ni_macaddr,
3770 if (ieee80211_send_bar(&tid->an->an_node, tap, tap->txa_start) == 0) {
3780 __func__, tid->an->an_node.ni_macaddr, ":",
3786 ath_tx_tid_drain_pkt(struct ath_softc *sc, struct ath_node *an,
3796 if (ath_tx_ampdu_running(sc, an, tid->tid) &&
3804 ath_tx_update_baw(sc, an, tid, bf);
3818 /* Strip it out of an aggregate list if it was in one */
3826 ath_tx_tid_drain_print(struct ath_softc *sc, struct ath_node *an,
3829 struct ieee80211_node *ni = &an->an_node;
3834 tap = ath_tx_get_tx_tid(an, tid->tid);
3897 * It can also be called on an active node during an interface
3908 ath_tx_tid_drain(struct ath_softc *sc, struct ath_node *an,
3913 struct ieee80211_node *ni = &an->an_node;
3916 tap = ath_tx_get_tx_tid(an, tid->tid);
3929 ath_tx_tid_drain_print(sc, an, "norm", tid, bf);
3934 ath_tx_tid_drain_pkt(sc, an, tid, bf_cq, bf);
3945 ath_tx_tid_drain_print(sc, an, "filt", tid, bf);
3950 ath_tx_tid_drain_pkt(sc, an, tid, bf_cq, bf);
3960 ath_tx_set_clrdmask(sc, tid->an);
3983 an,
4067 ath_tx_node_flush(struct ath_softc *sc, struct ath_node *an)
4076 &an->an_node);
4083 an->an_node.ni_macaddr,
4085 an->an_is_powersave,
4086 an->an_stack_psq,
4087 an->an_tim_set,
4088 an->an_swq_depth,
4089 an->clrdmask,
4090 an->an_leak_count);
4093 struct ath_tid *atid = &an->an_tid[tid];
4096 ath_tx_tid_drain(sc, an, atid, &bf_cq);
4108 an->an_leak_count = 0;
4137 ath_tx_tid_drain(sc, tid->an, tid, &bf_cq);
4169 struct ath_node *an = ATH_NODE(ni);
4171 struct ath_tid *atid = &an->an_tid[tid];
4233 * during a hw queue drain and the frame wanted an ACK.
4247 * an A-MPDU.
4256 struct ath_node *an = ATH_NODE(ni);
4258 struct ath_tid *atid = &an->an_tid[tid];
4268 ath_tx_update_baw(sc, an, atid, bf);
4293 ath_tx_tid_cleanup_frame(struct ath_softc *sc, struct ath_node *an,
4296 struct ath_tid *atid = &an->an_tid[tid];
4317 * XXX if it's an aggregate, assert that it's in the
4318 * BAW - we shouldn't have it be in an aggregate
4322 ath_tx_update_baw(sc, an, atid, bf);
4358 ath_tx_tid_cleanup(struct ath_softc *sc, struct ath_node *an, int tid,
4361 struct ath_tid *atid = &an->an_tid[tid];
4398 ath_tx_tid_cleanup_frame(sc, an, tid, bf, bf_cq);
4429 ath_tx_retry_clone(struct ath_softc *sc, struct ath_node *an,
4476 ath_tx_switch_baw_buf(sc, an, tid, bf, nbf);
4485 * Handle retrying an unaggregate frame in an aggregate
4490 * non-aggregate frames in an aggregate session are
4498 struct ath_node *an = ATH_NODE(ni);
4500 struct ath_tid *atid = &an->an_tid[tid];
4505 tap = ath_tx_get_tx_tid(an, tid);
4518 nbf = ath_tx_retry_clone(sc, an, atid, bf);
4534 ath_tx_update_baw(sc, an, atid, bf);
4589 struct ath_node *an = ATH_NODE(ni);
4591 struct ath_tid *atid = &an->an_tid[tid];
4612 nbf = ath_tx_retry_clone(sc, an, atid, bf);
4625 ath_tx_update_baw(sc, an, atid, bf);
4648 * error pkt completion for an aggregate destination
4655 struct ath_node *an = ATH_NODE(ni);
4675 tap = ath_tx_get_tx_tid(an, tid->tid);
4731 * Handle clean-up of packets from an aggregate list.
4741 struct ath_node *an = ATH_NODE(ni);
4743 struct ath_tid *atid = &an->an_tid[tid];
4755 ath_tx_update_baw(sc, an, atid, bf);
4794 * Handle completion of an set of aggregate frames.
4805 struct ath_node *an = ATH_NODE(ni);
4807 struct ath_tid *atid = &an->an_tid[tid];
4889 ath_tx_update_baw(sc, an, atid, bf);
4934 tap = ath_tx_get_tx_tid(an, tid);
4979 /* AR5416 BA bug; this requires an interface reset */
5034 ath_tx_update_baw(sc, an, atid, bf);
5136 * Handle completion of unaggregated frames in an ADDBA
5146 struct ath_node *an = ATH_NODE(ni);
5148 struct ath_tid *atid = &an->an_tid[tid];
5247 ath_tx_update_baw(sc, an, atid, bf);
5298 ath_tx_update_baw(sc, an, atid, bf);
5349 ath_tx_tid_swq_depth_bytes(struct ath_softc *sc, struct ath_node *an,
5358 tap = ath_tx_get_tx_tid(an, tid->tid);
5391 if (an->an_leak_count) {
5405 ath_tx_tid_hw_queue_aggr(struct ath_softc *sc, struct ath_node *an,
5423 tap = ath_tx_get_tx_tid(an, tid->tid);
5467 * ever have been queued as an aggregate in the
5499 swq_pktbytes = ath_tx_tid_swq_depth_bytes(sc, an, tid);
5505 * things like an RTS burst across >1 aggregate.
5513 status = ath_tx_form_aggr(sc, an, tid, &bf_q);
5596 * XXX TODO: it should update all frames in an aggregate
5611 * Checking for an empty txq is done above.
5636 ath_tx_tid_hw_queue_norm(struct ath_softc *sc, struct ath_node *an,
5643 __func__, an, tid->tid);
5648 if (ath_tx_ampdu_pending(sc, an, tid->tid))
5651 if (ath_tx_ampdu_running(sc, an, tid->tid))
5790 if (ath_tx_ampdu_running(sc, tid->an, tid->tid))
5791 ath_tx_tid_hw_queue_aggr(sc, tid->an, tid);
5793 ath_tx_tid_hw_queue_norm(sc, tid->an, tid);
5835 ath_tx_get_tx_tid(struct ath_node *an, int tid)
5837 struct ieee80211_node *ni = &an->an_node;
5851 ath_tx_ampdu_running(struct ath_softc *sc, struct ath_node *an, int tid)
5858 tap = ath_tx_get_tx_tid(an, tid);
5869 ath_tx_ampdu_pending(struct ath_softc *sc, struct ath_node *an, int tid)
5876 tap = ath_tx_get_tx_tid(an, tid);
5888 * Method to handle sending an ADDBA request.
5901 struct ath_node *an = ATH_NODE(ni);
5902 struct ath_tid *atid = &an->an_tid[tid];
5954 * Handle an ADDBA response.
5979 struct ath_node *an = ATH_NODE(ni);
5980 struct ath_tid *atid = &an->an_tid[tid];
6025 struct ath_node *an = ATH_NODE(ni);
6026 struct ath_tid *atid = &an->an_tid[tid];
6075 ath_tx_tid_cleanup(sc, an, tid, &bf_cq);
6099 ath_tx_node_reassoc(struct ath_softc *sc, struct ath_node *an)
6112 tid = &an->an_tid[i];
6118 an->an_node.ni_macaddr,
6127 ath_tx_tid_cleanup(sc, an, i, &bf_cq);
6160 struct ath_node *an = ATH_NODE(ni);
6161 struct ath_tid *atid = &an->an_tid[tid];
6233 struct ath_node *an = ATH_NODE(ni);
6234 struct ath_tid *atid = &an->an_tid[tid];
6260 ath_tx_node_is_asleep(struct ath_softc *sc, struct ath_node *an)
6265 return (an->an_is_powersave);
6287 ath_tx_node_sleep(struct ath_softc *sc, struct ath_node *an)
6298 if (an->an_is_powersave) {
6301 __func__, an->an_node.ni_macaddr, ":");
6307 atid = &an->an_tid[tid];
6314 an->an_is_powersave = 1;
6324 ath_tx_node_wakeup(struct ath_softc *sc, struct ath_node *an)
6335 if (an->an_is_powersave == 0) {
6338 "%s: an=%p: node was already awake\n",
6339 __func__, an);
6344 an->an_is_powersave = 0;
6348 an->an_leak_count = 0;
6351 atid = &an->an_tid[tid];