2010/6/23 Felix Fietkau <n...@openwrt.org>:
> On 2010-06-23 6:36 PM, Björn Smedman wrote:
>> [snip] As
>> far as I can tell, whenever the first subframe of an aggregate fails
>> and is software retried, the rate control feedback for that aggregate
>> is lost (ath_tx_rc_status() is never called with update_rc = true in
>> xmit.c).
> I think you misread that part. The loop iterates over all subframes in
> the aggregate, and the first successful or swretry-expired frame will
> trigger an AMPDU status report, which will update the RC. The first
> subframe of the A-MPDU is not getting any special treatment here.

You're (still) right I misread that part. But I think there is another
problem when the first subframe of an A-MPDU is not acked: if it has
not expired yet it is (as I understand it) prepended to the tid queue
for software retry and will therefore be the first subframe of the
next aggregate as well, which will then be transmitted with the same
"old" rates and counts as the previous aggregate. So the feedback from
xmit to rc works, but the control information flow from rc to xmit is
delayed.

I guess the real solution is your rewrite... But in the mean time
perhaps we can memcpy the tx_info control from the last subframe to
the first before calling ath_buf_set_rate() in ath_tx_sched_aggr()?
Could that have any side effects? It could make the aggregate size go
over the 4 ms limit I guess... How bad is that?

> - Felix

/Björn
_______________________________________________
ath9k-devel mailing list
ath9k-devel@lists.ath9k.org
https://lists.ath9k.org/mailman/listinfo/ath9k-devel

Reply via email to