drivers/net/wireless/intel/iwlwifi/fw/api/power.h
Source file repositories/reference/linux-study-clean/drivers/net/wireless/intel/iwlwifi/fw/api/power.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/wireless/intel/iwlwifi/fw/api/power.h- Extension
.h- Size
- 33182 bytes
- Lines
- 864
- Domain
- Driver Families
- Bucket
- drivers/net
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
nvm-reg.h
Detected Declarations
struct iwl_ltr_config_cmd_v1struct iwl_ltr_config_cmdstruct iwl_powertable_cmdstruct iwl_device_power_cmdstruct iwl_mac_power_cmd_v2struct iwl_mac_power_cmdstruct iwl_uapsd_misbehaving_ap_notifstruct iwl_dev_tx_power_commonstruct iwl_dev_tx_power_cmd_v3struct iwl_dev_tx_power_cmd_v4struct iwl_dev_tx_power_cmd_v5struct iwl_dev_tx_power_cmd_v8struct iwl_dev_tx_power_cmd_per_bandstruct iwl_dev_tx_power_cmd_v3_v8struct iwl_dev_tx_power_cmd_v9struct iwl_dev_tx_power_cmd_v10struct iwl_dev_tx_power_cmd_v11struct iwl_dev_tx_power_cmdstruct iwl_per_chain_offsetstruct iwl_geo_tx_power_profiles_cmd_v1struct iwl_geo_tx_power_profiles_cmd_v2struct iwl_geo_tx_power_profiles_cmd_v3struct iwl_geo_tx_power_profiles_cmd_v4struct iwl_geo_tx_power_profiles_cmd_v5struct iwl_geo_tx_power_profiles_cmd_v6struct iwl_geo_tx_power_profiles_respstruct iwl_sar_offset_mapping_cmdstruct iwl_beacon_filter_cmdstruct iwl_txpower_constraints_cmdenum iwl_ltr_config_flagsenum iwl_power_flagsenum iwl_device_power_flagsenum iwl_dev_tx_power_cmd_modeenum iwl_geo_per_chain_offset_operationenum iwl_ppag_flagsenum iwl_6ghz_ap_type
Annotated Snippet
struct iwl_ltr_config_cmd_v1 {
__le32 flags;
__le32 static_long;
__le32 static_short;
} __packed; /* LTR_CAPABLE_API_S_VER_1 */
#define LTR_VALID_STATES_NUM 4
/**
* struct iwl_ltr_config_cmd - configures the LTR
* @flags: See &enum iwl_ltr_config_flags
* @static_long: static LTR Long register value.
* @static_short: static LTR Short register value.
* @ltr_cfg_values: LTR parameters table values (in usec) in following order:
* TX, RX, Short Idle, Long Idle. Used only if %LTR_CFG_FLAG_UPDATE_VALUES
* is set.
* @ltr_short_idle_timeout: LTR Short Idle timeout (in usec). Used only if
* %LTR_CFG_FLAG_UPDATE_VALUES is set.
*/
struct iwl_ltr_config_cmd {
__le32 flags;
__le32 static_long;
__le32 static_short;
__le32 ltr_cfg_values[LTR_VALID_STATES_NUM];
__le32 ltr_short_idle_timeout;
} __packed; /* LTR_CAPABLE_API_S_VER_2 */
/* Radio LP RX Energy Threshold measured in dBm */
#define POWER_LPRX_RSSI_THRESHOLD 75
#define POWER_LPRX_RSSI_THRESHOLD_MAX 94
#define POWER_LPRX_RSSI_THRESHOLD_MIN 30
/**
* enum iwl_power_flags - masks for power table command flags
* @POWER_FLAGS_POWER_SAVE_ENA_MSK: '1' Allow to save power by turning off
* receiver and transmitter. '0' - does not allow.
* @POWER_FLAGS_POWER_MANAGEMENT_ENA_MSK: '0' Driver disables power management,
* '1' Driver enables PM (use rest of parameters)
* @POWER_FLAGS_SKIP_OVER_DTIM_MSK: '0' PM have to walk up every DTIM,
* '1' PM could sleep over DTIM till listen Interval.
* @POWER_FLAGS_SNOOZE_ENA_MSK: Enable snoozing only if uAPSD is enabled and all
* access categories are both delivery and trigger enabled.
* (Not supported since version 3)
* @POWER_FLAGS_BT_SCO_ENA: Enable BT SCO coex only if uAPSD and
* PBW Snoozing enabled
* @POWER_FLAGS_ADVANCE_PM_ENA_MSK: Advanced PM (uAPSD) enable mask
* @POWER_FLAGS_LPRX_ENA_MSK: Low Power RX enable.
* @POWER_FLAGS_UAPSD_MISBEHAVING_ENA_MSK: AP/GO's uAPSD misbehaving
* detection enablement (Not supported since version 3)
* @POWER_FLAGS_ENABLE_SMPS_MSK: SMPS is allowed for this vif
*/
enum iwl_power_flags {
POWER_FLAGS_POWER_SAVE_ENA_MSK = BIT(0),
POWER_FLAGS_POWER_MANAGEMENT_ENA_MSK = BIT(1),
POWER_FLAGS_SKIP_OVER_DTIM_MSK = BIT(2),
POWER_FLAGS_SNOOZE_ENA_MSK = BIT(5),
POWER_FLAGS_BT_SCO_ENA = BIT(8),
POWER_FLAGS_ADVANCE_PM_ENA_MSK = BIT(9),
POWER_FLAGS_LPRX_ENA_MSK = BIT(11),
POWER_FLAGS_UAPSD_MISBEHAVING_ENA_MSK = BIT(12),
POWER_FLAGS_ENABLE_SMPS_MSK = BIT(14),
};
#define IWL_POWER_VEC_SIZE 5
/**
* struct iwl_powertable_cmd - legacy power command. Beside old API support this
* is used also with a new power API for device wide power settings.
* POWER_TABLE_CMD = 0x77 (command, has simple generic response)
*
* @flags: Power table command flags from POWER_FLAGS_*
* @keep_alive_seconds: Keep alive period in seconds. Default - 25 sec.
* Minimum allowed:- 3 * DTIM. Keep alive period must be
* set regardless of power scheme or current power state.
* FW use this value also when PM is disabled.
* @debug_flags: debug flags
* @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
* @sleep_interval: not in use
* @skip_dtim_periods: Number of DTIM periods to skip if Skip over DTIM flag
* is set. For example, if it is required to skip over
* one DTIM, this value need to be set to 2 (DTIM periods).
* @lprx_rssi_threshold: Signal strength up to which LP RX can be enabled.
* Default: 80dbm
*/
struct iwl_powertable_cmd {
/* PM_POWER_TABLE_CMD_API_S_VER_6 */
__le16 flags;
Annotation
- Immediate include surface: `nvm-reg.h`.
- Detected declarations: `struct iwl_ltr_config_cmd_v1`, `struct iwl_ltr_config_cmd`, `struct iwl_powertable_cmd`, `struct iwl_device_power_cmd`, `struct iwl_mac_power_cmd_v2`, `struct iwl_mac_power_cmd`, `struct iwl_uapsd_misbehaving_ap_notif`, `struct iwl_dev_tx_power_common`, `struct iwl_dev_tx_power_cmd_v3`, `struct iwl_dev_tx_power_cmd_v4`.
- Atlas domain: Driver Families / drivers/net.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.