Felix Fietkau wrote: > + aggr = !!(tx_info->flags & IEEE80211_TX_CTL_AMPDU); > + if ((aggr && txq->axq_ampdu_depth >= ATH_AGGR_MIN_QDEPTH) || > + (!aggr && txq->axq_depth >= ATH_NON_AGGR_MIN_QDEPTH)) > + break; > + > + ath_set_rates(tid->an->vif, tid->an->sta, bf); > + if (aggr) > + last = ath_tx_form_aggr(sc, txq, tid, &bf_q, bf, > + tid_q, &aggr_len); > + else > + ath_tx_form_burst(sc, txq, tid, &bf_q, bf, tid_q); > + > + if (list_empty(&bf_q)) > + return; Handling non-AMPDU and AMPDU packets in the same path makes the code hard to follow. Since a TID can either have aggregated or unaggregated packets, why not separate the logic early, maybe in the schedule() function ? Sujith -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html