summaryrefslogtreecommitdiffstats
path: root/contrib/libc++/src/future.cpp
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2012-11-10 22:37:06 +0000
committeradrian <adrian@FreeBSD.org>2012-11-10 22:37:06 +0000
commitf5c29a79efed378c9e3bd7cd895dcce825230c3d (patch)
tree5c0c3338fe4f9a1575b890c5e5332f82b982af86 /contrib/libc++/src/future.cpp
parent464808b6f100795216849a2948e345eeaac23fec (diff)
downloadFreeBSD-src-f5c29a79efed378c9e3bd7cd895dcce825230c3d.zip
FreeBSD-src-f5c29a79efed378c9e3bd7cd895dcce825230c3d.tar.gz
Correct some rather weird and broken behaviour observed when doing
actual traffic with an AR9380/AR9382/AR9485. The sample rate control stats would show impossibly large numbers for "successful packets transmitted." The number was a tad under 2^^64-1. So after a bit of digging, I found that the sample rate control code was making 'tries' turn into a negative number.. and this was because ts_longretry was too small. The hardware returns "ts_longretry" at the current rate selection, not overall for that TX descriptor. So if you setup four TX rate scenarios and the second one works, ts_longretry is only set for the number of attempts at that second rate scenario. The FreeBSD HAL code does the correction in ath_hal_proctxdesc() - however, this isn't possible with EDMA. EDMA TX completion is done separate from the original TX descriptor. So the real solution is to split out "find ts_rate and ts_longretry" from "complete TX descriptor". Until that's done, put a hack in the EDMA TX path that uses the rate scenario information in the ath_buf. Tested: AR9380, AR9382, AR9485 STA mode
Diffstat (limited to 'contrib/libc++/src/future.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud