]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[ipv4] Profile transmit and receive datapaths
authorMichael Brown <mcb30@ipxe.org>
Mon, 28 Apr 2014 11:30:09 +0000 (12:30 +0100)
committerMichael Brown <mcb30@ipxe.org>
Mon, 28 Apr 2014 11:30:30 +0000 (12:30 +0100)
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/net/ipv4.c

index c5cfd134dbdccba9995f58b663cf860ed056638b..9c5cf2eb49d5d65d04dbd48842ffb93645af8268 100644 (file)
@@ -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: