mirror of https://github.com/ipxe/ipxe.git
[ipv4] Profile transmit and receive datapaths
Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/17/head
parent
6d4deeeb6c
commit
f65c81b1d0
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue