/* Enables the flow control (Flow is not allowed) */ #define IOSM_AGGR_MUX_CMD_FLOW_CTL_ENABLE 5
/* Disables the flow control (Flow is allowed) */ #define IOSM_AGGR_MUX_CMD_FLOW_CTL_DISABLE 6
/* ACK the flow control command. Shall have the same Transaction ID as the * matching FLOW_CTL command
*/ #define IOSM_AGGR_MUX_CMD_FLOW_CTL_ACK 7
/* Aggregation Protocol Command for report packet indicating link quality
*/ #define IOSM_AGGR_MUX_CMD_LINK_STATUS_REPORT 8
/* Response to a report packet */ #define IOSM_AGGR_MUX_CMD_LINK_STATUS_REPORT_RESP 9
/* ACBH: Signature of the Aggregated Command Block Header. */ #define IOSM_AGGR_MUX_SIG_ACBH 0x48424341
/* ADTH: Signature of the Aggregated Datagram Table Header. */ #define IOSM_AGGR_MUX_SIG_ADTH 0x48544441
/* ADBH: Signature of the Aggregated Data Block Header. */ #define IOSM_AGGR_MUX_SIG_ADBH 0x48424441
/* ADGH: Signature of the Datagram Header. */ #define IOSM_AGGR_MUX_SIG_ADGH 0x48474441
/* Size of the buffer for the IP MUX commands. */ #define MUX_MAX_UL_ACB_BUF_SIZE 256
/* Maximum number of packets in a go per session */ #define MUX_MAX_UL_DG_ENTRIES 100
/* ADGH: Signature of the Datagram Header. */ #define MUX_SIG_ADGH 0x48474441
/* CMDH: Signature of the Command Header. */ #define MUX_SIG_CMDH 0x48444D43
/* QLTH: Signature of the Queue Level Table */ #define MUX_SIG_QLTH 0x48544C51
/* FCTH: Signature of the Flow Credit Table */ #define MUX_SIG_FCTH 0x48544346
/* MUX UL session threshold factor */ #define IPC_MEM_MUX_UL_SESS_FCOFF_THRESHOLD_FACTOR (4)
/* Size of the buffer for the IP MUX Lite data buffer. */ #define IPC_MEM_MAX_DL_MUX_LITE_BUF_SIZE (2 * 1024)
/* MUX UL session threshold in number of packets */ #define IPC_MEM_MUX_UL_SESS_FCON_THRESHOLD (64)
/* Default time out for sending IPC session commands like * open session, close session etc * unit : milliseconds
*/ #define IPC_MUX_CMD_RUN_DEFAULT_TIMEOUT 1000 /* 1 second */
/* MUX UL flow control lower threshold in bytes */ #define IPC_MEM_MUX_UL_FLOWCTRL_LOW_B 10240 /* 10KB */
/* MUX UL flow control higher threshold in bytes (5ms worth of data)*/ #define IPC_MEM_MUX_UL_FLOWCTRL_HIGH_B (110 * 1024)
/** * struct mux_cmdh - Structure of Command Header. * @signature: Signature of the Command Header. * @cmd_len: Length (in bytes) of the Aggregated Command Block. * @if_id: ID of the interface the commands in the table belong to. * @reserved: Reserved. Set to zero. * @next_cmd_index: Index (in bytes) to the next command in the buffer. * @command_type: Command Enum. See table Session Management chapter for * details. * @transaction_id: The Transaction ID shall be unique to the command * @param: Optional parameters used with the command.
*/ struct mux_cmdh {
__le32 signature;
__le16 cmd_len;
u8 if_id;
u8 reserved;
__le32 next_cmd_index;
__le32 command_type;
__le32 transaction_id; union mux_cmd_param param;
};
/** * struct mux_acbh - Structure of the Aggregated Command Block Header. * @signature: Signature of the Aggregated Command Block Header. * @reserved: Reserved bytes. Set to zero. * @sequence_nr: Block sequence number. * @block_length: Length (in bytes) of the Aggregated Command Block. * @first_cmd_index: Index (in bytes) to the first command in the buffer.
*/ struct mux_acbh {
__le32 signature;
__le16 reserved;
__le16 sequence_nr;
__le32 block_length;
__le32 first_cmd_index;
};
/** * struct mux_adbh - Structure of the Aggregated Data Block Header. * @signature: Signature of the Aggregated Data Block Header. * @reserved: Reserved bytes. Set to zero. * @sequence_nr: Block sequence number. * @block_length: Length (in bytes) of the Aggregated Data Block. * @first_table_index: Index (in bytes) to the first Datagram Table in * the buffer.
*/ struct mux_adbh {
__le32 signature;
__le16 reserved;
__le16 sequence_nr;
__le32 block_length;
__le32 first_table_index;
};
/** * struct mux_adth - Structure of the Aggregated Datagram Table Header. * @signature: Signature of the Aggregated Datagram Table Header. * @table_length: Length (in bytes) of the datagram table. * @if_id: ID of the interface the datagrams in the table * belong to. * @opt_ipv4v6: Indicates IPv4(=0)/IPv6(=1) hint. * @reserved: Reserved bits. Set to zero. * @next_table_index: Index (in bytes) to the next Datagram Table in * the buffer. * @reserved2: Reserved bytes. Set to zero * @dg: datagramm table with variable length
*/ struct mux_adth {
__le32 signature;
__le16 table_length;
u8 if_id;
u8 opt_ipv4v6;
__le32 next_table_index;
__le32 reserved2; struct mux_adth_dg dg[];
};
/** * struct mux_adgh - Aggregated Datagram Header. * @signature: Signature of the Aggregated Datagram Header(0x48474441) * @length: Length (in bytes) of the datagram header. This length * shall include the header size. Min value: 0x10 * @if_id: ID of the interface the datagrams belong to * @opt_ipv4v6: Indicates IPv4(=0)/IPv6(=1), It is optional if not * used set it to zero. * @reserved: Reserved bits. Set to zero. * @service_class: Service class identifier for the datagram. * @next_count: Count of the datagrams that shall be following this * datagrams for this interface. A count of zero means * the next datagram may not belong to this interface. * @reserved1: Reserved bytes, Set to zero
*/ struct mux_adgh {
__le32 signature;
__le16 length;
u8 if_id;
u8 opt_ipv4v6;
u8 service_class;
u8 next_count;
u8 reserved1[6];
};
/** * struct mux_lite_cmdh - MUX Lite Command Header * @signature: Signature of the Command Header(0x48444D43) * @cmd_len: Length (in bytes) of the command. This length shall * include the header size. Minimum value: 0x10 * @if_id: ID of the interface the commands in the table belong to. * @reserved: Reserved Set to zero. * @command_type: Command Enum. * @transaction_id: 4 byte value shall be generated and sent along with a * command Responses and ACKs shall have the same * Transaction ID as their commands. It shall be unique to * the command transaction on the given interface. * @param: Optional parameters used with the command.
*/ struct mux_lite_cmdh {
__le32 signature;
__le16 cmd_len;
u8 if_id;
u8 reserved;
__le32 command_type;
__le32 transaction_id; union mux_cmd_param param;
};
/** * struct mux_lite_vfl - value field in generic table * @nr_of_bytes: Number of bytes available to transmit in the queue.
*/ struct mux_lite_vfl {
__le32 nr_of_bytes;
};
/** * struct ipc_mem_lite_gen_tbl - Generic table format for Queue Level * and Flow Credit * @signature: Signature of the table * @length: Length of the table * @if_id: ID of the interface the table belongs to * @vfl_length: Value field length * @reserved: Reserved * @vfl: Value field of variable length
*/ struct ipc_mem_lite_gen_tbl {
__le32 signature;
__le16 length;
u8 if_id;
u8 vfl_length;
u32 reserved[2]; struct mux_lite_vfl vfl;
};
/** * struct mux_type_cmdh - Structure of command header for mux lite and aggr * @ack_lite: MUX Lite Command Header pointer * @ack_aggr: Command Header pointer
*/ union mux_type_cmdh { struct mux_lite_cmdh *ack_lite; struct mux_cmdh *ack_aggr;
};
/** * struct mux_type_header - Structure of mux header type * @adgh: Aggregated Datagram Header pointer * @adbh: Aggregated Data Block Header pointer
*/ union mux_type_header { struct mux_adgh *adgh; struct mux_adbh *adbh;
};
/** * ipc_mux_dl_acb_send_cmds - Respond to the Command blocks. * @ipc_mux: Pointer to MUX data-struct * @cmd_type: Command * @if_id: Session interface id. * @transaction_id: Command transaction id. * @param: Pointer to command params. * @res_size: Response size * @blocking: True for blocking send * @respond: If true return transaction ID * * Returns: 0 in success and failure value on error
*/ int ipc_mux_dl_acb_send_cmds(struct iosm_mux *ipc_mux, u32 cmd_type, u8 if_id,
u32 transaction_id, union mux_cmd_param *param,
size_t res_size, bool blocking, bool respond);
/** * ipc_mux_netif_tx_flowctrl - Enable/Disable TX flow control on MUX sessions. * @session: Pointer to mux_session struct * @idx: Session ID * @on: true for Enable and false for disable flow control
*/ void ipc_mux_netif_tx_flowctrl(struct mux_session *session, int idx, bool on);
/** * ipc_mux_ul_trigger_encode - Route the UL packet through the IP MUX layer * for encoding. * @ipc_mux: Pointer to MUX data-struct * @if_id: Session ID. * @skb: Pointer to ipc_skb. * * Returns: 0 if successfully encoded * failure value on error * -EBUSY if packet has to be retransmitted.
*/ int ipc_mux_ul_trigger_encode(struct iosm_mux *ipc_mux, int if_id, struct sk_buff *skb); /** * ipc_mux_ul_data_encode - UL encode function for calling from Tasklet context. * @ipc_mux: Pointer to MUX data-struct * * Returns: TRUE if any packet of any session is encoded FALSE otherwise.
*/ bool ipc_mux_ul_data_encode(struct iosm_mux *ipc_mux);
/** * ipc_mux_ul_encoded_process - Handles the Modem processed UL data by adding * the SKB to the UL free list. * @ipc_mux: Pointer to MUX data-struct * @skb: Pointer to ipc_skb.
*/ void ipc_mux_ul_encoded_process(struct iosm_mux *ipc_mux, struct sk_buff *skb);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.