Lines Matching defs:an

123 static int ath_tx_node_is_asleep(struct ath_softc *sc, struct ath_node *an);
125 static int ath_tx_ampdu_pending(struct ath_softc *sc, struct ath_node *an,
127 static int ath_tx_ampdu_running(struct ath_softc *sc, struct ath_node *an,
134 ath_tx_retry_clone(struct ath_softc *sc, struct ath_node *an,
454 * If 11n is enabled, set it up as if it's an aggregate
466 * descriptor in the first frame in an
546 * Setup segments+descriptors for an 11n aggregate.
664 * info. But if the last frame in an aggregate has one
674 * is called on the final descriptor in an MPDU or A-MPDU -
995 * Construct the 802.11 header+trailer for an encrypted
996 * frame. The only reason this can fail is because of an
1219 * size and the size of an ACK frame. We call into the
1223 * NB: CTS is assumed the same size as an ACK so we can
1421 struct ath_node *an = ATH_NODE(bf->bf_node);
1425 if (an->clrdmask == 1) {
1427 an->clrdmask = 0;
1444 ath_tx_should_swq_frame(struct ath_softc *sc, struct ath_node *an,
1447 struct ieee80211_node *ni = &an->an_node;
1508 struct ath_node *an = ATH_NODE(bf->bf_node);
1509 struct ath_tid *tid = &an->an_tid[bf->bf_state.bfs_tid];
1569 struct ath_node *an;
1636 an = ATH_NODE(ni);
1658 rix = an->an_mgmtrix;
1667 rix = an->an_mgmtrix;
1682 rix = an->an_mcastrix;
1689 rix = an->an_mgmtrix;
1791 * you'll get an RX report for the RTS response, then
1792 * an RX report for the NULL frame, and then the TX
1815 * descriptors when the h/w hits an EOL condition or
1817 * an interrupt. We periodically mark descriptors in this
2158 struct ath_node *an = ATH_NODE(ni);
2186 /* XXX If it's an ADDBA, override the correct queue */
2255 rix = an->an_mgmtrix;
2602 * Return an alternate TID for ADDBA request frames.
2657 ath_tx_addto_baw(struct ath_softc *sc, struct ath_node *an,
2668 tap = ath_tx_get_tx_tid(an, tid->tid);
2748 ath_tx_switch_baw_buf(struct ath_softc *sc, struct ath_node *an,
2757 tap = ath_tx_get_tx_tid(an, tid->tid);
2795 ath_tx_update_baw(struct ath_softc *sc, struct ath_node *an,
2804 tap = ath_tx_get_tx_tid(an, tid->tid);
2853 if (tid->an->an_leak_count > 0) {
2859 if ((tid->an->an_stack_psq > 0)
2860 || (tid->an->an_swq_depth > 0))
2868 tid->an->an_node.ni_macaddr,
2870 tid->an->an_leak_count,
2871 tid->an->an_stack_psq,
2872 tid->an->an_swq_depth,
2881 tid->an->an_leak_count --;
2891 if (tid->an->an_leak_count > 0) {
2932 if (tid->an->an_leak_count) {
3043 * Attempt to direct dispatch an aggregate frame to hardware.
3048 ath_tx_xmit_aggr(struct ath_softc *sc, struct ath_node *an,
3051 struct ath_tid *tid = &an->an_tid[bf->bf_state.bfs_tid];
3056 tap = ath_tx_get_tx_tid(an, tid->tid);
3112 ath_tx_addto_baw(sc, an, tid, bf);
3140 struct ath_node *an = ATH_NODE(ni);
3152 atid = &an->an_tid[tid];
3183 } else if (ath_tx_ampdu_pending(sc, an, tid)) {
3188 } else if (ath_tx_ampdu_running(sc, an, tid)) {
3193 * If the hardware queue is busy, sending an aggregate frame
3235 ath_tx_xmit_aggr(sc, an, txq, bf);
3296 ath_tx_set_clrdmask(struct ath_softc *sc, struct ath_node *an)
3303 if (an->an_tid[i].isfiltered == 1)
3306 an->clrdmask = 1;
3318 ath_tx_tid_init(struct ath_softc *sc, struct ath_node *an)
3324 atid = &an->an_tid[i];
3332 atid->an = an;
3345 an->clrdmask = 1; /* Always start by setting this bit */
3363 tid->an->an_node.ni_macaddr, ":",
3385 tid->an->an_node.ni_macaddr, ":",
3394 tid->an->an_node.ni_macaddr, ":",
3405 ath_tx_set_clrdmask(sc, tid->an);
3498 ath_tx_set_clrdmask(sc, tid->an);
3550 nbf = ath_tx_retry_clone(sc, tid->an, tid, bf);
3602 nbf = ath_tx_retry_clone(sc, tid->an, tid, bf);
3675 tid->an->an_node.ni_macaddr,
3682 __func__, tid->an->an_node.ni_macaddr, ":",
3707 tid->an->an_node.ni_macaddr,
3736 tid->an->an_node.ni_macaddr,
3740 tap = ath_tx_get_tx_tid(tid->an, tid->tid);
3743 * This is an error condition!
3748 __func__, tid->an->an_node.ni_macaddr, ":",
3758 tid->an->an_node.ni_macaddr,
3772 ath_tx_set_clrdmask(sc, tid->an);
3783 tid->an->an_node.ni_macaddr,
3792 if (ieee80211_send_bar(&tid->an->an_node, tap, tap->txa_start) == 0) {
3802 __func__, tid->an->an_node.ni_macaddr, ":",
3808 ath_tx_tid_drain_pkt(struct ath_softc *sc, struct ath_node *an,
3818 if (ath_tx_ampdu_running(sc, an, tid->tid) &&
3826 ath_tx_update_baw(sc, an, tid, bf);
3840 /* Strip it out of an aggregate list if it was in one */
3848 ath_tx_tid_drain_print(struct ath_softc *sc, struct ath_node *an,
3851 struct ieee80211_node *ni = &an->an_node;
3856 tap = ath_tx_get_tx_tid(an, tid->tid);
3919 * It can also be called on an active node during an interface
3930 ath_tx_tid_drain(struct ath_softc *sc, struct ath_node *an,
3935 struct ieee80211_node *ni = &an->an_node;
3938 tap = ath_tx_get_tx_tid(an, tid->tid);
3951 ath_tx_tid_drain_print(sc, an, "norm", tid, bf);
3956 ath_tx_tid_drain_pkt(sc, an, tid, bf_cq, bf);
3967 ath_tx_tid_drain_print(sc, an, "filt", tid, bf);
3972 ath_tx_tid_drain_pkt(sc, an, tid, bf_cq, bf);
3982 ath_tx_set_clrdmask(sc, tid->an);
4005 an,
4089 ath_tx_node_flush(struct ath_softc *sc, struct ath_node *an)
4098 &an->an_node);
4105 an->an_node.ni_macaddr,
4107 an->an_is_powersave,
4108 an->an_stack_psq,
4109 an->an_tim_set,
4110 an->an_swq_depth,
4111 an->clrdmask,
4112 an->an_leak_count);
4115 struct ath_tid *atid = &an->an_tid[tid];
4118 ath_tx_tid_drain(sc, an, atid, &bf_cq);
4130 an->an_leak_count = 0;
4159 ath_tx_tid_drain(sc, tid->an, tid, &bf_cq);
4191 struct ath_node *an = ATH_NODE(ni);
4193 struct ath_tid *atid = &an->an_tid[tid];
4255 * during a hw queue drain and the frame wanted an ACK.
4269 * an A-MPDU.
4278 struct ath_node *an = ATH_NODE(ni);
4280 struct ath_tid *atid = &an->an_tid[tid];
4290 ath_tx_update_baw(sc, an, atid, bf);
4315 ath_tx_tid_cleanup_frame(struct ath_softc *sc, struct ath_node *an,
4318 struct ath_tid *atid = &an->an_tid[tid];
4339 * XXX if it's an aggregate, assert that it's in the
4340 * BAW - we shouldn't have it be in an aggregate
4344 ath_tx_update_baw(sc, an, atid, bf);
4380 ath_tx_tid_cleanup(struct ath_softc *sc, struct ath_node *an, int tid,
4383 struct ath_tid *atid = &an->an_tid[tid];
4420 ath_tx_tid_cleanup_frame(sc, an, tid, bf, bf_cq);
4451 ath_tx_retry_clone(struct ath_softc *sc, struct ath_node *an,
4498 ath_tx_switch_baw_buf(sc, an, tid, bf, nbf);
4507 * Handle retrying an unaggregate frame in an aggregate
4512 * non-aggregate frames in an aggregate session are
4520 struct ath_node *an = ATH_NODE(ni);
4522 struct ath_tid *atid = &an->an_tid[tid];
4527 tap = ath_tx_get_tx_tid(an, tid);
4540 nbf = ath_tx_retry_clone(sc, an, atid, bf);
4556 ath_tx_update_baw(sc, an, atid, bf);
4611 struct ath_node *an = ATH_NODE(ni);
4613 struct ath_tid *atid = &an->an_tid[tid];
4634 nbf = ath_tx_retry_clone(sc, an, atid, bf);
4647 ath_tx_update_baw(sc, an, atid, bf);
4670 * error pkt completion for an aggregate destination
4677 struct ath_node *an = ATH_NODE(ni);
4697 tap = ath_tx_get_tx_tid(an, tid->tid);
4753 * Handle clean-up of packets from an aggregate list.
4763 struct ath_node *an = ATH_NODE(ni);
4765 struct ath_tid *atid = &an->an_tid[tid];
4777 ath_tx_update_baw(sc, an, atid, bf);
4816 * Handle completion of an set of aggregate frames.
4827 struct ath_node *an = ATH_NODE(ni);
4829 struct ath_tid *atid = &an->an_tid[tid];
4911 ath_tx_update_baw(sc, an, atid, bf);
4956 tap = ath_tx_get_tx_tid(an, tid);
5001 /* AR5416 BA bug; this requires an interface reset */
5056 ath_tx_update_baw(sc, an, atid, bf);
5158 * Handle completion of unaggregated frames in an ADDBA
5168 struct ath_node *an = ATH_NODE(ni);
5170 struct ath_tid *atid = &an->an_tid[tid];
5269 ath_tx_update_baw(sc, an, atid, bf);
5320 ath_tx_update_baw(sc, an, atid, bf);
5371 ath_tx_tid_swq_depth_bytes(struct ath_softc *sc, struct ath_node *an,
5380 tap = ath_tx_get_tx_tid(an, tid->tid);
5413 if (an->an_leak_count) {
5427 ath_tx_tid_hw_queue_aggr(struct ath_softc *sc, struct ath_node *an,
5445 tap = ath_tx_get_tx_tid(an, tid->tid);
5489 * ever have been queued as an aggregate in the
5521 swq_pktbytes = ath_tx_tid_swq_depth_bytes(sc, an, tid);
5527 * things like an RTS burst across >1 aggregate.
5535 status = ath_tx_form_aggr(sc, an, tid, &bf_q);
5618 * XXX TODO: it should update all frames in an aggregate
5633 * Checking for an empty txq is done above.
5658 ath_tx_tid_hw_queue_norm(struct ath_softc *sc, struct ath_node *an,
5665 __func__, an, tid->tid);
5670 if (ath_tx_ampdu_pending(sc, an, tid->tid))
5673 if (ath_tx_ampdu_running(sc, an, tid->tid))
5812 if (ath_tx_ampdu_running(sc, tid->an, tid->tid))
5813 ath_tx_tid_hw_queue_aggr(sc, tid->an, tid);
5815 ath_tx_tid_hw_queue_norm(sc, tid->an, tid);
5857 ath_tx_get_tx_tid(struct ath_node *an, int tid)
5859 struct ieee80211_node *ni = &an->an_node;
5873 ath_tx_ampdu_running(struct ath_softc *sc, struct ath_node *an, int tid)
5880 tap = ath_tx_get_tx_tid(an, tid);
5891 ath_tx_ampdu_pending(struct ath_softc *sc, struct ath_node *an, int tid)
5898 tap = ath_tx_get_tx_tid(an, tid);
5910 * Method to handle sending an ADDBA request.
5923 struct ath_node *an = ATH_NODE(ni);
5924 struct ath_tid *atid = &an->an_tid[tid];
5976 * Handle an ADDBA response.
6001 struct ath_node *an = ATH_NODE(ni);
6002 struct ath_tid *atid = &an->an_tid[tid];
6047 struct ath_node *an = ATH_NODE(ni);
6048 struct ath_tid *atid = &an->an_tid[tid];
6097 ath_tx_tid_cleanup(sc, an, tid, &bf_cq);
6121 ath_tx_node_reassoc(struct ath_softc *sc, struct ath_node *an)
6134 tid = &an->an_tid[i];
6140 an->an_node.ni_macaddr,
6149 ath_tx_tid_cleanup(sc, an, i, &bf_cq);
6182 struct ath_node *an = ATH_NODE(ni);
6183 struct ath_tid *atid = &an->an_tid[tid];
6255 struct ath_node *an = ATH_NODE(ni);
6256 struct ath_tid *atid = &an->an_tid[tid];
6282 ath_tx_node_is_asleep(struct ath_softc *sc, struct ath_node *an)
6287 return (an->an_is_powersave);
6309 ath_tx_node_sleep(struct ath_softc *sc, struct ath_node *an)
6320 if (an->an_is_powersave) {
6323 __func__, an->an_node.ni_macaddr, ":");
6329 atid = &an->an_tid[tid];
6336 an->an_is_powersave = 1;
6346 ath_tx_node_wakeup(struct ath_softc *sc, struct ath_node *an)
6357 if (an->an_is_powersave == 0) {
6360 "%s: an=%p: node was already awake\n",
6361 __func__, an);
6366 an->an_is_powersave = 0;
6370 an->an_leak_count = 0;
6373 atid = &an->an_tid[tid];