STRUCT IWL_HE_PKT_EXT_V1(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct iwl_he_pkt_ext_v1(9) β€” Kernel API Manual πŸ’–

okay bestie, welcome to the struct iwl_he_pkt_ext_v1 page from the Kernel API Manual, and honestly? it's giving "tiny struct, big lore." stay with me, we're gonna slay this πŸ’…

This page covers struct iwl_he_pkt_ext_v1(9) and its whole deal: the QAM thresholds.


✨ NAME ✨

struct iwl_he_pkt_ext_v1 β€” QAM thresholds, bestie πŸŽ€

okay so the required PPE is set via the HE Capabilities IE, per Nss x BW x MCS. and the IE is organized in the following way, no cap:

Support for the Nss x BW (or RU) matrix: (0=SISO, 1=MIMO2) x (0-20MHz, 1-40MHz, 2-80MHz, 3-160MHz).

Each entry contains 2 QAM thresholds for 8us and 16us, and the constellation lineup is:

  • 0=BPSK
  • 1=QPSK
  • 2=16QAM
  • 3=64QAM
  • 4=256QAM
  • 5=1024QAM
  • 6=RES
  • 7=NONE

i.e. QAM_th1 < QAM_th2, such that if TX uses QAM_tx:

QAM_tx < QAM_th1 --> PPE=0us
QAM_th1 <= QAM_tx < QAM_th2 --> PPE=8us
QAM_th2 <= QAM_tx --> PPE=16us

periodt. that's the whole vibe check πŸ”₯


🌸 SYNOPSIS 🌸

struct iwl_he_pkt_ext_v1 {
    u8 pkt_ext_qam_th[MAX_HE_SUPP_NSS][MAX_CHANNEL_BW_INDX_API_D_VER_1][2];
 };

πŸ¦‹ Members πŸ¦‹

  • pkt_ext_qam_th β€” the QAM thresholds, obviously πŸ’–. For each Nss/Bw define 2 QAM thrsholds (0..5). Lowkey here's the rulebook:
    • For rates below the low_th, no need for PPE.
    • For rates between low_th and high_th, need 8us PPE.
    • For rates equal or higher then the high_th, need 16us PPE.

And the indexing, so you don't get lost: Nss (0-siso, 1-mimo2) x BW (0-20MHz, 1-40MHz, 2-80MHz, 3-160MHz) x (0-low_th, 1-high_th) ✨


πŸŽ€ SEE ALSO πŸŽ€

Kernel file ./drivers/net/wireless/intel/iwlwifi/fw/api/mac.h β€” and the whole friend group πŸ’œ:

  • enum iwl_mac_protection_flags(9)
  • enum iwl_mac_types(9)
  • enum iwl_tsf_id(9)
  • struct iwl_mac_data_ap(9)
  • struct iwl_mac_data_ibss(9)
  • enum iwl_mac_data_policy(9)
  • struct iwl_mac_data_sta(9)
  • struct iwl_mac_data_go(9)
  • struct iwl_mac_data_p2p_sta(9)
  • struct iwl_mac_data_pibss(9)
  • enum iwl_mac_filter_flags(9)
  • enum iwl_mac_qos_flags(9)
  • struct iwl_ac_qos(9)
  • struct iwl_mac_ctx_cmd(9)
  • struct iwl_missed_beacons_notif_ver_3(9)
  • struct iwl_missed_beacons_notif_v4(9)
  • struct iwl_he_backoff_conf(9)
  • enum iwl_he_pkt_ext_constellations(9)
  • struct iwl_he_pkt_ext_v2(9)
  • enum iwl_he_sta_ctxt_flags(9)
  • enum iwl_he_htc_flags(9)
  • struct iwl_he_sta_context_cmd_v1(9)
  • struct iwl_he_sta_context_cmd_v2(9)
  • struct iwl_he_sta_context_cmd_v3(9)
  • struct iwl_he_monitor_cmd(9)

ok that's the whole page bestie, go forth and configure your PPE thresholds responsibly 🫢

and for the sign-off: this cutie came from ./drivers/net/wireless/intel/i... and it's dated October 2026, filed under struct iwl_he_pkt_ext_v1(9). iconic. bye bestie πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from