summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/net/ipv4.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/net/ipv4.c b/src/net/ipv4.c
index c5cfd134d..9c5cf2eb4 100644
--- a/src/net/ipv4.c
+++ b/src/net/ipv4.c
@@ -16,6 +16,7 @@
#include <ipxe/settings.h>
#include <ipxe/fragment.h>
#include <ipxe/ipstat.h>
+#include <ipxe/profile.h>
/** @file
*
@@ -41,6 +42,12 @@ ipv4_stats_family __ip_statistics_family ( IP_STATISTICS_IPV4 ) = {
.stats = &ipv4_stats,
};
+/** Transmit profiler */
+static struct profiler ipv4_tx_profiler __profiler = { .name = "ipv4.tx" };
+
+/** Receive profiler */
+static struct profiler ipv4_rx_profiler __profiler = { .name = "ipv4.rx" };
+
/**
* Add IPv4 minirouting table entry
*
@@ -263,6 +270,9 @@ static int ipv4_tx ( struct io_buffer *iobuf,
const void *ll_dest;
int rc;
+ /* Start profiling */
+ profile_start ( &ipv4_tx_profiler );
+
/* Update statistics */
ipv4_stats.out_requests++;
@@ -358,6 +368,7 @@ static int ipv4_tx ( struct io_buffer *iobuf,
}
}
+ profile_stop ( &ipv4_tx_profiler );
return 0;
err:
@@ -430,6 +441,9 @@ static int ipv4_rx ( struct io_buffer *iobuf,
uint16_t pshdr_csum;
int rc;
+ /* Start profiling */
+ profile_start ( &ipv4_rx_profiler );
+
/* Update statistics */
ipv4_stats.in_receives++;
ipv4_stats.in_octets += iob_len ( iobuf );
@@ -528,6 +542,7 @@ static int ipv4_rx ( struct io_buffer *iobuf,
return rc;
}
+ profile_stop ( &ipv4_rx_profiler );
return 0;
err_header: