RATE CODES(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸŽ€ Rate codes β€” Kernel API Manual, section 9 πŸŽ€

Okay bestie, so this is the Rate codes page from the Kernel API Manual (section 9, yes that section 9), and it's literally all about the little numbers that tell the hardware how fast to go. Buckle up. πŸ¦‹

So, from what we can tell, the ar5xxx hardware supports up to 32 rates, indexed by 1-32. Thirty-two. That's a lot of rates, iykyk.

The rate code is what you use to get the RX rate or set the TX rate on the hardware descriptors. It's also used for internal modulation control and settings. So yeah β€” she does a lot. Main character energy fr fr. πŸ‘‘


🌈 The hardware rate map we know about (html unfriendly, sorry 😭)

Here's the whole thing, no cap, every single line:

  • 0x01 β€” 3000 (XR)
  • 0x02 β€” 1000 (XR)
  • 0x03 β€” 250 (XR)
  • 0x04 - 05 β€” -Reserved-
  • 0x06 β€” 2000 (XR)
  • 0x07 β€” 500 (XR)
  • 0x08 β€” 48000 (OFDM)
  • 0x09 β€” 24000 (OFDM)
  • 0x0A β€” 12000 (OFDM)
  • 0x0B β€” 6000 (OFDM)
  • 0x0C β€” 54000 (OFDM)
  • 0x0D β€” 36000 (OFDM)
  • 0x0E β€” 18000 (OFDM)
  • 0x0F β€” 9000 (OFDM)
  • 0x10 - 17 β€” -Reserved-
  • 0x18 β€” 11000L (CCK)
  • 0x19 β€” 5500L (CCK)
  • 0x1A β€” 2000L (CCK)
  • 0x1B β€” 1000L (CCK)
  • 0x1C β€” 11000S (CCK)
  • 0x1D β€” 5500S (CCK)
  • 0x1E β€” 2000S (CCK)
  • 0x1F β€” -Reserved-

And the decoder ring for those letters, because she's ✨fancy✨: "S" means CCK rates with short preamble, and "L" means CCK with long preamble. That's it, that's the whole letter situation. 🫢


πŸ’œ The AR5211 plot twist

AR5211 has different rate codes for CCK (802.11B) rates. It only uses the lowest 4 bits, so they're the same as the ones above with a 0xF mask β€” that's 0xB, 0xA, 0x9 and 0x8 for 1M, 2M, 5.5M and 11M. Not me having to double-check that. 😭

We handle this in ath5k_setup_bands. Slay.


🌸 SEE ALSO 🌸

Go read these too, bestie, they're all feeding the same vibe:

  • Kernel file ./drivers/net/wireless/ath/ath5k/ath5k.h enum
  • ath5k_version(9)
  • enum ath5k_radio(9)
  • Atheros XR(9)
  • Atheros SuperAG(9)
  • enum ath5k_driver_mode(9)
  • enum ath5k_ant_mode(9)
  • enum ath5k_bw_mode(9)
  • struct ath5k_tx_status(9)
  • enum ath5k_tx_queue(9)
  • enum ath5k_tx_queue_subtype(9)
  • enum ath5k_tx_queue_id(9)
  • struct ath5k_txq(9)
  • struct ath5k_txq_info(9)
  • enum ath5k_pkt_type(9)
  • struct ath5k_rx_status(9)
  • enum ath5k_rfgain(9)
  • struct ath5k_gain(9)
  • struct ath5k_athchan_2ghz(9)
  • enum ath5k_dmasize(9)
  • enum ath5k_int(9)
  • enum ath5k_calibration_mask(9)
  • enum ath5k_power_mode(9)

And that's the page!! πŸ’… Sourced from ./drivers/net/wireless/ath/ath5k, dated October 2026, and officially titled Rate codes(9). Go forth and set your TX rate, queen. πŸŽ€βœ¨

πŸ“¦ where this page comes from