On 2013-08-06 10:44 AM, Sujith Manoharan wrote: > 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 ? When aggregation is enabled on a TID, it can still hold some non-aggregated packets that need to be sent out first until it starts forming A-MPDUs. I think separating this early doesn't work. - Felix -- 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