drivers/net/wireless/intel/iwlwifi/fw/api/datapath.h

Source file repositories/reference/linux-study-clean/drivers/net/wireless/intel/iwlwifi/fw/api/datapath.h

File Facts

System
Linux kernel
Corpus path
drivers/net/wireless/intel/iwlwifi/fw/api/datapath.h
Extension
.h
Size
21166 bytes
Lines
710
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.

Dependency Surface

Detected Declarations

Annotated Snippet

struct iwl_mu_group_mgmt_cmd {
	__le32 reserved;
	__le32 membership_status[2];
	__le32 user_position[4];
} __packed; /* MU_GROUP_ID_MNG_TABLE_API_S_VER_1 */

/**
 * struct iwl_mu_group_mgmt_notif - VHT MU-MIMO group id notification
 *
 * @membership_status: a bitmap of MU groups
 * @user_position: the position of station in a group. If the station is in the
 *	group then bits (group * 2) is the position -1
 */
struct iwl_mu_group_mgmt_notif {
	__le32 membership_status[2];
	__le32 user_position[4];
} __packed; /* MU_GROUP_MNG_NTFY_API_S_VER_1 */

enum iwl_channel_estimation_flags {
	IWL_CHANNEL_ESTIMATION_ENABLE	= BIT(0),
	IWL_CHANNEL_ESTIMATION_TIMER	= BIT(1),
	IWL_CHANNEL_ESTIMATION_COUNTER	= BIT(2),
};

enum iwl_time_sync_protocol_type {
	IWL_TIME_SYNC_PROTOCOL_TM	= BIT(0),
	IWL_TIME_SYNC_PROTOCOL_FTM	= BIT(1),
}; /* WNM_TIMING_ENABLED_PROTOCOL_API_E_VER_1 */

/**
 * struct iwl_time_sync_cfg_cmd - TM/FTM time sync measurement configuration
 *
 * @protocols: The type of frames to raise notifications for. A bitmap
 *	of @iwl_time_sync_protocol_type
 * @peer_addr: peer address with which TM/FTM measurements are required
 * @reserved: for alignment
 */
struct iwl_time_sync_cfg_cmd {
	__le32 protocols;
	u8 peer_addr[ETH_ALEN];
	u8 reserved[2];
} __packed; /* WNM_80211V_TIMING_MEASUREMENT_CONFIG_CMD_API_S_VER_1 */

/**
 * enum iwl_synced_time_operation - PTM request options
 *
 * @IWL_SYNCED_TIME_OPERATION_READ_ARTB: read only the ARTB time
 * @IWL_SYNCED_TIME_OPERATION_READ_GP2: read only the GP2 time
 * @IWL_SYNCED_TIME_OPERATION_READ_BOTH: latch the ARTB and GP2 clocks and
 *	provide timestamps from both clocks for the same time point
 */
enum iwl_synced_time_operation {
	IWL_SYNCED_TIME_OPERATION_READ_ARTB = 1,
	IWL_SYNCED_TIME_OPERATION_READ_GP2,
	IWL_SYNCED_TIME_OPERATION_READ_BOTH,
};

/**
 * struct iwl_synced_time_cmd - request synced GP2/ARTB timestamps
 *
 * @operation: one of &enum iwl_synced_time_operation
 */
struct iwl_synced_time_cmd {
	__le32 operation;
} __packed; /* WNM_80211V_TIMING_CMD_API_S_VER_1 */

/**
 * struct iwl_synced_time_rsp - response to iwl_synced_time_cmd
 *
 * @operation: one of &enum iwl_synced_time_operation
 * @platform_timestamp_hi: high DWORD of the ARTB clock timestamp in nanoseconds
 * @platform_timestamp_lo: low DWORD of the ARTB clock timestamp in nanoseconds
 * @gp2_timestamp_hi: high DWORD of the GP2 clock timestamp in 10's of
 *	nanoseconds
 * @gp2_timestamp_lo: low DWORD of the GP2 clock timestamp in 10's of
 *	nanoseconds
 */
struct iwl_synced_time_rsp {
	__le32 operation;
	__le32 platform_timestamp_hi;
	__le32 platform_timestamp_lo;
	__le32 gp2_timestamp_hi;
	__le32 gp2_timestamp_lo;
} __packed; /* WNM_80211V_TIMING_RSP_API_S_VER_1 */

/* PTP_CTX_MAX_DATA_SIZE_IN_API_D_VER_1 */
#define PTP_CTX_MAX_DATA_SIZE   128

/**
 * struct iwl_time_msmt_ptp_ctx - Vendor specific element

Annotation

Implementation Notes