drivers/net/wwan/iosm/iosm_ipc_mux.h

Source file repositories/reference/linux-study-clean/drivers/net/wwan/iosm/iosm_ipc_mux.h

File Facts

System
Linux kernel
Corpus path
drivers/net/wwan/iosm/iosm_ipc_mux.h
Extension
.h
Size
13810 bytes
Lines
443
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 mux_session_open {
	enum mux_event event;
	__le32 if_id;
};

/* MUX session close command. */
struct mux_session_close {
	enum mux_event event;
	__le32 if_id;
};

/* MUX channel close command. */
struct mux_channel_close {
	enum mux_event event;
};

/* Default message type to find out the right message type. */
struct mux_common {
	enum mux_event event;
};

/* List of ops in MUX mode. */
union mux_msg {
	struct mux_session_open session_open;
	struct mux_session_close session_close;
	struct mux_channel_close channel_close;
	struct mux_common common;
};

/* Parameter definition of the open session command. */
struct mux_cmd_open_session {
	u8 flow_ctrl; /* 0: Flow control disabled (flow allowed). */
	/* 1: Flow control enabled (flow not allowed)*/
	u8 ipv4v6_hints; /* 0: IPv4/IPv6 hints not supported.*/
	/* 1: IPv4/IPv6 hints supported*/
	__le16 reserved2; /* Reserved. Set to zero. */
	__le32 dl_head_pad_len; /* Maximum length supported */
	/* for DL head padding on a datagram. */
};

/* Parameter definition of the open session response. */
struct mux_cmd_open_session_resp {
	__le32 response; /* Response code */
	u8 flow_ctrl; /* 0: Flow control disabled (flow allowed). */
	/* 1: Flow control enabled (flow not allowed) */
	u8 ipv4v6_hints; /* 0: IPv4/IPv6 hints not supported */
	/* 1: IPv4/IPv6 hints supported */
	__le16 reserved2; /* Reserved. Set to zero. */
	__le32 ul_head_pad_len; /* Actual length supported for */
	/* UL head padding on adatagram.*/
};

/* Parameter definition of the close session response code */
struct mux_cmd_close_session_resp {
	__le32 response;
};

/* Parameter definition of the flow control command. */
struct mux_cmd_flow_ctl {
	__le32 mask; /* indicating the desired flow control */
	/* state for various flows/queues */
};

/* Parameter definition of the link status report code*/
struct mux_cmd_link_status_report {
	u8 payload;
};

/* Parameter definition of the link status report response code. */
struct mux_cmd_link_status_report_resp {
	__le32 response;
};

/**
 * union mux_cmd_param - Union-definition of the command parameters.
 * @open_session:	Inband command for open session
 * @open_session_resp:	Inband command for open session response
 * @close_session_resp:	Inband command for close session response
 * @flow_ctl:		In-band flow control on the opened interfaces
 * @link_status:	In-band Link Status Report
 * @link_status_resp:	In-band command for link status report response
 */
union mux_cmd_param {
	struct mux_cmd_open_session open_session;
	struct mux_cmd_open_session_resp open_session_resp;
	struct mux_cmd_close_session_resp close_session_resp;
	struct mux_cmd_flow_ctl flow_ctl;
	struct mux_cmd_link_status_report link_status;
	struct mux_cmd_link_status_report_resp link_status_resp;
};

Annotation

Implementation Notes