1 Star 0 Fork 48

yinbin6/lwip

forked from src-openEuler/lwip 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
0126-add-stats_proto-in-out-to-xmit-recv.patch 12.21 KB
一键复制 编辑 原始数据 按行查看 历史
From 050f6e547e31a6dd26837a4660ce8c53db71e272 Mon Sep 17 00:00:00 2001
From: root <root@localhost.localdomain>
Date: Thu, 25 Apr 2024 10:57:46 +0800
Subject: [PATCH] add stats_proto in/out to xmit/recv
---
src/core/ipv4/etharp.c | 25 ++++++++++++++++++++-----
src/core/ipv4/icmp.c | 22 +++++++++++++++++++++-
src/core/ipv4/ip4.c | 28 ++++++++++++++++++++++------
src/core/tcp_in.c | 8 +++++++-
src/core/tcp_out.c | 16 +++++++++++++---
src/core/udp.c | 21 ++++++++++++++++-----
src/include/lwip/stats.h | 6 ++++++
7 files changed, 105 insertions(+), 21 deletions(-)
diff --git a/src/core/ipv4/etharp.c b/src/core/ipv4/etharp.c
index 6a9117a..ffaa442 100644
--- a/src/core/ipv4/etharp.c
+++ b/src/core/ipv4/etharp.c
@@ -654,7 +654,9 @@ etharp_input(struct pbuf *p, struct netif *netif)
u8_t for_us, from_us;
LWIP_ASSERT_CORE_LOCKED();
-
+#if GAZELLE_ENABLE
+ ETHARP_STATS_INC(etharp.rx_in);
+#endif
LWIP_ERROR("netif != NULL", (netif != NULL), return;);
hdr = (struct etharp_hdr *)p->payload;
@@ -672,7 +674,9 @@ etharp_input(struct pbuf *p, struct netif *netif)
pbuf_free(p);
return;
}
+#if !GAZELLE_ENABLE
ETHARP_STATS_INC(etharp.recv);
+#endif
#if LWIP_ACD
/* We have to check if a host already has configured our ip address and
@@ -746,6 +750,9 @@ etharp_input(struct pbuf *p, struct netif *netif)
break;
}
/* free ARP packet */
+#if GAZELLE_ENABLE
+ ETHARP_STATS_INC(etharp.rx_out);
+#endif
pbuf_free(p);
}
@@ -801,7 +808,10 @@ etharp_output(struct netif *netif, struct pbuf *q, const ip4_addr_t *ipaddr)
const struct eth_addr *dest;
struct eth_addr mcastaddr;
const ip4_addr_t *dst_addr = ipaddr;
-
+
+#if GAZELLE_ENABLE
+ ETHARP_STATS_INC(etharp.tx_in);
+#endif
LWIP_ASSERT_CORE_LOCKED();
LWIP_ASSERT("netif != NULL", netif != NULL);
LWIP_ASSERT("q != NULL", q != NULL);
@@ -901,6 +911,9 @@ etharp_output(struct netif *netif, struct pbuf *q, const ip4_addr_t *ipaddr)
/* continuation for multicast/broadcast destinations */
/* obtain source Ethernet address of the given interface */
/* send packet directly on the link */
+#if GAZELLE_ENABLE
+ ETHARP_STATS_INC(etharp.tx_out);
+#endif
return ethernet_output(netif, q, (struct eth_addr *)(netif->hwaddr), dest, ETHTYPE_IP);
}
@@ -1179,13 +1192,15 @@ etharp_raw(struct netif *netif, const struct eth_addr *ethsrc_addr,
{
ethernet_output(netif, p, ethsrc_addr, ethdst_addr, ETHTYPE_ARP);
}
-
- ETHARP_STATS_INC(etharp.xmit);
+#if GAZELLE_ENABLE
+ ETHARP_STATS_INC(etharp.tx_out);
+#else
+ ETHARP_STATS_INC(etharp.xmit);
+#endif
/* free ARP query packet */
pbuf_free(p);
p = NULL;
/* could not allocate pbuf for ARP request */
-
return result;
}
diff --git a/src/core/ipv4/icmp.c b/src/core/ipv4/icmp.c
index a3de92d..ff1ecca 100644
--- a/src/core/ipv4/icmp.c
+++ b/src/core/ipv4/icmp.c
@@ -92,7 +92,11 @@ icmp_input(struct pbuf *p, struct netif *inp)
u16_t hlen;
const ip4_addr_t *src;
+#if GAZELLE_ENABLE
+ ICMP_STATS_INC(icmp.rx_in);
+#else
ICMP_STATS_INC(icmp.recv);
+#endif
MIB2_STATS_INC(mib2.icmpinmsgs);
iphdr_in = ip4_current_header();
@@ -120,6 +124,9 @@ icmp_input(struct pbuf *p, struct netif *inp)
break;
case ICMP_ECHO:
MIB2_STATS_INC(mib2.icmpinechos);
+#if GAZELLE_ENABLE
+ ICMP_STATS_INC(icmp.tx_in);
+#endif
src = ip4_current_dest_addr();
/* multicast destination address? */
if (ip4_addr_ismulticast(ip4_current_dest_addr())) {
@@ -252,8 +259,11 @@ icmp_input(struct pbuf *p, struct netif *inp)
#endif
}
#endif /* CHECKSUM_GEN_IP */
-
+#if GAZELLE_ENABLE
+ ICMP_STATS_INC(icmp.tx_out);
+#else
ICMP_STATS_INC(icmp.xmit);
+#endif
/* increase number of messages attempted to send */
MIB2_STATS_INC(mib2.icmpoutmsgs);
/* increase number of echo replies attempted to send */
@@ -292,6 +302,9 @@ icmp_input(struct pbuf *p, struct netif *inp)
ICMP_STATS_INC(icmp.proterr);
ICMP_STATS_INC(icmp.drop);
}
+#if GAZELLE_ENABLE
+ ICMP_STATS_INC(icmp.rx_out);
+#endif
pbuf_free(p);
return;
lenerr:
@@ -361,6 +374,9 @@ icmp_send_response(struct pbuf *p, u8_t type, u8_t code)
/* increase number of messages attempted to send */
MIB2_STATS_INC(mib2.icmpoutmsgs);
+#if GAZELLE_ENABLE
+ ICMP_STATS_INC(icmp.tx_in);
+#endif
/* Keep IP header + up to 8 bytes */
response_pkt_len = IP_HLEN + ICMP_DEST_UNREACH_DATASIZE;
@@ -411,7 +427,11 @@ icmp_send_response(struct pbuf *p, u8_t type, u8_t code)
icmphdr->chksum = inet_chksum(icmphdr, q->len);
}
#endif
+#if GAZELLE_ENABLE
+ ICMP_STATS_INC(icmp.tx_out);
+#else
ICMP_STATS_INC(icmp.xmit);
+#endif
ip4_output_if(q, NULL, &iphdr_src, ICMP_TTL, 0, IP_PROTO_ICMP, netif);
}
pbuf_free(q);
diff --git a/src/core/ipv4/ip4.c b/src/core/ipv4/ip4.c
index 907a2f0..8865766 100644
--- a/src/core/ipv4/ip4.c
+++ b/src/core/ipv4/ip4.c
@@ -382,7 +382,9 @@ ip4_forward(struct pbuf *p, struct ip_hdr *iphdr, struct netif *inp)
IP_STATS_INC(ip.fw);
MIB2_STATS_INC(mib2.ipforwdatagrams);
+#if !GAZELLE_ENABLE
IP_STATS_INC(ip.xmit);
+#endif
#ifndef LWIP_PERF
PERF_STOP("ip4_forward");
@@ -406,6 +408,9 @@ ip4_forward(struct pbuf *p, struct ip_hdr *iphdr, struct netif *inp)
/* transmit pbuf on chosen interface */
netif->output(netif, p, ip4_current_dest_addr());
return;
+#if GAZELLE_ENABLE
+ IP_STATS_INC(ip.tx_out);
+#endif
return_noroute:
MIB2_STATS_INC(mib2.ipoutnoroutes);
}
@@ -481,8 +486,12 @@ ip4_input(struct pbuf *p, struct netif *inp)
LWIP_ASSERT_CORE_LOCKED();
PERF_START(PERF_LAYER_IP, PERF_POINT_IP_RECV);
-
- IP_STATS_INC(ip.recv);
+
+#if GAZELLE_ENABLE
+ IP_STATS_INC(ip.rx_in);
+#else
+ IP_STATS_INC(ip.recv);
+#endif
MIB2_STATS_INC(mib2.ipinreceives);
/* identify the IP header */
@@ -815,7 +824,9 @@ ip4_input(struct pbuf *p, struct netif *inp)
ip4_addr_set_any(ip4_current_dest_addr());
PERF_STOP_INCREASE_COUNT("ip4_input", PERF_LAYER_IP);
-
+#if GAZELLE_ENABLE
+ IP_STATS_INC(ip.rx_out);
+#endif
return ERR_OK;
}
@@ -908,7 +919,9 @@ ip4_output_if_opt_src(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *d
#if CHECKSUM_GEN_IP_INLINE
u32_t chk_sum = 0;
#endif /* CHECKSUM_GEN_IP_INLINE */
-
+#if GAZELLE_ENABLE
+ IP_STATS_INC(ip.tx_in);
+#endif
LWIP_ASSERT_CORE_LOCKED();
LWIP_IP_CHECK_PBUF_REF_COUNT_FOR_TX(p);
@@ -1045,7 +1058,9 @@ ip4_output_if_opt_src(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *d
dest = &dest_addr;
}
+#if !GAZELLE_ENABLE
IP_STATS_INC(ip.xmit);
+#endif
LWIP_DEBUGF(IP_DEBUG, ("ip4_output_if: %c%c%"U16_F"\n", netif->name[0], netif->name[1], (u16_t)netif->num));
ip4_debug_print(p);
@@ -1078,7 +1093,9 @@ ip4_output_if_opt_src(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *d
}
#endif
#endif /* IP_FRAG */
-
+#if GAZELLE_ENABLE
+ IP_STATS_INC(ip.tx_out);
+#endif
LWIP_DEBUGF(IP_DEBUG, ("ip4_output_if: call netif->output()\n"));
return netif->output(netif, p, dest);
}
@@ -1107,7 +1124,6 @@ ip4_output(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *dest,
struct netif *netif;
LWIP_IP_CHECK_PBUF_REF_COUNT_FOR_TX(p);
-
if ((netif = ip4_route_src(src, dest)) == NULL) {
LWIP_DEBUGF(IP_DEBUG, ("ip4_output: No route to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n",
ip4_addr1_16(dest), ip4_addr2_16(dest), ip4_addr3_16(dest), ip4_addr4_16(dest)));
diff --git a/src/core/tcp_in.c b/src/core/tcp_in.c
index 2922721..6c960a6 100644
--- a/src/core/tcp_in.c
+++ b/src/core/tcp_in.c
@@ -179,8 +179,11 @@ tcp_input(struct pbuf *p, struct netif *inp)
#ifndef LWIP_PERF
PERF_START;
#endif
-
+#if GAZELLE_ENABLE
+ TCP_STATS_INC(tcp.rx_in);
+#else
TCP_STATS_INC(tcp.recv);
+#endif
MIB2_STATS_INC(mib2.tcpinsegs);
tcphdr = (struct tcp_hdr *)p->payload;
@@ -675,6 +678,9 @@ tcp_input(struct pbuf *p, struct netif *inp)
#endif /* TCP_INPUT_DEBUG */
}
}
+#if GAZELLE_ENABLE
+ TCP_STATS_INC(tcp.rx_out);
+#endif
/* Jump target if pcb has been aborted in a callback (by calling tcp_abort()).
Below this line, 'pcb' may not be dereferenced! */
aborted:
diff --git a/src/core/tcp_out.c b/src/core/tcp_out.c
index 1632a66..8a9016b 100644
--- a/src/core/tcp_out.c
+++ b/src/core/tcp_out.c
@@ -1467,7 +1467,9 @@ tcp_output(struct tcp_pcb *pcb)
#endif /* TCP_CWND_DEBUG */
LWIP_ASSERT_CORE_LOCKED();
-
+#if GAZELLE_ENABLE
+ TCP_STATS_INC(tcp.tx_in);
+#endif
LWIP_ASSERT("tcp_output: invalid pcb", pcb != NULL);
/* pcb->state LISTEN not allowed here */
LWIP_ASSERT("don't call tcp_output for listen-pcbs",
@@ -2019,8 +2021,9 @@ tcp_output_segment(struct tcp_seg *seg, struct tcp_pcb *pcb, struct netif *netif
#endif /* CHECKSUM_GEN_TCP_HW */
}
#endif /* CHECKSUM_GEN_TCP */
+#if !GAZELLE_ENABLE
TCP_STATS_INC(tcp.xmit);
-
+#endif
PERF_PAUSE_RETURN_POINT(PERF_LAYER_TCP, tmpPoint);
PERF_START(PERF_LAYER_IP, PERF_POINT_IP_SEND);
@@ -2039,7 +2042,9 @@ tcp_output_segment(struct tcp_seg *seg, struct tcp_pcb *pcb, struct netif *netif
seg->chksum_swapped = 1;
}
#endif
-
+#if GAZELLE_ENABLE
+ TCP_STATS_INC(tcp.tx_out);
+#endif
PERF_STOP_INCREASE_COUNT("ip_out", PERF_LAYER_IP);
PERF_RESUME(PERF_LAYER_TCP, tmpPoint);
@@ -2430,7 +2435,12 @@ tcp_output_control_segment_netif(const struct tcp_pcb *pcb, struct pbuf *p,
ttl = TCP_TTL;
tos = 0;
}
+#if GAZELLE_ENABLE
+ TCP_STATS_INC(tcp.tx_out);
+#else
TCP_STATS_INC(tcp.xmit);
+#endif
+
err = ip_output_if(p, src, dst, ttl, tos, IP_PROTO_TCP, netif);
NETIF_RESET_HINTS(netif);
diff --git a/src/core/udp.c b/src/core/udp.c
index 4a47e99..2c946c7 100644
--- a/src/core/udp.c
+++ b/src/core/udp.c
@@ -263,7 +263,9 @@ udp_input(struct pbuf *p, struct netif *inp)
LWIP_UNUSED_ARG(inp);
LWIP_ASSERT_CORE_LOCKED();
-
+#if GAZELLE_ENABLE
+ UDP_STATS_INC(udp.rx_in);
+#endif
LWIP_ASSERT("udp_input: invalid pbuf", p != NULL);
LWIP_ASSERT("udp_input: invalid netif", inp != NULL);
@@ -273,7 +275,9 @@ udp_input(struct pbuf *p, struct netif *inp)
//PERF_START;
#endif
+#if !GAZELLE_ENABLE
UDP_STATS_INC(udp.recv);
+#endif
/* Check minimum length (UDP header) */
if (p->len < UDP_HLEN) {
@@ -518,6 +522,9 @@ udp_input(struct pbuf *p, struct netif *inp)
} else {
pbuf_free(p);
}
+#if GAZELLE_ENABLE
+ UDP_STATS_INC(udp.rx_out);
+#endif
end:
#if LWIP_RECORD_PERF
PERF_STOP_INCREASE_COUNT("udp_input", PERF_LAYER_UDP);
@@ -589,7 +596,6 @@ udp_send_chksum(struct udp_pcb *pcb, struct pbuf *p,
{
LWIP_ERROR("udp_send_chksum: invalid pcb", pcb != NULL, return ERR_ARG);
LWIP_ERROR("udp_send_chksum: invalid pbuf", p != NULL, return ERR_ARG);
-
if (IP_IS_ANY_TYPE_VAL(pcb->remote_ip)) {
return ERR_VAL;
}
@@ -839,9 +845,11 @@ udp_sendto_if_src_chksum(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *d
struct pbuf *q; /* q will be sent down the stack */
u8_t ip_proto;
u8_t ttl;
-
+
LWIP_ASSERT_CORE_LOCKED();
-
+#if GAZELLE_ENABLE
+ UDP_STATS_INC(udp.tx_in);
+#endif
LWIP_ERROR("udp_sendto_if_src: invalid pcb", pcb != NULL, return ERR_ARG);
LWIP_ERROR("udp_sendto_if_src: invalid pbuf", p != NULL, return ERR_ARG);
LWIP_ERROR("udp_sendto_if_src: invalid dst_ip", dst_ip != NULL, return ERR_ARG);
@@ -1057,8 +1065,11 @@ udp_sendto_if_src_chksum(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *d
q = NULL;
/* p is still referenced by the caller, and will live on */
}
-
+#if GAZELLE_ENABLE
+ UDP_STATS_INC(udp.tx_out);
+#else
UDP_STATS_INC(udp.xmit);
+#endif
return err;
}
diff --git a/src/include/lwip/stats.h b/src/include/lwip/stats.h
index 08c34e9..f99f6e5 100644
--- a/src/include/lwip/stats.h
+++ b/src/include/lwip/stats.h
@@ -64,6 +64,12 @@ extern "C" {
struct stats_proto {
STAT_COUNTER xmit; /* Transmitted packets. */
STAT_COUNTER recv; /* Received packets. */
+#if GAZELLE_ENABLE
+ STAT_COUNTER tx_in; /* Transmitted packets. */
+ STAT_COUNTER tx_out; /* Transmitted out packets. */
+ STAT_COUNTER rx_in; /* Received in packets. */
+ STAT_COUNTER rx_out; /* Received out packets. */
+#endif
STAT_COUNTER fw; /* Forwarded packets. */
STAT_COUNTER drop; /* Dropped packets. */
STAT_COUNTER chkerr; /* Checksum error. */
--
2.27.0
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/yinbin6/lwip.git
git@gitee.com:yinbin6/lwip.git
yinbin6
lwip
lwip
master

搜索帮助