freebsd-dev/sys/dev/ath
Adrian Chadd bb06995571 Convert the TX path to use the new HAL methods for accessing the
TX descriptor link pointers.

This is required for the AR93xx and later chipsets.

The RX path is slightly different - the legacy RX path directly
accesses ath_desc->ds_link for now, however this isn't at all done
for EDMA (FIFO) RX.

Now, for those performing a little software archeology here:

This is all a bit sub-optimal. "struct ath_desc" is only really relevant
for the pre-AR93xx NICs - where ds_link and ds_data is always in the
same location.

The AR93xx and later NICs have different descriptor layouts altogether.

Now, for AR93xx and later NICs, you should never directly reference
ds_link and ds_data, as:

* the RX descriptors don't have either - the data is _after_ the RX
  descriptor.  They're just one large buffer.  There's also no need for
  a per-descriptor RX buffer size as they're all fixed sizes.

* the TX descriptors have 4 buffer and 4 length fields _and_ a link
  pointer.  Each frame takes up one TX FIFO pointer, but it can contain
  multiple subframes (either multiple frames in a buffer, and/or
  multiple frames in an aggregate/RIFS burst.)

* .. so, when TX frames are queued to a hardware queue, the link
  pointer is ONLY for buffers in that frame/aggregate.  The next frame
  starts in a new FIFO pointer.

* Finally, descriptor completion status is in a different ring.
  I'll write something up about that when its time to do so.

This was inspired by Linux ath9k and the reference driver but is a
reimplementation.

Obtained from:	Linux ath9k, Qualcomm Atheros
2012-07-19 03:51:16 +00:00
..
ath_dfs/null In a complete lack of foresight on my part, my previous commit broke 2012-06-24 08:47:19 +00:00
ath_hal Break out the TX descriptor link field into HAL methods. 2012-07-19 02:25:14 +00:00
ath_rate In a complete lack of foresight on my part, my previous commit broke 2012-06-24 08:47:19 +00:00
ah_osdep.c Fix the HAL debugging to only use one bit to mark a message as unmaskable. 2012-07-01 02:34:32 +00:00
ah_osdep.h Add OS_MEMCMP(). 2012-07-01 02:37:04 +00:00
if_ath_ahb.c Create an RX queue lock. 2012-07-14 02:22:17 +00:00
if_ath_beacon.c Convert the TX path to use the new HAL methods for accessing the 2012-07-19 03:51:16 +00:00
if_ath_beacon.h Migrate most of the beacon handling functions out to if_ath_beacon.c. 2012-05-20 04:14:29 +00:00
if_ath_debug.c Extend the RX descriptor completion debugging to log the larger 2012-07-09 06:39:46 +00:00
if_ath_debug.h Map ATH_KTR_* to 0 when ATH_DEBUG is not defined. This effectively NOPs 2012-07-11 12:10:13 +00:00
if_ath_keycache.c Add a 'vap' to ath_keyset(). 2011-11-08 19:25:52 +00:00
if_ath_keycache.h Add a 'vap' to ath_keyset(). 2011-11-08 19:25:52 +00:00
if_ath_led.c Bring over the initial 802.11n bluetooth coexistence support code. 2012-06-26 22:16:53 +00:00
if_ath_led.h Refactor out the software LED config code into a common function, called 2011-12-26 05:46:22 +00:00
if_ath_misc.h Fix EDMA RX to actually work without panicing the machine. 2012-07-14 02:07:51 +00:00
if_ath_pci.c Create an RX queue lock. 2012-07-14 02:22:17 +00:00
if_ath_rx_edma.c Log the number of handled decsriptors and valid descriptors when 2012-07-15 20:48:21 +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 Handle RX Keymiss events. 2012-07-15 20:51:41 +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 Handle RX Keymiss events. 2012-07-15 20:51:41 +00:00
if_ath_sysctl.h Break out most of the HAL related tweaks into a per-HAL instance, 2011-06-23 02:38:36 +00:00
if_ath_tdma.c Migrate the TDMA management functions out of if_ath.c into if_ath_tdma.c. 2012-05-20 02:49:42 +00:00
if_ath_tdma.h Migrate the TDMA management functions out of if_ath.c into if_ath_tdma.c. 2012-05-20 02:49:42 +00:00
if_ath_tsf.h Migrate the bulk of the RX routines out from if_ath.c to if_ath_rx.[ch]. 2012-05-20 02:05:10 +00:00
if_ath_tx_ht.c A few nitpicks: 2012-06-16 21:37:15 +00:00
if_ath_tx_ht.h Introduce TX aggregation and software TX queue management 2011-11-08 22:43:13 +00:00
if_ath_tx.c Convert the TX path to use the new HAL methods for accessing the 2012-07-19 03:51:16 +00:00
if_ath_tx.h Revert r233227 and followup commits as it breaks CCMP PN replay detection. 2012-06-11 06:59:28 +00:00
if_ath.c Ensure that error is set. 2012-07-14 05:51:54 +00:00
if_athdfs.h Change the ath_dfs_process_phy_err() method to take an mbuf rather than 2012-06-24 08:09:06 +00:00
if_athioctl.h Handle RX Keymiss events. 2012-07-15 20:51:41 +00:00
if_athrate.h Introduce TX aggregation and software TX queue management 2011-11-08 22:43:13 +00:00
if_athvar.h Use HAL_NUM_RX_QUEUES rather than a magic constant. 2012-07-19 03:18:15 +00:00