freebsd-dev/sys/dev/ath
Adrian Chadd 6e84772f4d Convert the aggregate descriptor path over to use the same API as
the non-aggregate path.

I "cheated" by using some TX setup code in our HAL that isn't present
in the atheros HAL (or Linux ath9k.)

The old path for forming aggregates was:

* setup the rate control in the first descriptor;
* call chaintxdesc() on all the frames;
* call setupfirsttxdesc() on the first descrpitor in the first
  frame;
* call setuplasttxdesc() on the last descriptor in the last frame.

The new path for forming aggregates looks like the non-aggregate path:

* call setuptxdesc() on the first descriptor in the first frame;
* setup the rate control in the first descriptor;
* call filltxdesc() on each descriptor in the frame;
* if it's an aggregate - call set11n_aggr_{first, middle, last} as
  appropriate (see the code for a description of what is "appropriate".)

Now, this is done primarily for the AR9300 HAL - it doesn't implement
the first set of aggregate functions.  It just has the older methods
and the "first/middle/last" aggregate methods.  So, let's convert the
code to use these.

Note: the AR5416 HAL in FreeBSD had that code (from me, a while ago)
and a previous commit brought it up to behave the same as the AR9300
HAL routines.

There's some further tidyups to be done - specifically, avoid doing
multiple calls to the 11n descriptor functions. I shouldn't call
clr11n_aggr(), then set11n_aggr_middle(), then also set11n_aggr_first().
On (at least MIPS) the TX descriptors are in non-cachable memory and
this will cause multiple slow writes.

I'll debug/tidy that up in a future commit.

Tested:

* AR9280, STA
* AR9280/AR9160, AP
* AR9380, STA (using a local, closed source HAL, sorry!)
2012-11-06 06:19:11 +00:00
..
ath_dfs/null Disable strong signal diversity when enabling radar pulse detection 2012-09-02 05:01:10 +00:00
ath_hal Remove duplicate const specifiers in many drivers (I hope I got all of 2012-11-05 19:16:27 +00:00
ath_rate I've had some feedback that CCK rates are more reliable than MCS 0 2012-10-31 06:35:50 +00:00
ah_osdep.c
ah_osdep.h Migrate the ath_hal_filltxdesc() API to take a list of buffer/seglen values. 2012-08-05 10:12:27 +00:00
if_ath_ahb.c I give up - introduce a TX lock to serialise TX operations. 2012-10-31 06:27:58 +00:00
if_ath_beacon.c Extend the beacon code slightly to support AP mode beaconing for the 2012-08-11 23:26:19 +00:00
if_ath_beacon.h Extend the beacon code slightly to support AP mode beaconing for the 2012-08-11 23:26:19 +00:00
if_ath_debug.c TX EDMA debugging fixes: 2012-11-05 07:08:45 +00:00
if_ath_debug.h Add a debug method to dump the EDMA TX status descriptor contents out. 2012-11-03 04:53:44 +00:00
if_ath_keycache.c
if_ath_keycache.h
if_ath_led.c
if_ath_led.h
if_ath_misc.h I give up - introduce a TX lock to serialise TX operations. 2012-10-31 06:27:58 +00:00
if_ath_pci.c I give up - introduce a TX lock to serialise TX operations. 2012-10-31 06:27:58 +00:00
if_ath_rx_edma.c Migrate the ath(4) KTR logging to use an ATH_KTR() macro. 2012-09-24 20:35:56 +00:00
if_ath_rx_edma.h Begin abstracting out the RX path in preparation for RX EDMA support. 2012-07-03 06:59:12 +00:00
if_ath_rx.c Break the RX processing up into smaller chunks of 128 frames each. 2012-10-14 20:31:38 +00:00
if_ath_rx.h Convert sc_rxpending to a per-EDMA queue, and use that for the legacy code. 2012-07-10 00:02:19 +00:00
if_ath_sysctl.c Migrate the ath(4) KTR logging to use an ATH_KTR() macro. 2012-09-24 20:35:56 +00:00
if_ath_sysctl.h
if_ath_tdma.c
if_ath_tdma.h
if_ath_tsf.h
if_ath_tx_edma.c Clear IFF_DRV_OACTIVE if any slots were completed. 2012-11-05 09:27:47 +00:00
if_ath_tx_edma.h Begin separating out the TX DMA setup in preparation for TX EDMA support. 2012-07-23 03:52:18 +00:00
if_ath_tx_ht.c For AR9380 NICs - the non-enterprise versions don't support RTS protection 2012-11-03 22:13:42 +00:00
if_ath_tx_ht.h
if_ath_tx.c Convert the aggregate descriptor path over to use the same API as 2012-11-06 06:19:11 +00:00
if_ath_tx.h Begin fleshing out some software queue awareness for TIM handling with 2012-10-28 21:13:12 +00:00
if_ath.c Add a new HAL call to extract out the HAL enterprise bits from the 2012-11-03 22:12:35 +00:00
if_athdfs.h
if_athioctl.h Implement my first cut at filtered frames in aggregation sessions. 2012-09-18 10:14:17 +00:00
if_athrate.h Create an ioctl API for fetching the current rate control information. 2012-07-20 01:27:20 +00:00
if_athvar.h Add a new HAL call to extract out the HAL enterprise bits from the 2012-11-03 22:12:35 +00:00