소스 검색

net: ethernet: qualcomm: rmnet: Track RSB/RSC byte counts

Allows calculation of the average buffer utilization for RSB/RSC packets.

Change-Id: Id719b97ceffc62b1b9ce28bfab8ec32c6604529c
Acked-by: Conner Huff <[email protected]>
Signed-off-by: Sean Tranchetti <[email protected]>
Sean Tranchetti 5 년 전
부모
커밋
1ea6d3f011
3개의 변경된 파일14개의 추가작업 그리고 0개의 파일을 삭제
  1. 4 0
      core/rmnet_config.h
  2. 6 0
      core/rmnet_descriptor.c
  3. 4 0
      core/rmnet_vnd.c

+ 4 - 0
core/rmnet_config.h

@@ -140,6 +140,10 @@ struct rmnet_coal_stats {
 	u64 coal_trans_invalid;
 	struct rmnet_coal_close_stats close;
 	u64 coal_veid[RMNET_MAX_VEID];
+	u64 coal_tcp;
+	u64 coal_tcp_bytes;
+	u64 coal_udp;
+	u64 coal_udp_bytes;
 };
 
 struct rmnet_priv_stats {

+ 6 - 0
core/rmnet_descriptor.c

@@ -812,11 +812,17 @@ rmnet_frag_segment_coal_data(struct rmnet_frag_descriptor *coal_desc,
 
 		th = (struct tcphdr *)((u8 *)iph + coal_desc->ip_len);
 		coal_desc->trans_len = th->doff * 4;
+		priv->stats.coal.coal_tcp++;
+		priv->stats.coal.coal_tcp_bytes +=
+			skb_frag_size(&coal_desc->frag);
 	} else if (coal_desc->trans_proto == IPPROTO_UDP) {
 		struct udphdr *uh;
 
 		uh = (struct udphdr *)((u8 *)iph + coal_desc->ip_len);
 		coal_desc->trans_len = sizeof(*uh);
+		priv->stats.coal.coal_udp++;
+		priv->stats.coal.coal_udp_bytes +=
+			skb_frag_size(&coal_desc->frag);
 		if (coal_desc->ip_proto == 4 && !uh->check)
 			zero_csum = true;
 	} else {

+ 4 - 0
core/rmnet_vnd.c

@@ -231,6 +231,10 @@ static const char rmnet_gstrings_stats[][ETH_GSTRING_LEN] = {
 	"Coalescing packets over VEID1",
 	"Coalescing packets over VEID2",
 	"Coalescing packets over VEID3",
+	"Coalescing TCP frames",
+	"Coalescing TCP bytes",
+	"Coalescing UDP frames",
+	"Coalescing UDP bytes",
 	"Uplink priority packets",
 };