STRUCT IWL_MAC_POWER_CMD_V2(9)
π struct iwl_mac_power_cmd_v2(9) β the Kernel API Manual era π
okay so bestie, welcome to the Kernel API Manual page for struct iwl_mac_power_cmd_v2 β yes that's the whole title, and yes we're reading it together. grab a snack π
This one is literally the power command V2 containing uAPSD support, and it comes with MAC_PM_POWER_TABLE = 0xA9 (that's the command, and it has a simple generic response β cute, low-maintenance, we love that for it) β¨
π¦ SYNOPSIS π¦
no thoughts, just the struct. copy it exactly, bestie, don't you dare retype it by hand:
struct iwl_mac_power_cmd_v2 {
__le32 id_and_color;
__le16 flags;
__le16 keep_alive_seconds;
__le32 rx_data_timeout;
__le32 tx_data_timeout;
__le32 rx_data_timeout_uapsd;
__le32 tx_data_timeout_uapsd;
u8 lprx_rssi_threshold;
u8 skip_dtim_periods;
__le16 snooze_interval;
__le16 snooze_window;
u8 snooze_step;
u8 qndp_tid;
u8 uapsd_ac_flags;
u8 uapsd_max_sp;
u8 heavy_tx_thld_packets;
u8 heavy_rx_thld_packets;
u8 heavy_tx_thld_percentage;
u8 heavy_rx_thld_percentage;
u8 limited_ps_threshold;
u8 reserved;
};
πΈ Members πΈ
time for the member-by-member vibe check, iykyk π
id_and_colorβ the MAC context identifier, and it's anenum iwl_ctxt_id_and_color. it's giving "everyone has a name and a color in this group chat" πflagsβ the power table command flags, straight fromPOWER_FLAGS_*. pick your flags, bestie, they're all right there.keep_alive_secondsβ keep alive period in seconds. Default is25sec. Minimum allowed is3 * DTIM. and listen β the keep alive period must be set regardless of power scheme or current power state. FW use this value also when PM is disabled. so like... it matters even when you think it doesn't. main character energy fr fr πrx_data_timeoutβ minimum time (usec) from last Rx packet for AM to PSM transition β legacy PM.tx_data_timeoutβ minimum time (usec) from last Tx packet for AM to PSM transition β legacy PM.rx_data_timeout_uapsdβ minimum time (usec) from last Rx packet for AM to PSM transition β uAPSD.tx_data_timeout_uapsdβ minimum time (usec) from last Tx packet for AM to PSM transition β uAPSD.lprx_rssi_thresholdβ signal strength up to which LP RX can be enabled. Default:80dbm. that's the whole mood, ngl.skip_dtim_periodsβ number of DTIM periods to skip if the Skip over DTIM flag is set. ok so like, for example: if it is required to skip over one DTIM, this value need to be set to2(DTIM periods). not 1.2. the way that math math'd π§snooze_intervalβ maximum time between attempts to retrieve buffered data from the AP, in[msec].snooze_windowβ a window of time in which PBW snoozing insures that all packets received. it is also the minimum time from last received unicast RX packet, before client stops snoozing for data.[msec]. she does two jobs, iconic π₯snooze_stepβTBD. that's it. that's the documentation. respect for the honesty honestly πqndp_tidβ the TID client shall use for uAPSD QNDP triggers.uapsd_ac_flagsβ set trigger-enabled and delivery-enabled indication for each corresponding AC. useIEEE80211_WMM_IE_STA_QOSINFO_AC*for correct values. use the right ones or it's not slaying.uapsd_max_spβ useIEEE80211_WMM_IE_STA_QOSINFO_SP_*for correct values.heavy_tx_thld_packetsβ TX threshold measured in number of packets.heavy_rx_thld_packetsβ RX threshold measured in number of packets.heavy_tx_thld_percentageβ TX threshold measured in load's percentage.heavy_rx_thld_percentageβ RX threshold measured in load's percentage.limited_ps_thresholdβ(unused). not invited to the party, but still on the guest list π«Άreservedβ reserved (padding). it's just there for the vibes. and for alignment. mostly alignment.
π SEE ALSO π
the whole friend group, in order, no cap:
Kernel file ./drivers/net/wireless/intel/iwlwifi/fw/api/power.h β that's home base π
enum iwl_ltr_config_flags(9), struct iwl_ltr_config_cmd_v1(9), struct iwl_ltr_config_cmd(9), enum iwl_power_flags(9), struct iwl_powertable_cmd(9), enum iwl_device_power_flags(9), struct iwl_device_power_cmd(9), struct iwl_mac_power_cmd(9), struct iwl_dev_tx_power_common(9), struct iwl_dev_tx_power_cmd_v3(9), struct iwl_dev_tx_power_cmd_v4(9), struct iwl_dev_tx_power_cmd_v5(9), struct iwl_dev_tx_power_cmd_v8(9), struct iwl_dev_tx_power_cmd_v3_v8(9), struct iwl_dev_tx_power_cmd_v9(9), struct iwl_dev_tx_power_cmd_v10(9), enum iwl_geo_per_chain_offset_operation(9), struct iwl_per_chain_offset(9), struct iwl_geo_tx_power_profiles_cmd_v1(9), struct iwl_geo_tx_power_profiles_cmd_v2(9), struct iwl_geo_tx_power_profiles_cmd_v3(9), struct iwl_geo_tx_power_profiles_cmd_v4(9), struct iwl_geo_tx_power_profiles_cmd_v5(9), struct iwl_geo_tx_power_profiles_cmd_v6(9), struct iwl_geo_tx_power_profiles_resp(9), enum iwl_ppag_flags(9), union iwl_ppag_table_cmd(9), struct iwl_sar_offset_mapping_cmd(9), struct iwl_beacon_filter_cmd(9), struct iwl_txpower_constraints_cmd(9)
like... that's a lot of friends and every single one of them got an invite, periodt π
ok that's the whole page, no skips, no summaries, every single field accounted for π
and that's a wrap, bestie! this page came from ./drivers/net/wireless/intel/i... and it's dated October 2026, filed under struct iwl_mac_power_cmd_v2(9). go forth and set your keep alive to at least 3 * DTIM, mwah πβ¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms