freebsd-dev/sys/dev/ath
Adrian Chadd 1b5c5f5ad0 I give up - introduce a TX lock to serialise TX operations.
I've tried serialising TX using queues and such but unfortunately
due to how this interacts with the locking going on elsewhere in the
networking stack, the TX task gets delayed, resulting in quite a
noticable throughput loss:

* baseline TCP for 2x2 11n HT40 is ~ 170mbit/sec;
* TCP for TX task in the ath taskq, with the RX also going on - 80mbit/sec;
* TCP for TX task in a separate, second taskq - 100mbit/sec.

So for now I'm going with the Linux wireless stack approach - lock tx
early.  The linux code does in the wireless stack, before the 802.11
state stuff happens and before it's punted to the driver.
But TX locking needs to also occur at the driver layer as the TX
completion code _also_ begins to drain the ifnet TX queue.

Whilst I'm here, add some KTR traces for the TX path.

Note:

* This really should be done at the net80211 layer (as well, at least.)
  But that'll have to wait for a little more thought to happen.
2012-10-31 06:27:58 +00:00
..
ath_dfs/null Disable strong signal diversity when enabling radar pulse detection 2012-09-02 05:01:10 +00:00
ath_hal Implement the quarter rate fractional channel programming for the 2012-10-04 15:42:45 +00:00
ath_rate Improve performance of the Sample rate algorithm on 802.11n networks. 2012-09-17 01:09:17 +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 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 Debugging output fixes: 2012-09-24 19:48:41 +00:00
if_ath_debug.h Pause and unpause the software queues for a given node based on the 2012-10-03 23:23:45 +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 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 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_edma.c Initialise an uninitialised variable. 2012-08-21 16:44:25 +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 Migrate the TID TXQ accesses to a new set of macros, rather than reusing 2012-10-07 23:45:19 +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 I give up - introduce a TX lock to serialise TX operations. 2012-10-31 06:27:58 +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 I give up - introduce a TX lock to serialise TX operations. 2012-10-31 06:27:58 +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 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 I give up - introduce a TX lock to serialise TX operations. 2012-10-31 06:27:58 +00:00