Loading drivers/net/ethernet/qualcomm/rmnet/rmnet_config.h +3 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,9 @@ struct rmnet_endpoint { }; struct rmnet_port_priv_stats { u64 dl_hdr_last_qmap_vers; u64 dl_hdr_last_ep_id; u64 dl_hdr_last_trans_id; u64 dl_hdr_last_seq; u64 dl_hdr_last_bytes; u64 dl_hdr_last_pkts; Loading drivers/net/ethernet/qualcomm/rmnet/rmnet_descriptor.c +37 −12 Original line number Diff line number Diff line Loading @@ -189,17 +189,25 @@ static void rmnet_frag_send_ack(struct rmnet_map_header *qmap, netif_tx_unlock(dev); } static void rmnet_frag_process_flow_start(struct rmnet_map_control_command *cmd, static void rmnet_frag_process_flow_start(struct rmnet_map_control_command_header *cmd, struct rmnet_port *port, u16 cmd_len) { struct rmnet_map_dl_ind_hdr *dlhdr; u32 data_format; bool is_dl_mark_v2; if (cmd_len < RMNET_DL_IND_HDR_SIZE) if (cmd_len + sizeof(struct rmnet_map_header) < RMNET_DL_IND_HDR_SIZE) return; data_format = port->data_format; is_dl_mark_v2 = data_format & RMNET_INGRESS_FORMAT_DL_MARKER_V2; dlhdr = (struct rmnet_map_dl_ind_hdr *)((char *)cmd + sizeof(*cmd)); port->stats.dl_hdr_last_ep_id = cmd->source_id; port->stats.dl_hdr_last_qmap_vers = cmd->reserved; port->stats.dl_hdr_last_trans_id = cmd->transaction_id; port->stats.dl_hdr_last_seq = dlhdr->le.seq; port->stats.dl_hdr_last_bytes = dlhdr->le.bytes; port->stats.dl_hdr_last_pkts = dlhdr->le.pkts; Loading @@ -208,23 +216,40 @@ static void rmnet_frag_process_flow_start(struct rmnet_map_control_command *cmd, port->stats.dl_hdr_total_pkts += port->stats.dl_hdr_last_pkts; port->stats.dl_hdr_count++; /* If a target is taking frag path, we can assume DL marker v2 is in * play */ if (is_dl_mark_v2) rmnet_map_dl_hdr_notify_v2(port, dlhdr, cmd); else rmnet_map_dl_hdr_notify(port, dlhdr); } static void rmnet_frag_process_flow_end(struct rmnet_map_control_command *cmd, struct rmnet_port *port, u16 cmd_len) static void rmnet_frag_process_flow_end(struct rmnet_map_control_command_header *cmd, struct rmnet_port *port, u16 cmd_len) { struct rmnet_map_dl_ind_trl *dltrl; u32 data_format; bool is_dl_mark_v2; if (cmd_len < RMNET_DL_IND_TRL_SIZE) if (cmd_len + sizeof(struct rmnet_map_header) < RMNET_DL_IND_TRL_SIZE) return; data_format = port->data_format; is_dl_mark_v2 = data_format & RMNET_INGRESS_FORMAT_DL_MARKER_V2; dltrl = (struct rmnet_map_dl_ind_trl *)((char *)cmd + sizeof(*cmd)); port->stats.dl_trl_last_seq = dltrl->seq_le; port->stats.dl_trl_count++; /* If a target is taking frag path, we can assume DL marker v2 is in * play */ if (is_dl_mark_v2) rmnet_map_dl_trl_notify_v2(port, dltrl, cmd); else rmnet_map_dl_trl_notify(port, dltrl); } Loading Loading @@ -261,10 +286,10 @@ void rmnet_frag_command(struct rmnet_map_header *qmap, struct rmnet_port *port) int rmnet_frag_flow_command(struct rmnet_map_header *qmap, struct rmnet_port *port, u16 pkt_len) { struct rmnet_map_control_command *cmd; struct rmnet_map_control_command_header *cmd; unsigned char command_name; cmd = (struct rmnet_map_control_command *) cmd = (struct rmnet_map_control_command_header *) ((char *)qmap + sizeof(*qmap)); command_name = cmd->command_name; Loading drivers/net/ethernet/qualcomm/rmnet/rmnet_map.h +26 −6 Original line number Diff line number Diff line Loading @@ -120,8 +120,10 @@ struct rmnet_map_ul_csum_header { struct rmnet_map_control_command_header { u8 command_name; u8 cmd_type:2; u8 reserved:6; u16 reserved2; u8 reserved:5; u8 e:1; u16 source_id:15; u16 ext:1; u32 transaction_id; } __aligned(1); Loading Loading @@ -167,8 +169,20 @@ struct rmnet_map_dl_ind_trl { struct rmnet_map_dl_ind { u8 priority; union { void (*dl_hdr_handler)(struct rmnet_map_dl_ind_hdr *dlhdr); void (*dl_hdr_handler_v2)(struct rmnet_map_dl_ind_hdr *dlhdr, struct rmnet_map_control_command_header * qcmd); } __aligned(1); union { void (*dl_trl_handler)(struct rmnet_map_dl_ind_trl *dltrl); void (*dl_trl_handler_v2)(struct rmnet_map_dl_ind_trl *dltrl, struct rmnet_map_control_command_header * qcmd); } __aligned(1); struct list_head list; }; Loading Loading @@ -248,8 +262,14 @@ void rmnet_map_tx_aggregate_init(struct rmnet_port *port); void rmnet_map_tx_aggregate_exit(struct rmnet_port *port); void rmnet_map_dl_hdr_notify(struct rmnet_port *port, struct rmnet_map_dl_ind_hdr *dl_hdr); void rmnet_map_dl_hdr_notify_v2(struct rmnet_port *port, struct rmnet_map_dl_ind_hdr *dl_hdr, struct rmnet_map_control_command_header *qcmd); void rmnet_map_dl_trl_notify(struct rmnet_port *port, struct rmnet_map_dl_ind_trl *dltrl); void rmnet_map_dl_trl_notify_v2(struct rmnet_port *port, struct rmnet_map_dl_ind_trl *dltrl, struct rmnet_map_control_command_header *qcmd); int rmnet_map_flow_command(struct sk_buff *skb, struct rmnet_port *port, bool rmnet_perf); Loading drivers/net/ethernet/qualcomm/rmnet/rmnet_map_command.c +79 −10 Original line number Diff line number Diff line Loading @@ -87,7 +87,21 @@ static void rmnet_map_send_ack(struct sk_buff *skb, netif_tx_unlock(dev); } void rmnet_map_dl_hdr_notify(struct rmnet_port *port, void rmnet_map_dl_hdr_notify_v2(struct rmnet_port *port, struct rmnet_map_dl_ind_hdr *dlhdr, struct rmnet_map_control_command_header *qcmd) { struct rmnet_map_dl_ind *tmp; port->dl_marker_flush = 0; list_for_each_entry(tmp, &port->dl_list, list) tmp->dl_hdr_handler_v2(dlhdr, qcmd); } void rmnet_map_dl_hdr_notify(struct rmnet_port *port, struct rmnet_map_dl_ind_hdr *dlhdr) { struct rmnet_map_dl_ind *tmp; Loading @@ -98,7 +112,27 @@ void rmnet_map_dl_hdr_notify(struct rmnet_port *port, tmp->dl_hdr_handler(dlhdr); } void rmnet_map_dl_trl_notify(struct rmnet_port *port, void rmnet_map_dl_trl_notify_v2(struct rmnet_port *port, struct rmnet_map_dl_ind_trl *dltrl, struct rmnet_map_control_command_header *qcmd) { struct rmnet_map_dl_ind *tmp; struct napi_struct *napi; list_for_each_entry(tmp, &port->dl_list, list) tmp->dl_trl_handler_v2(dltrl, qcmd); if (port->dl_marker_flush) { napi = get_current_napi_context(); napi_gro_flush(napi, false); } port->dl_marker_flush = -1; } void rmnet_map_dl_trl_notify(struct rmnet_port *port, struct rmnet_map_dl_ind_trl *dltrl) { struct rmnet_map_dl_ind *tmp; Loading @@ -120,11 +154,26 @@ static void rmnet_map_process_flow_start(struct sk_buff *skb, bool rmnet_perf) { struct rmnet_map_dl_ind_hdr *dlhdr; struct rmnet_map_control_command_header *qcmd; u32 data_format; bool is_dl_mark_v2; if (skb->len < RMNET_DL_IND_HDR_SIZE) return; data_format = port->data_format; is_dl_mark_v2 = data_format & RMNET_INGRESS_FORMAT_DL_MARKER_V2; if (is_dl_mark_v2) { pskb_pull(skb, sizeof(struct rmnet_map_header)); qcmd = (struct rmnet_map_control_command_header *) rmnet_map_data_ptr(skb); port->stats.dl_hdr_last_ep_id = qcmd->source_id; port->stats.dl_hdr_last_qmap_vers = qcmd->reserved; port->stats.dl_hdr_last_trans_id = qcmd->transaction_id; pskb_pull(skb, sizeof(struct rmnet_map_control_command_header)); } else { pskb_pull(skb, RMNET_MAP_CMD_SIZE); } dlhdr = (struct rmnet_map_dl_ind_hdr *)rmnet_map_data_ptr(skb); Loading @@ -136,12 +185,16 @@ static void rmnet_map_process_flow_start(struct sk_buff *skb, port->stats.dl_hdr_total_pkts += port->stats.dl_hdr_last_pkts; port->stats.dl_hdr_count++; if (is_dl_mark_v2) rmnet_map_dl_hdr_notify_v2(port, dlhdr, qcmd); else rmnet_map_dl_hdr_notify(port, dlhdr); if (rmnet_perf) { unsigned int pull_size; pull_size = sizeof(struct rmnet_map_dl_ind_hdr); if (port->data_format & RMNET_FLAGS_INGRESS_MAP_CKSUMV4) if (data_format & RMNET_FLAGS_INGRESS_MAP_CKSUMV4) pull_size += sizeof(struct rmnet_map_dl_csum_trailer); pskb_pull(skb, pull_size); } Loading @@ -152,23 +205,39 @@ static void rmnet_map_process_flow_end(struct sk_buff *skb, bool rmnet_perf) { struct rmnet_map_dl_ind_trl *dltrl; struct rmnet_map_control_command_header *qcmd; u32 data_format; bool is_dl_mark_v2; if (skb->len < RMNET_DL_IND_TRL_SIZE) return; data_format = port->data_format; is_dl_mark_v2 = data_format & RMNET_INGRESS_FORMAT_DL_MARKER_V2; if (is_dl_mark_v2) { pskb_pull(skb, sizeof(struct rmnet_map_header)); qcmd = (struct rmnet_map_control_command_header *) rmnet_map_data_ptr(skb); pskb_pull(skb, sizeof(struct rmnet_map_control_command_header)); } else { pskb_pull(skb, RMNET_MAP_CMD_SIZE); } dltrl = (struct rmnet_map_dl_ind_trl *)rmnet_map_data_ptr(skb); port->stats.dl_trl_last_seq = dltrl->seq_le; port->stats.dl_trl_count++; if (is_dl_mark_v2) rmnet_map_dl_trl_notify_v2(port, dltrl, qcmd); else rmnet_map_dl_trl_notify(port, dltrl); if (rmnet_perf) { unsigned int pull_size; pull_size = sizeof(struct rmnet_map_dl_ind_trl); if (port->data_format & RMNET_FLAGS_INGRESS_MAP_CKSUMV4) if (data_format & RMNET_FLAGS_INGRESS_MAP_CKSUMV4) pull_size += sizeof(struct rmnet_map_dl_csum_trailer); pskb_pull(skb, pull_size); } Loading drivers/net/ethernet/qualcomm/rmnet/rmnet_private.h +6 −3 Original line number Diff line number Diff line /* SPDX-License-Identifier: GPL-2.0 */ /* Copyright (c) 2013-2014, 2016-2018 The Linux Foundation. All rights reserved. /* Copyright (c) 2013-2014, 2016-2019 The Linux Foundation. All rights reserved. */ #ifndef _RMNET_PRIVATE_H_ Loading @@ -12,8 +12,11 @@ /* Constants */ #define RMNET_EGRESS_FORMAT_AGGREGATION BIT(31) #define RMNET_INGRESS_FORMAT_DL_MARKER BIT(30) #define RMNET_INGRESS_FORMAT_RPS_STAMP BIT(29) #define RMNET_INGRESS_FORMAT_DL_MARKER_V1 BIT(30) #define RMNET_INGRESS_FORMAT_DL_MARKER_V2 BIT(29) #define RMNET_INGRESS_FORMAT_DL_MARKER (RMNET_INGRESS_FORMAT_DL_MARKER_V1 |\ RMNET_INGRESS_FORMAT_DL_MARKER_V2) /* Power save feature*/ #define RMNET_INGRESS_FORMAT_PS BIT(27) Loading Loading
drivers/net/ethernet/qualcomm/rmnet/rmnet_config.h +3 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,9 @@ struct rmnet_endpoint { }; struct rmnet_port_priv_stats { u64 dl_hdr_last_qmap_vers; u64 dl_hdr_last_ep_id; u64 dl_hdr_last_trans_id; u64 dl_hdr_last_seq; u64 dl_hdr_last_bytes; u64 dl_hdr_last_pkts; Loading
drivers/net/ethernet/qualcomm/rmnet/rmnet_descriptor.c +37 −12 Original line number Diff line number Diff line Loading @@ -189,17 +189,25 @@ static void rmnet_frag_send_ack(struct rmnet_map_header *qmap, netif_tx_unlock(dev); } static void rmnet_frag_process_flow_start(struct rmnet_map_control_command *cmd, static void rmnet_frag_process_flow_start(struct rmnet_map_control_command_header *cmd, struct rmnet_port *port, u16 cmd_len) { struct rmnet_map_dl_ind_hdr *dlhdr; u32 data_format; bool is_dl_mark_v2; if (cmd_len < RMNET_DL_IND_HDR_SIZE) if (cmd_len + sizeof(struct rmnet_map_header) < RMNET_DL_IND_HDR_SIZE) return; data_format = port->data_format; is_dl_mark_v2 = data_format & RMNET_INGRESS_FORMAT_DL_MARKER_V2; dlhdr = (struct rmnet_map_dl_ind_hdr *)((char *)cmd + sizeof(*cmd)); port->stats.dl_hdr_last_ep_id = cmd->source_id; port->stats.dl_hdr_last_qmap_vers = cmd->reserved; port->stats.dl_hdr_last_trans_id = cmd->transaction_id; port->stats.dl_hdr_last_seq = dlhdr->le.seq; port->stats.dl_hdr_last_bytes = dlhdr->le.bytes; port->stats.dl_hdr_last_pkts = dlhdr->le.pkts; Loading @@ -208,23 +216,40 @@ static void rmnet_frag_process_flow_start(struct rmnet_map_control_command *cmd, port->stats.dl_hdr_total_pkts += port->stats.dl_hdr_last_pkts; port->stats.dl_hdr_count++; /* If a target is taking frag path, we can assume DL marker v2 is in * play */ if (is_dl_mark_v2) rmnet_map_dl_hdr_notify_v2(port, dlhdr, cmd); else rmnet_map_dl_hdr_notify(port, dlhdr); } static void rmnet_frag_process_flow_end(struct rmnet_map_control_command *cmd, struct rmnet_port *port, u16 cmd_len) static void rmnet_frag_process_flow_end(struct rmnet_map_control_command_header *cmd, struct rmnet_port *port, u16 cmd_len) { struct rmnet_map_dl_ind_trl *dltrl; u32 data_format; bool is_dl_mark_v2; if (cmd_len < RMNET_DL_IND_TRL_SIZE) if (cmd_len + sizeof(struct rmnet_map_header) < RMNET_DL_IND_TRL_SIZE) return; data_format = port->data_format; is_dl_mark_v2 = data_format & RMNET_INGRESS_FORMAT_DL_MARKER_V2; dltrl = (struct rmnet_map_dl_ind_trl *)((char *)cmd + sizeof(*cmd)); port->stats.dl_trl_last_seq = dltrl->seq_le; port->stats.dl_trl_count++; /* If a target is taking frag path, we can assume DL marker v2 is in * play */ if (is_dl_mark_v2) rmnet_map_dl_trl_notify_v2(port, dltrl, cmd); else rmnet_map_dl_trl_notify(port, dltrl); } Loading Loading @@ -261,10 +286,10 @@ void rmnet_frag_command(struct rmnet_map_header *qmap, struct rmnet_port *port) int rmnet_frag_flow_command(struct rmnet_map_header *qmap, struct rmnet_port *port, u16 pkt_len) { struct rmnet_map_control_command *cmd; struct rmnet_map_control_command_header *cmd; unsigned char command_name; cmd = (struct rmnet_map_control_command *) cmd = (struct rmnet_map_control_command_header *) ((char *)qmap + sizeof(*qmap)); command_name = cmd->command_name; Loading
drivers/net/ethernet/qualcomm/rmnet/rmnet_map.h +26 −6 Original line number Diff line number Diff line Loading @@ -120,8 +120,10 @@ struct rmnet_map_ul_csum_header { struct rmnet_map_control_command_header { u8 command_name; u8 cmd_type:2; u8 reserved:6; u16 reserved2; u8 reserved:5; u8 e:1; u16 source_id:15; u16 ext:1; u32 transaction_id; } __aligned(1); Loading Loading @@ -167,8 +169,20 @@ struct rmnet_map_dl_ind_trl { struct rmnet_map_dl_ind { u8 priority; union { void (*dl_hdr_handler)(struct rmnet_map_dl_ind_hdr *dlhdr); void (*dl_hdr_handler_v2)(struct rmnet_map_dl_ind_hdr *dlhdr, struct rmnet_map_control_command_header * qcmd); } __aligned(1); union { void (*dl_trl_handler)(struct rmnet_map_dl_ind_trl *dltrl); void (*dl_trl_handler_v2)(struct rmnet_map_dl_ind_trl *dltrl, struct rmnet_map_control_command_header * qcmd); } __aligned(1); struct list_head list; }; Loading Loading @@ -248,8 +262,14 @@ void rmnet_map_tx_aggregate_init(struct rmnet_port *port); void rmnet_map_tx_aggregate_exit(struct rmnet_port *port); void rmnet_map_dl_hdr_notify(struct rmnet_port *port, struct rmnet_map_dl_ind_hdr *dl_hdr); void rmnet_map_dl_hdr_notify_v2(struct rmnet_port *port, struct rmnet_map_dl_ind_hdr *dl_hdr, struct rmnet_map_control_command_header *qcmd); void rmnet_map_dl_trl_notify(struct rmnet_port *port, struct rmnet_map_dl_ind_trl *dltrl); void rmnet_map_dl_trl_notify_v2(struct rmnet_port *port, struct rmnet_map_dl_ind_trl *dltrl, struct rmnet_map_control_command_header *qcmd); int rmnet_map_flow_command(struct sk_buff *skb, struct rmnet_port *port, bool rmnet_perf); Loading
drivers/net/ethernet/qualcomm/rmnet/rmnet_map_command.c +79 −10 Original line number Diff line number Diff line Loading @@ -87,7 +87,21 @@ static void rmnet_map_send_ack(struct sk_buff *skb, netif_tx_unlock(dev); } void rmnet_map_dl_hdr_notify(struct rmnet_port *port, void rmnet_map_dl_hdr_notify_v2(struct rmnet_port *port, struct rmnet_map_dl_ind_hdr *dlhdr, struct rmnet_map_control_command_header *qcmd) { struct rmnet_map_dl_ind *tmp; port->dl_marker_flush = 0; list_for_each_entry(tmp, &port->dl_list, list) tmp->dl_hdr_handler_v2(dlhdr, qcmd); } void rmnet_map_dl_hdr_notify(struct rmnet_port *port, struct rmnet_map_dl_ind_hdr *dlhdr) { struct rmnet_map_dl_ind *tmp; Loading @@ -98,7 +112,27 @@ void rmnet_map_dl_hdr_notify(struct rmnet_port *port, tmp->dl_hdr_handler(dlhdr); } void rmnet_map_dl_trl_notify(struct rmnet_port *port, void rmnet_map_dl_trl_notify_v2(struct rmnet_port *port, struct rmnet_map_dl_ind_trl *dltrl, struct rmnet_map_control_command_header *qcmd) { struct rmnet_map_dl_ind *tmp; struct napi_struct *napi; list_for_each_entry(tmp, &port->dl_list, list) tmp->dl_trl_handler_v2(dltrl, qcmd); if (port->dl_marker_flush) { napi = get_current_napi_context(); napi_gro_flush(napi, false); } port->dl_marker_flush = -1; } void rmnet_map_dl_trl_notify(struct rmnet_port *port, struct rmnet_map_dl_ind_trl *dltrl) { struct rmnet_map_dl_ind *tmp; Loading @@ -120,11 +154,26 @@ static void rmnet_map_process_flow_start(struct sk_buff *skb, bool rmnet_perf) { struct rmnet_map_dl_ind_hdr *dlhdr; struct rmnet_map_control_command_header *qcmd; u32 data_format; bool is_dl_mark_v2; if (skb->len < RMNET_DL_IND_HDR_SIZE) return; data_format = port->data_format; is_dl_mark_v2 = data_format & RMNET_INGRESS_FORMAT_DL_MARKER_V2; if (is_dl_mark_v2) { pskb_pull(skb, sizeof(struct rmnet_map_header)); qcmd = (struct rmnet_map_control_command_header *) rmnet_map_data_ptr(skb); port->stats.dl_hdr_last_ep_id = qcmd->source_id; port->stats.dl_hdr_last_qmap_vers = qcmd->reserved; port->stats.dl_hdr_last_trans_id = qcmd->transaction_id; pskb_pull(skb, sizeof(struct rmnet_map_control_command_header)); } else { pskb_pull(skb, RMNET_MAP_CMD_SIZE); } dlhdr = (struct rmnet_map_dl_ind_hdr *)rmnet_map_data_ptr(skb); Loading @@ -136,12 +185,16 @@ static void rmnet_map_process_flow_start(struct sk_buff *skb, port->stats.dl_hdr_total_pkts += port->stats.dl_hdr_last_pkts; port->stats.dl_hdr_count++; if (is_dl_mark_v2) rmnet_map_dl_hdr_notify_v2(port, dlhdr, qcmd); else rmnet_map_dl_hdr_notify(port, dlhdr); if (rmnet_perf) { unsigned int pull_size; pull_size = sizeof(struct rmnet_map_dl_ind_hdr); if (port->data_format & RMNET_FLAGS_INGRESS_MAP_CKSUMV4) if (data_format & RMNET_FLAGS_INGRESS_MAP_CKSUMV4) pull_size += sizeof(struct rmnet_map_dl_csum_trailer); pskb_pull(skb, pull_size); } Loading @@ -152,23 +205,39 @@ static void rmnet_map_process_flow_end(struct sk_buff *skb, bool rmnet_perf) { struct rmnet_map_dl_ind_trl *dltrl; struct rmnet_map_control_command_header *qcmd; u32 data_format; bool is_dl_mark_v2; if (skb->len < RMNET_DL_IND_TRL_SIZE) return; data_format = port->data_format; is_dl_mark_v2 = data_format & RMNET_INGRESS_FORMAT_DL_MARKER_V2; if (is_dl_mark_v2) { pskb_pull(skb, sizeof(struct rmnet_map_header)); qcmd = (struct rmnet_map_control_command_header *) rmnet_map_data_ptr(skb); pskb_pull(skb, sizeof(struct rmnet_map_control_command_header)); } else { pskb_pull(skb, RMNET_MAP_CMD_SIZE); } dltrl = (struct rmnet_map_dl_ind_trl *)rmnet_map_data_ptr(skb); port->stats.dl_trl_last_seq = dltrl->seq_le; port->stats.dl_trl_count++; if (is_dl_mark_v2) rmnet_map_dl_trl_notify_v2(port, dltrl, qcmd); else rmnet_map_dl_trl_notify(port, dltrl); if (rmnet_perf) { unsigned int pull_size; pull_size = sizeof(struct rmnet_map_dl_ind_trl); if (port->data_format & RMNET_FLAGS_INGRESS_MAP_CKSUMV4) if (data_format & RMNET_FLAGS_INGRESS_MAP_CKSUMV4) pull_size += sizeof(struct rmnet_map_dl_csum_trailer); pskb_pull(skb, pull_size); } Loading
drivers/net/ethernet/qualcomm/rmnet/rmnet_private.h +6 −3 Original line number Diff line number Diff line /* SPDX-License-Identifier: GPL-2.0 */ /* Copyright (c) 2013-2014, 2016-2018 The Linux Foundation. All rights reserved. /* Copyright (c) 2013-2014, 2016-2019 The Linux Foundation. All rights reserved. */ #ifndef _RMNET_PRIVATE_H_ Loading @@ -12,8 +12,11 @@ /* Constants */ #define RMNET_EGRESS_FORMAT_AGGREGATION BIT(31) #define RMNET_INGRESS_FORMAT_DL_MARKER BIT(30) #define RMNET_INGRESS_FORMAT_RPS_STAMP BIT(29) #define RMNET_INGRESS_FORMAT_DL_MARKER_V1 BIT(30) #define RMNET_INGRESS_FORMAT_DL_MARKER_V2 BIT(29) #define RMNET_INGRESS_FORMAT_DL_MARKER (RMNET_INGRESS_FORMAT_DL_MARKER_V1 |\ RMNET_INGRESS_FORMAT_DL_MARKER_V2) /* Power save feature*/ #define RMNET_INGRESS_FORMAT_PS BIT(27) Loading