This is an old revision of the document!


Per-packet Transmission Power Control

The AR5416 and later (along with select previous generation devices) implement per-packet transmission power control.

This isn't yet supported by the FreeBSD HAL (or ath5k/ath9k.)

  • AR_TPC controls the fixed ACK, CHIRP, CTS TX power level
  • The descriptor contains a per-rate TX power level, passed to the baseband
  • There's a register to flip on which controls per-packet TPC, rather than using the per-rate global TPC registers (documented in ath9k but not enabled)
  • The TX power calibration code which calculates the per-rate TX power needs to be modified to store the per-rate information
  • This needs to be then used for each packet to cap the TX power passed in by net80211 for the packet - since different TX rates have different TX power limits
  • Need to keep in mind that various chipsets have different TX power configuration behaviour:
    • AR5008, AR9001 series devices - 0.5dBm increments w/ 0 reflecting 0 dBm
    • AR9002 series devices - 0.5dbm increments with 0 reflecting -5 dBm
    • Maximum value is “63”, so 31 dBm for AR5008/AR9001, 25 dBm for AR9002
    • Open-loop TX power control on Merlin (and later, eg Kiwi?) need further tweaking for the CCK rates
    • 20MHz versus 40MHz mode - there's a TX power change for that
    • .. and does some tweaking need to occur for 5MHz/10MHz channels? That needs to be checked!
  • dev/ath_hal_4/perpackettpc.1305806179.txt.gz
  • Last modified: 2011/05/19 11:56
  • by AdrianChadd