]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[pxe] Profile UNDI transmit datapath
authorMichael Brown <mcb30@ipxe.org>
Sat, 3 May 2014 00:02:20 +0000 (01:02 +0100)
committerMichael Brown <mcb30@ipxe.org>
Sat, 3 May 2014 17:52:15 +0000 (18:52 +0100)
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/arch/i386/interface/pxe/pxe_undi.c

index 5d2122694906efb7f296b4e388ecc0317c5fad9f..a17b9b3b053bdca8b7c1fc6fa305efd2cdba23fc 100644 (file)
@@ -38,6 +38,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
 #include <ipxe/ip.h>
 #include <ipxe/arp.h>
 #include <ipxe/rarp.h>
+#include <ipxe/profile.h>
 #include "pxe.h"
 
 /**
@@ -53,6 +54,9 @@ static int undi_tx_count = 0;
 
 struct net_device *pxe_netdev = NULL;
 
+/** Transmit profiler */
+static struct profiler undi_tx_profiler __profiler = { .name = "undi.tx" };
+
 /**
  * Set network device as current PXE network device
  *
@@ -309,6 +313,9 @@ pxenv_undi_transmit ( struct s_PXENV_UNDI_TRANSMIT *undi_transmit ) {
        unsigned int i;
        int rc;
 
+       /* Start profiling */
+       profile_start ( &undi_tx_profiler );
+
        /* Sanity check */
        if ( ! pxe_netdev ) {
                DBGC ( &pxe_netdev, "PXENV_UNDI_TRANSMIT called with no "
@@ -422,6 +429,7 @@ pxenv_undi_transmit ( struct s_PXENV_UNDI_TRANSMIT *undi_transmit ) {
                return PXENV_EXIT_FAILURE;
        }
 
+       profile_stop ( &undi_tx_profiler );
        undi_transmit->Status = PXENV_STATUS_SUCCESS;
        return PXENV_EXIT_SUCCESS;
 }