From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id A9DC7A046B for ; Tue, 25 Jun 2019 10:58:16 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 5CAAD1BB9A; Tue, 25 Jun 2019 10:58:15 +0200 (CEST) Received: from mail-ua1-f65.google.com (mail-ua1-f65.google.com [209.85.222.65]) by dpdk.org (Postfix) with ESMTP id 8A0411BB7D for ; Tue, 25 Jun 2019 10:58:13 +0200 (CEST) Received: by mail-ua1-f65.google.com with SMTP id f20so6794259ual.0 for ; Tue, 25 Jun 2019 01:58:13 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=MvyLy1XX1Nlf2/q9PlqDGjz68X89KqmSIS++sDnxTJ0=; b=rFTxShW1UMueFTg+kKGa1yzj8h3ML160G2oA5KyRpbYTgSj6v7XBZX9i/DLIvGPQwB YkZeayziUEQPzWQe1A5CfGBk90KFws4uFXmSW0sy5DDLv1svXxVsJRBp/4KNaMHQkgIP FaiqTiVTdpEyZNGhJxYhKEljYuz2kXCGO2xeScNSAbw9EgMspqkCBbY/O5Nes1EnU8ym s2DLN/KiXIA0+MdNu00fmMLnYOicbziIpT98zXagloVz6zIaiVf9PzJMRC71j/PU6PkL 061aluG5K5HNvQDLOBmWq04f6Z5ghYYgocJJ3QhZ3llXHYjRPF/FJfUEGahh7/Tf4fvV UYQg== X-Gm-Message-State: APjAAAUvbNIt2qQe3UE4z1urV7tLxWQZVbYDCaymWYA6A27VWNDeEj87 yXZb7aH9+FB0mUkCO+F4uye30mFqo5f5FR5hRIpCOg== X-Google-Smtp-Source: APXvYqypkhPXCSoqhh8qECUrip3Gpf1S1MaO7uJKGjVfdVSUHqCsCxb2sSnesDwNYmvznT0r9HV9QEo9G+xtPM+TMiU= X-Received: by 2002:ab0:45e3:: with SMTP id u90mr28963102uau.126.1561453092752; Tue, 25 Jun 2019 01:58:12 -0700 (PDT) MIME-Version: 1.0 References: <1560246526-264797-3-git-send-email-andy.pei@intel.com> <1560934174-408632-1-git-send-email-andy.pei@intel.com> <1560934174-408632-4-git-send-email-andy.pei@intel.com> <5941F446C088714A85408FA3132CFCBB01037924@SHSMSX105.ccr.corp.intel.com> <5941F446C088714A85408FA3132CFCBB01037A59@SHSMSX105.ccr.corp.intel.com> In-Reply-To: <5941F446C088714A85408FA3132CFCBB01037A59@SHSMSX105.ccr.corp.intel.com> From: David Marchand Date: Tue, 25 Jun 2019 10:58:01 +0200 Message-ID: To: "Pei, Andy" Cc: dev , "Xu, Rosen" Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] [PATCH v3 4/4] net/ipn3ke: implementation of statistics X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Tue, Jun 25, 2019 at 10:53 AM Pei, Andy wrote: > Hi, Marchand, > You can call me David :-). > > Reply in line. > > > > *From:* David Marchand [mailto:david.marchand@redhat.com] > *Sent:* Tuesday, June 25, 2019 3:17 PM > *To:* Pei, Andy > *Cc:* dev ; Xu, Rosen > *Subject:* Re: [dpdk-dev] [PATCH v3 4/4] net/ipn3ke: implementation of > statistics > > > > > > > > On Tue, Jun 25, 2019 at 9:10 AM Pei, Andy wrote: > > *From:* David Marchand [mailto:david.marchand@redhat.com] > *Sent:* Wednesday, June 19, 2019 5:06 PM > *To:* Pei, Andy > *Cc:* dev ; Xu, Rosen > *Subject:* Re: [dpdk-dev] [PATCH v3 4/4] net/ipn3ke: implementation of > statistics > > > > > > > > On Wed, Jun 19, 2019 at 10:56 AM Andy Pei wrote: > > This patch implemente statistics read and reset > function for ipn3ke. > > Fixes: 70d6b7f550f4 ("net/ipn3ke: add representor") > Cc: rosen.xu@intel.com > > Signed-off-by: Andy Pei > --- > drivers/net/ipn3ke/ipn3ke_representor.c | 3440 > ++++++++++++++++++++++++++++++- > 1 file changed, 3431 insertions(+), 9 deletions(-) > > diff --git a/drivers/net/ipn3ke/ipn3ke_representor.c > b/drivers/net/ipn3ke/ipn3ke_representor.c > index b166b8f..ed82ee7 100644 > --- a/drivers/net/ipn3ke/ipn3ke_representor.c > +++ b/drivers/net/ipn3ke/ipn3ke_representor.c > @@ -3,6 +3,7 @@ > */ > > #include > +#include > > #include > #include > @@ -297,31 +298,3452 @@ > { > } > > +/* Statistics collected by each port, VSI, VEB, and S-channel */ > +struct ipn3ke_rpst_eth_stats { > + uint64_t tx_bytes; /* gotc */ > + uint64_t tx_multicast; /* mptc */ > + uint64_t tx_broadcast; /* bptc */ > + uint64_t tx_unicast; /* uptc */ > + uint64_t tx_discards; /* tdpc */ > + uint64_t tx_errors; /* tepc */ > + uint64_t rx_bytes; /* gorc */ > + uint64_t rx_multicast; /* mprc */ > + uint64_t rx_broadcast; /* bprc */ > + uint64_t rx_unicast; /* uprc */ > + uint64_t rx_discards; /* rdpc */ > + uint64_t rx_unknown_protocol; /* rupp */ > +}; > + > +/* store statistics names and its offset in stats structure */ > +struct ipn3ke_rpst_xstats_name_offset { > + char name[RTE_ETH_XSTATS_NAME_SIZE]; > + unsigned int offset; > +}; > + > +static const struct ipn3ke_rpst_xstats_name_offset > +ipn3ke_rpst_stats_strings[] = { > + {"tx_multicast_packets", offsetof(struct > ipn3ke_rpst_eth_stats, > + tx_multicast)}, > + {"tx_broadcast_packets", offsetof(struct > ipn3ke_rpst_eth_stats, > + tx_broadcast)}, > + {"tx_unicast_packets", offsetof(struct > ipn3ke_rpst_eth_stats, > + tx_unicast)}, > + {"tx_dropped", offsetof(struct > ipn3ke_rpst_eth_stats, > + tx_discards)}, > + {"rx_multicast_packets", offsetof(struct > ipn3ke_rpst_eth_stats, > + rx_multicast)}, > + {"rx_broadcast_packets", offsetof(struct > ipn3ke_rpst_eth_stats, > + rx_broadcast)}, > + {"rx_unicast_packets", offsetof(struct > ipn3ke_rpst_eth_stats, > + rx_unicast)}, > + {"rx_dropped", offsetof(struct > ipn3ke_rpst_eth_stats, > + rx_discards)}, > + {"rx_unknown_protocol_packets", offsetof(struct > ipn3ke_rpst_eth_stats, > + > rx_unknown_protocol)}, > > > > Please see recent fixes on i40e and ice. > > tx_dropped -> tx_dropped_packets > > rx_dropped -> rx_dropped_packets > > > > > https://git.dpdk.org/next/dpdk-next-net-intel/commit/?id=e61e25233e9dfcd5386d83ab988790d9d5bd9400 > > > > > > >>>> Do this in v4. > > > > +}; > + > +#define IPN3KE_RPST_ETH_XSTATS_CNT (sizeof(ipn3ke_rpst_stats_strings) / \ > + sizeof(ipn3ke_rpst_stats_strings[0])) > + > +#define IPN3KE_RPST_PRIO_XSTATS_CNT 8 > + > +/* Statistics collected by the MAC */ > +struct ipn3ke_rpst_hw_port_stats { > + /* eth stats collected by the port */ > + struct ipn3ke_rpst_eth_stats eth; > + > + /* additional port specific stats */ > + uint64_t tx_dropped_link_down; > + uint64_t crc_errors; > + uint64_t illegal_bytes; > + uint64_t error_bytes; > + uint64_t mac_local_faults; > + uint64_t mac_remote_faults; > + uint64_t rx_length_errors; > + uint64_t link_xon_rx; > + uint64_t link_xoff_rx; > + uint64_t priority_xon_rx[IPN3KE_RPST_PRIO_XSTATS_CNT]; > + uint64_t priority_xoff_rx[IPN3KE_RPST_PRIO_XSTATS_CNT]; > + uint64_t link_xon_tx; > + uint64_t link_xoff_tx; > + uint64_t priority_xon_tx[IPN3KE_RPST_PRIO_XSTATS_CNT]; > + uint64_t priority_xoff_tx[IPN3KE_RPST_PRIO_XSTATS_CNT]; > + uint64_t priority_xon_2_xoff[IPN3KE_RPST_PRIO_XSTATS_CNT]; > + uint64_t rx_size_64; > + uint64_t rx_size_65_127; > + uint64_t rx_size_128_255; > + uint64_t rx_size_256_511; > + uint64_t rx_size_512_1023; > + uint64_t rx_size_1024_1518; > + uint64_t rx_size_big; > + uint64_t rx_undersize; > + uint64_t rx_fragments; > + uint64_t rx_oversize; > + uint64_t rx_jabber; > + uint64_t tx_size_64; > + uint64_t tx_size_65_127; > + uint64_t tx_size_128_255; > + uint64_t tx_size_256_511; > + uint64_t tx_size_512_1023; > + uint64_t tx_size_1024_1518; > + uint64_t tx_size_1519_to_max; > + uint64_t mac_short_packet_dropped; > + uint64_t checksum_error; > + /* flow director stats */ > + uint64_t fd_atr_match; > + uint64_t fd_sb_match; > + uint64_t fd_atr_tunnel_match; > + uint32_t fd_atr_status; > + uint32_t fd_sb_status; > + /* EEE LPI */ > + uint32_t tx_lpi_status; > + uint32_t rx_lpi_status; > + uint64_t tx_lpi_count; > + uint64_t rx_lpi_count; > +}; > + > +static const struct ipn3ke_rpst_xstats_name_offset > +ipn3ke_rpst_hw_port_strings[] = { > + {"tx_link_down_dropped", offsetof(struct > ipn3ke_rpst_hw_port_stats, > + tx_dropped_link_down)}, > + {"rx_crc_errors", offsetof(struct > ipn3ke_rpst_hw_port_stats, > + crc_errors)}, > + {"rx_illegal_byte_errors", offsetof(struct > ipn3ke_rpst_hw_port_stats, > + illegal_bytes)}, > + {"rx_error_bytes", offsetof(struct > ipn3ke_rpst_hw_port_stats, > + error_bytes)}, > + {"mac_local_errors", offsetof(struct > ipn3ke_rpst_hw_port_stats, > + mac_local_faults)}, > + {"mac_remote_errors", offsetof(struct > ipn3ke_rpst_hw_port_stats, > + mac_remote_faults)}, > + {"rx_length_errors", offsetof(struct > ipn3ke_rpst_hw_port_stats, > + rx_length_errors)}, > + {"tx_xon_packets", offsetof(struct > ipn3ke_rpst_hw_port_stats, > + link_xon_tx)}, > + {"rx_xon_packets", offsetof(struct > ipn3ke_rpst_hw_port_stats, > + link_xon_rx)}, > + {"tx_xoff_packets", offsetof(struct > ipn3ke_rpst_hw_port_stats, > + link_xoff_tx)}, > + {"rx_xoff_packets", offsetof(struct > ipn3ke_rpst_hw_port_stats, > + link_xoff_rx)}, > + {"rx_size_64_packets", offsetof(struct > ipn3ke_rpst_hw_port_stats, > + rx_size_64)}, > + {"rx_size_65_to_127_packets", offsetof(struct > ipn3ke_rpst_hw_port_stats, > + rx_size_65_127)}, > + {"rx_size_128_to_255_packets", > + offsetof(struct ipn3ke_rpst_hw_port_stats, > + rx_size_128_255)}, > + {"rx_size_256_to_511_packets", > + offsetof(struct ipn3ke_rpst_hw_port_stats, > + rx_size_256_511)}, > + {"rx_size_512_to_1023_packets", > + offsetof(struct ipn3ke_rpst_hw_port_stats, > + rx_size_512_1023)}, > + {"rx_size_1024_to_1518_packets", > + offsetof(struct ipn3ke_rpst_hw_port_stats, > + rx_size_1024_1518)}, > + {"rx_size_1519_to_max_packets", > + offsetof(struct ipn3ke_rpst_hw_port_stats, > + rx_size_big)}, > > > > Just a note, but those stats won't work with the current way ovs looks at > per size counters. > > > > >>>> Just keep this in the same way with I40E currently. > > > > > > Look at the i40e stats: > > {"rx_size_1523_to_max_packets", offsetof(struct i40e_hw_port_stats, > rx_size_big)}, > > > > Then look at ovs mapping on top of this: > > #define XSTAT_RX_1523_TO_MAX_PACKETS "rx_size_1523_to_max_packets" > > } else if (strcmp(XSTAT_RX_1523_TO_MAX_PACKETS, names[i].name) == > 0) { > stats->rx_1523_to_max_packets = xstats[i].value; > > > > Here, your stats name is "rx_size_1519_to_max_packets", ovs won't catch > those stats for ipn3ke. > > > > > > Maybe you don't want to support ovs with this nic and/or the hw behaves > this way and you can do nothing about it. > > But don't reply "same as i40e". > > > > Sorry, it seems I misunderstand your point. > > For ipn3ke, currently, the hardware does not support statistics for > packets with the length between 1024 and 1523, and packets with length over > 1523. > > Ipn3ke hardware now supports statistics for packets with the length > between 1024 and 1518, and packets with length over 1519. > > "same as i40e" here means that is it OK to leave this stats name the same > pattern with i40e? > Yes this is ok. I just wanted to make clear that we have a gap in OVS. ipn3ke is not the only hw/driver. We will probably need to do something either on dpdk or on ovs side at some point. -- David Marchand >