Changeset b81f0a1


Ignore:
Timestamp:
02/26/15 18:54:36 (6 years ago)
Author:
Richard Sanger <rsangerarj@…>
Branches:
4.0.1-hotfixes, cachetimestamps, develop, dpdk-ndag, etsilive, libtrace4, master, ndag_format, pfring, rc-4.0.1, rc-4.0.2, rc-4.0.3, rc-4.0.4, ringdecrementfix, ringperformance, ringtimestampfixes
Children:
6c09048
Parents:
ddfc46d
Message:

Update DPDK to use the new get_stats interface

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lib/format_dpdk.c

    rddfc46d rb81f0a1  
    19971997}
    19981998
    1999 /*
    2000  * NOTE: Drops could occur for other reasons than running out of buffer
    2001  * space. Such as failed MAC checksums and oversized packets.
    2002  */
    2003 static uint64_t dpdk_get_dropped_packets (libtrace_t *trace) {
    2004         struct rte_eth_stats stats = {0};
     1999static void dpdk_get_stats(libtrace_t *trace, libtrace_stat_t *stats) {
     2000        struct rte_eth_stats dev_stats = {0};
    20052001
    20062002        if (trace->format_data == NULL || FORMAT(trace)->port == 0xFF)
    2007                 return UINT64_MAX;
     2003                return;
     2004
    20082005        /* Grab the current stats */
    2009         rte_eth_stats_get(FORMAT(trace)->port, &stats);
    2010 
    2011         /* Get the drop counter */
    2012         return (uint64_t) stats.ierrors;
    2013 }
    2014 
    2015 /*
    2016  * This is the number of packets filtered by the NIC
    2017  * and maybe ahead of number read using libtrace.
    2018  *
    2019  * XXX we are yet to implement any filtering, but if it was this should
    2020  * get the result. So this will just return 0 for now.
    2021  */
    2022 static uint64_t dpdk_get_filtered_packets (libtrace_t *trace) {
    2023         struct rte_eth_stats stats = {0};
    2024 
    2025         if (trace->format_data == NULL || FORMAT(trace)->port == 0xFF)
    2026                 return UINT64_MAX;
    2027         /* Grab the current stats */
    2028         rte_eth_stats_get(FORMAT(trace)->port, &stats);
    2029 
    2030         /* Get the drop counter */
    2031         return (uint64_t) stats.fdirmiss;
     2006        rte_eth_stats_get(FORMAT(trace)->port, &dev_stats);
     2007
     2008        stats->captured_valid = true;
     2009        stats->captured = dev_stats.ipackets;
     2010
     2011        /* Not that we support adding filters but if we did this
     2012         * would work */
     2013        stats->filtered += dev_stats.fdirmiss;
     2014
     2015        stats->dropped_valid = true;
     2016        stats->dropped = dev_stats.imissed;
     2017
     2018        /* DPDK errors includes drops */
     2019        stats->errors_valid = true;
     2020        stats->errors = dev_stats.ierrors - dev_stats.imissed;
     2021
     2022        stats->received_valid = true;
     2023        stats->received = dev_stats.ipackets + dev_stats.imissed;
     2024
    20322025}
    20332026
     
    21102103static struct libtrace_format_t dpdk = {
    21112104        "dpdk",
    2112         "$Id: format_dpdk.c 1805 2013-03-08 02:01:35Z salcock $",
     2105        "$Id$",
    21132106        TRACE_FORMAT_DPDK,
    2114         NULL,                   /* probe filename */
    2115         NULL,                               /* probe magic */
    2116         dpdk_init_input,            /* init_input */
    2117         dpdk_config_input,          /* config_input */
    2118         dpdk_start_input,           /* start_input */
    2119         dpdk_pause_input,           /* pause_input */
    2120         dpdk_init_output,           /* init_output */
    2121         NULL,                               /* config_output */
    2122         dpdk_start_output,          /* start_ouput */
    2123         dpdk_fin_input,             /* fin_input */
    2124         dpdk_fin_output,        /* fin_output */
    2125         dpdk_read_packet,           /* read_packet */
    2126         dpdk_prepare_packet,    /* prepare_packet */
    2127         dpdk_fin_packet,                                    /* fin_packet */
    2128         dpdk_write_packet,          /* write_packet */
    2129         dpdk_get_link_type,         /* get_link_type */
    2130         dpdk_get_direction,         /* get_direction */
    2131         dpdk_set_direction,         /* set_direction */
    2132         NULL,                               /* get_erf_timestamp */
    2133         dpdk_get_timeval,           /* get_timeval */
    2134         dpdk_get_timespec,          /* get_timespec */
    2135         NULL,                               /* get_seconds */
    2136         NULL,                               /* seek_erf */
    2137         NULL,                               /* seek_timeval */
    2138         NULL,                               /* seek_seconds */
    2139         dpdk_get_capture_length,/* get_capture_length */
    2140         dpdk_get_wire_length,   /* get_wire_length */
    2141         dpdk_get_framing_length,/* get_framing_length */
    2142         dpdk_set_capture_length,/* set_capture_length */
    2143         NULL,                               /* get_received_packets */
    2144         dpdk_get_filtered_packets,/* get_filtered_packets */
    2145         dpdk_get_dropped_packets,/* get_dropped_packets */
    2146         NULL,                   /* get_statistics */
    2147         NULL,                       /* get_fd */
    2148         dpdk_trace_event,               /* trace_event */
    2149         dpdk_help,              /* help */
    2150         NULL,                   /* next pointer */
    2151         {true, 8},              /* Live, NICs typically have 8 threads */
    2152         dpdk_pstart_input, /* pstart_input */
    2153         dpdk_pread_packets, /* pread_packets */
    2154         dpdk_pause_input, /* ppause */
    2155         dpdk_fin_input, /* p_fin */
    2156         dpdk_pconfig_input, /* pconfig_input */
    2157         dpdk_pregister_thread, /* pregister_thread */
    2158         dpdk_punregister_thread, /* punregister_thread */
    2159         NULL                            /* get thread stats */
     2107        NULL,                               /* probe filename */
     2108        NULL,                               /* probe magic */
     2109        dpdk_init_input,                    /* init_input */
     2110        dpdk_config_input,                  /* config_input */
     2111        dpdk_start_input,                   /* start_input */
     2112        dpdk_pause_input,                   /* pause_input */
     2113        dpdk_init_output,                   /* init_output */
     2114        NULL,                               /* config_output */
     2115        dpdk_start_output,                  /* start_ouput */
     2116        dpdk_fin_input,                     /* fin_input */
     2117        dpdk_fin_output,                    /* fin_output */
     2118        dpdk_read_packet,                   /* read_packet */
     2119        dpdk_prepare_packet,                /* prepare_packet */
     2120        dpdk_fin_packet,                    /* fin_packet */
     2121        dpdk_write_packet,                  /* write_packet */
     2122        dpdk_get_link_type,                 /* get_link_type */
     2123        dpdk_get_direction,                 /* get_direction */
     2124        dpdk_set_direction,                 /* set_direction */
     2125        NULL,                               /* get_erf_timestamp */
     2126        dpdk_get_timeval,                   /* get_timeval */
     2127        dpdk_get_timespec,                  /* get_timespec */
     2128        NULL,                               /* get_seconds */
     2129        NULL,                               /* seek_erf */
     2130        NULL,                               /* seek_timeval */
     2131        NULL,                               /* seek_seconds */
     2132        dpdk_get_capture_length,            /* get_capture_length */
     2133        dpdk_get_wire_length,               /* get_wire_length */
     2134        dpdk_get_framing_length,            /* get_framing_length */
     2135        dpdk_set_capture_length,            /* set_capture_length */
     2136        NULL,                               /* get_received_packets */
     2137        NULL,                               /* get_filtered_packets */
     2138        NULL,                               /* get_dropped_packets */
     2139        dpdk_get_stats,                     /* get_statistics */
     2140        NULL,                               /* get_fd */
     2141        dpdk_trace_event,                   /* trace_event */
     2142        dpdk_help,                          /* help */
     2143        NULL,                               /* next pointer */
     2144        {true, 8},                          /* Live, NICs typically have 8 threads */
     2145        dpdk_pstart_input,                  /* pstart_input */
     2146        dpdk_pread_packets,                 /* pread_packets */
     2147        dpdk_pause_input,                   /* ppause */
     2148        dpdk_fin_input,                     /* p_fin */
     2149        dpdk_pconfig_input,                 /* pconfig_input */
     2150        dpdk_pregister_thread,              /* pregister_thread */
     2151        dpdk_punregister_thread,            /* punregister_thread */
     2152        NULL                                /* get thread stats */
    21602153};
    21612154
Note: See TracChangeset for help on using the changeset viewer.