From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 536F25963 for ; Mon, 8 Jun 2015 17:01:25 +0200 (CEST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga101.fm.intel.com with ESMTP; 08 Jun 2015 08:00:27 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.13,574,1427785200"; d="scan'208";a="743024396" Received: from unknown (HELO Sent) ([10.217.248.178]) by orsmga002.jf.intel.com with SMTP; 08 Jun 2015 08:00:24 -0700 Received: by Sent (sSMTP sendmail emulation); Mon, 08 Jun 2015 17:00:23 +0116 From: Michal Jastrzebski To: dev@dpdk.org Date: Mon, 8 Jun 2015 16:59:52 +0200 Message-Id: <1433775616-6896-2-git-send-email-michalx.k.jastrzebski@intel.com> X-Mailer: git-send-email 2.1.1 In-Reply-To: <1433775616-6896-1-git-send-email-michalx.k.jastrzebski@intel.com> References: <1433775616-6896-1-git-send-email-michalx.k.jastrzebski@intel.com> Subject: [dpdk-dev] [PATCH v4 01/13] port: added structures for port stats and config option X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Jun 2015 15:01:26 -0000 From: Maciej Gajdzica Added common data structures for port statistics. Added config option to enable stats collecting. Signed-off-by: Maciej Gajdzica --- config/common_bsdapp | 1 + config/common_linuxapp | 1 + lib/librte_port/rte_port.h | 60 ++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 57 insertions(+), 5 deletions(-) diff --git a/config/common_bsdapp b/config/common_bsdapp index c2374c0..1d26956 100644 --- a/config/common_bsdapp +++ b/config/common_bsdapp @@ -383,6 +383,7 @@ CONFIG_RTE_LIBRTE_REORDER=y # Compile librte_port # CONFIG_RTE_LIBRTE_PORT=y +RTE_PORT_STATS_COLLECT=n # # Compile librte_table diff --git a/config/common_linuxapp b/config/common_linuxapp index 0078dc9..5105b25 100644 --- a/config/common_linuxapp +++ b/config/common_linuxapp @@ -390,6 +390,7 @@ CONFIG_RTE_LIBRTE_REORDER=y # Compile librte_port # CONFIG_RTE_LIBRTE_PORT=y +RTE_PORT_STATS_COLLECT=n # # Compile librte_table diff --git a/lib/librte_port/rte_port.h b/lib/librte_port/rte_port.h index d84e5a1..ab433e5 100644 --- a/lib/librte_port/rte_port.h +++ b/lib/librte_port/rte_port.h @@ -81,6 +81,12 @@ extern "C" { Cannot be changed. */ #define RTE_PORT_IN_BURST_SIZE_MAX 64 +/** Input port statistics */ +struct rte_port_in_stats { + uint64_t n_pkts_in; + uint64_t n_pkts_drop; +}; + /** * Input port create * @@ -120,17 +126,42 @@ typedef int (*rte_port_in_op_rx)( struct rte_mbuf **pkts, uint32_t n_pkts); +/** + * Input port stats get + * + * @param port + * Handle to output port instance + * @param stats + * Handle to port_in stats struct to copy data + * @param clear + * Flag indicating that stats should be cleared after read + * + * @return + * Error code or 0 on success. + */ +typedef int (*rte_port_in_op_stats_read)( + void *port, + struct rte_port_in_stats *stats, + int clear); + /** Input port interface defining the input port operation */ struct rte_port_in_ops { rte_port_in_op_create f_create; /**< Create */ rte_port_in_op_free f_free; /**< Free */ rte_port_in_op_rx f_rx; /**< Packet RX (packet burst) */ + rte_port_in_op_stats_read f_stats; /**< Stats */ }; /* * Port OUT * */ +/** Output port statistics */ +struct rte_port_out_stats { + uint64_t n_pkts_in; + uint64_t n_pkts_drop; +}; + /** * Output port create * @@ -197,13 +228,32 @@ typedef int (*rte_port_out_op_tx_bulk)( */ typedef int (*rte_port_out_op_flush)(void *port); +/** + * Output port stats read + * + * @param port + * Handle to output port instance + * @param stats + * Handle to port_out stats struct to copy data + * @param clear + * Flag indicating that stats should be cleared after read + * + * @return + * Error code or 0 on success. + */ +typedef int (*rte_port_out_op_stats_read)( + void *port, + struct rte_port_out_stats *stats, + int clear); + /** Output port interface defining the output port operation */ struct rte_port_out_ops { - rte_port_out_op_create f_create; /**< Create */ - rte_port_out_op_free f_free; /**< Free */ - rte_port_out_op_tx f_tx; /**< Packet TX (single packet) */ - rte_port_out_op_tx_bulk f_tx_bulk; /**< Packet TX (packet burst) */ - rte_port_out_op_flush f_flush; /**< Flush */ + rte_port_out_op_create f_create; /**< Create */ + rte_port_out_op_free f_free; /**< Free */ + rte_port_out_op_tx f_tx; /**< Packet TX (single packet) */ + rte_port_out_op_tx_bulk f_tx_bulk; /**< Packet TX (packet burst) */ + rte_port_out_op_flush f_flush; /**< Flush */ + rte_port_out_op_stats_read f_stats; /**< Stats */ }; #ifdef __cplusplus -- 1.7.9.5