Loading drivers/net/ethernet/qualcomm/rmnet/rmnet_config.h +3 −0 Original line number Original line Diff line number Diff line Loading @@ -29,6 +29,9 @@ struct rmnet_endpoint { }; }; struct rmnet_port_priv_stats { 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_seq; u64 dl_hdr_last_bytes; u64 dl_hdr_last_bytes; u64 dl_hdr_last_pkts; u64 dl_hdr_last_pkts; Loading drivers/net/ethernet/qualcomm/rmnet/rmnet_map.h +24 −6 Original line number Original line Diff line number Diff line Loading @@ -129,8 +129,10 @@ struct rmnet_map_ul_csum_header { struct rmnet_map_control_command_header { struct rmnet_map_control_command_header { u8 command_name; u8 command_name; u8 cmd_type:2; u8 cmd_type:2; u8 reserved:6; u8 reserved:5; u16 reserved2; u8 e:1; u16 source_id:15; u16 ext:1; u32 transaction_id; u32 transaction_id; } __aligned(1); } __aligned(1); Loading Loading @@ -176,8 +178,18 @@ struct rmnet_map_dl_ind_trl { struct rmnet_map_dl_ind { struct rmnet_map_dl_ind { u8 priority; u8 priority; union { void (*dl_hdr_handler)(struct rmnet_map_dl_ind_hdr *); void (*dl_hdr_handler)(struct rmnet_map_dl_ind_hdr *); void (*dl_hdr_handler_v2)(struct rmnet_map_dl_ind_hdr *, struct rmnet_map_control_command_header *); } __aligned(1); union { void (*dl_trl_handler)(struct rmnet_map_dl_ind_trl *); void (*dl_trl_handler)(struct rmnet_map_dl_ind_trl *); void (*dl_trl_handler_v2)(struct rmnet_map_dl_ind_trl *, struct rmnet_map_control_command_header *); } __aligned(1); struct list_head list; struct list_head list; }; }; Loading Loading @@ -257,8 +269,14 @@ void rmnet_map_tx_aggregate_init(struct rmnet_port *port); void rmnet_map_tx_aggregate_exit(struct rmnet_port *port); void rmnet_map_tx_aggregate_exit(struct rmnet_port *port); void rmnet_map_dl_hdr_notify(struct rmnet_port *port, void rmnet_map_dl_hdr_notify(struct rmnet_port *port, struct rmnet_map_dl_ind_hdr *dl_hdr); 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, void rmnet_map_dl_trl_notify(struct rmnet_port *port, struct rmnet_map_dl_ind_trl *dltrl); 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, int rmnet_map_flow_command(struct sk_buff *skb, struct rmnet_port *port, struct rmnet_port *port, bool rmnet_perf); bool rmnet_perf); Loading drivers/net/ethernet/qualcomm/rmnet/rmnet_map_command.c +79 −10 Original line number Original line Diff line number Diff line Loading @@ -96,7 +96,21 @@ static void rmnet_map_send_ack(struct sk_buff *skb, netif_tx_unlock(dev); 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_hdr *dlhdr) { { struct rmnet_map_dl_ind *tmp; struct rmnet_map_dl_ind *tmp; Loading @@ -107,7 +121,27 @@ void rmnet_map_dl_hdr_notify(struct rmnet_port *port, tmp->dl_hdr_handler(dlhdr); 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_trl *dltrl) { { struct rmnet_map_dl_ind *tmp; struct rmnet_map_dl_ind *tmp; Loading @@ -129,11 +163,26 @@ static void rmnet_map_process_flow_start(struct sk_buff *skb, bool rmnet_perf) bool rmnet_perf) { { struct rmnet_map_dl_ind_hdr *dlhdr; 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) if (skb->len < RMNET_DL_IND_HDR_SIZE) return; 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); pskb_pull(skb, RMNET_MAP_CMD_SIZE); } dlhdr = (struct rmnet_map_dl_ind_hdr *)rmnet_map_data_ptr(skb); dlhdr = (struct rmnet_map_dl_ind_hdr *)rmnet_map_data_ptr(skb); Loading @@ -145,12 +194,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_total_pkts += port->stats.dl_hdr_last_pkts; port->stats.dl_hdr_count++; 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); rmnet_map_dl_hdr_notify(port, dlhdr); if (rmnet_perf) { if (rmnet_perf) { unsigned int pull_size; unsigned int pull_size; pull_size = sizeof(struct rmnet_map_dl_ind_hdr); 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); pull_size += sizeof(struct rmnet_map_dl_csum_trailer); pskb_pull(skb, pull_size); pskb_pull(skb, pull_size); } } Loading @@ -161,23 +214,39 @@ static void rmnet_map_process_flow_end(struct sk_buff *skb, bool rmnet_perf) bool rmnet_perf) { { struct rmnet_map_dl_ind_trl *dltrl; 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) if (skb->len < RMNET_DL_IND_TRL_SIZE) return; 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); pskb_pull(skb, RMNET_MAP_CMD_SIZE); } dltrl = (struct rmnet_map_dl_ind_trl *)rmnet_map_data_ptr(skb); 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_last_seq = dltrl->seq_le; port->stats.dl_trl_count++; 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); rmnet_map_dl_trl_notify(port, dltrl); if (rmnet_perf) { if (rmnet_perf) { unsigned int pull_size; unsigned int pull_size; pull_size = sizeof(struct rmnet_map_dl_ind_trl); 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); pull_size += sizeof(struct rmnet_map_dl_csum_trailer); pskb_pull(skb, pull_size); pskb_pull(skb, pull_size); } } Loading drivers/net/ethernet/qualcomm/rmnet/rmnet_private.h +6 −3 Original line number Original line Diff line number Diff line /* Copyright (c) 2013-2014, 2016-2018 The Linux Foundation. All rights reserved. /* Copyright (c) 2013-2014, 2016-2019 The Linux Foundation. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * it under the terms of the GNU General Public License version 2 and Loading @@ -20,8 +20,11 @@ /* Constants */ /* Constants */ #define RMNET_EGRESS_FORMAT_AGGREGATION BIT(31) #define RMNET_EGRESS_FORMAT_AGGREGATION BIT(31) #define RMNET_INGRESS_FORMAT_DL_MARKER BIT(30) #define RMNET_INGRESS_FORMAT_DL_MARKER_V1 BIT(30) #define RMNET_INGRESS_FORMAT_RPS_STAMP BIG(29) #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*/ /* Power save feature*/ #define RMNET_INGRESS_FORMAT_PS BIT(27) #define RMNET_INGRESS_FORMAT_PS BIT(27) Loading drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.c +3 −0 Original line number Original line Diff line number Diff line Loading @@ -224,6 +224,9 @@ static const char rmnet_gstrings_stats[][ETH_GSTRING_LEN] = { }; }; static const char rmnet_port_gstrings_stats[][ETH_GSTRING_LEN] = { static const char rmnet_port_gstrings_stats[][ETH_GSTRING_LEN] = { "MAP Cmd last version", "MAP Cmd last ep id", "MAP Cmd last transaction id", "DL header last seen sequence", "DL header last seen sequence", "DL header last seen bytes", "DL header last seen bytes", "DL header last seen packets", "DL header last seen packets", Loading Loading
drivers/net/ethernet/qualcomm/rmnet/rmnet_config.h +3 −0 Original line number Original line Diff line number Diff line Loading @@ -29,6 +29,9 @@ struct rmnet_endpoint { }; }; struct rmnet_port_priv_stats { 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_seq; u64 dl_hdr_last_bytes; u64 dl_hdr_last_bytes; u64 dl_hdr_last_pkts; u64 dl_hdr_last_pkts; Loading
drivers/net/ethernet/qualcomm/rmnet/rmnet_map.h +24 −6 Original line number Original line Diff line number Diff line Loading @@ -129,8 +129,10 @@ struct rmnet_map_ul_csum_header { struct rmnet_map_control_command_header { struct rmnet_map_control_command_header { u8 command_name; u8 command_name; u8 cmd_type:2; u8 cmd_type:2; u8 reserved:6; u8 reserved:5; u16 reserved2; u8 e:1; u16 source_id:15; u16 ext:1; u32 transaction_id; u32 transaction_id; } __aligned(1); } __aligned(1); Loading Loading @@ -176,8 +178,18 @@ struct rmnet_map_dl_ind_trl { struct rmnet_map_dl_ind { struct rmnet_map_dl_ind { u8 priority; u8 priority; union { void (*dl_hdr_handler)(struct rmnet_map_dl_ind_hdr *); void (*dl_hdr_handler)(struct rmnet_map_dl_ind_hdr *); void (*dl_hdr_handler_v2)(struct rmnet_map_dl_ind_hdr *, struct rmnet_map_control_command_header *); } __aligned(1); union { void (*dl_trl_handler)(struct rmnet_map_dl_ind_trl *); void (*dl_trl_handler)(struct rmnet_map_dl_ind_trl *); void (*dl_trl_handler_v2)(struct rmnet_map_dl_ind_trl *, struct rmnet_map_control_command_header *); } __aligned(1); struct list_head list; struct list_head list; }; }; Loading Loading @@ -257,8 +269,14 @@ void rmnet_map_tx_aggregate_init(struct rmnet_port *port); void rmnet_map_tx_aggregate_exit(struct rmnet_port *port); void rmnet_map_tx_aggregate_exit(struct rmnet_port *port); void rmnet_map_dl_hdr_notify(struct rmnet_port *port, void rmnet_map_dl_hdr_notify(struct rmnet_port *port, struct rmnet_map_dl_ind_hdr *dl_hdr); 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, void rmnet_map_dl_trl_notify(struct rmnet_port *port, struct rmnet_map_dl_ind_trl *dltrl); 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, int rmnet_map_flow_command(struct sk_buff *skb, struct rmnet_port *port, struct rmnet_port *port, bool rmnet_perf); bool rmnet_perf); Loading
drivers/net/ethernet/qualcomm/rmnet/rmnet_map_command.c +79 −10 Original line number Original line Diff line number Diff line Loading @@ -96,7 +96,21 @@ static void rmnet_map_send_ack(struct sk_buff *skb, netif_tx_unlock(dev); 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_hdr *dlhdr) { { struct rmnet_map_dl_ind *tmp; struct rmnet_map_dl_ind *tmp; Loading @@ -107,7 +121,27 @@ void rmnet_map_dl_hdr_notify(struct rmnet_port *port, tmp->dl_hdr_handler(dlhdr); 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_trl *dltrl) { { struct rmnet_map_dl_ind *tmp; struct rmnet_map_dl_ind *tmp; Loading @@ -129,11 +163,26 @@ static void rmnet_map_process_flow_start(struct sk_buff *skb, bool rmnet_perf) bool rmnet_perf) { { struct rmnet_map_dl_ind_hdr *dlhdr; 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) if (skb->len < RMNET_DL_IND_HDR_SIZE) return; 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); pskb_pull(skb, RMNET_MAP_CMD_SIZE); } dlhdr = (struct rmnet_map_dl_ind_hdr *)rmnet_map_data_ptr(skb); dlhdr = (struct rmnet_map_dl_ind_hdr *)rmnet_map_data_ptr(skb); Loading @@ -145,12 +194,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_total_pkts += port->stats.dl_hdr_last_pkts; port->stats.dl_hdr_count++; 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); rmnet_map_dl_hdr_notify(port, dlhdr); if (rmnet_perf) { if (rmnet_perf) { unsigned int pull_size; unsigned int pull_size; pull_size = sizeof(struct rmnet_map_dl_ind_hdr); 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); pull_size += sizeof(struct rmnet_map_dl_csum_trailer); pskb_pull(skb, pull_size); pskb_pull(skb, pull_size); } } Loading @@ -161,23 +214,39 @@ static void rmnet_map_process_flow_end(struct sk_buff *skb, bool rmnet_perf) bool rmnet_perf) { { struct rmnet_map_dl_ind_trl *dltrl; 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) if (skb->len < RMNET_DL_IND_TRL_SIZE) return; 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); pskb_pull(skb, RMNET_MAP_CMD_SIZE); } dltrl = (struct rmnet_map_dl_ind_trl *)rmnet_map_data_ptr(skb); 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_last_seq = dltrl->seq_le; port->stats.dl_trl_count++; 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); rmnet_map_dl_trl_notify(port, dltrl); if (rmnet_perf) { if (rmnet_perf) { unsigned int pull_size; unsigned int pull_size; pull_size = sizeof(struct rmnet_map_dl_ind_trl); 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); pull_size += sizeof(struct rmnet_map_dl_csum_trailer); pskb_pull(skb, pull_size); pskb_pull(skb, pull_size); } } Loading
drivers/net/ethernet/qualcomm/rmnet/rmnet_private.h +6 −3 Original line number Original line Diff line number Diff line /* Copyright (c) 2013-2014, 2016-2018 The Linux Foundation. All rights reserved. /* Copyright (c) 2013-2014, 2016-2019 The Linux Foundation. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * it under the terms of the GNU General Public License version 2 and Loading @@ -20,8 +20,11 @@ /* Constants */ /* Constants */ #define RMNET_EGRESS_FORMAT_AGGREGATION BIT(31) #define RMNET_EGRESS_FORMAT_AGGREGATION BIT(31) #define RMNET_INGRESS_FORMAT_DL_MARKER BIT(30) #define RMNET_INGRESS_FORMAT_DL_MARKER_V1 BIT(30) #define RMNET_INGRESS_FORMAT_RPS_STAMP BIG(29) #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*/ /* Power save feature*/ #define RMNET_INGRESS_FORMAT_PS BIT(27) #define RMNET_INGRESS_FORMAT_PS BIT(27) Loading
drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.c +3 −0 Original line number Original line Diff line number Diff line Loading @@ -224,6 +224,9 @@ static const char rmnet_gstrings_stats[][ETH_GSTRING_LEN] = { }; }; static const char rmnet_port_gstrings_stats[][ETH_GSTRING_LEN] = { static const char rmnet_port_gstrings_stats[][ETH_GSTRING_LEN] = { "MAP Cmd last version", "MAP Cmd last ep id", "MAP Cmd last transaction id", "DL header last seen sequence", "DL header last seen sequence", "DL header last seen bytes", "DL header last seen bytes", "DL header last seen packets", "DL header last seen packets", Loading