From: Srikanth Kaka <srikanth.k@oneconvergence.com>
To: Matan Azrad <matan@nvidia.com>,
Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Cc: dev@dpdk.org, Vag Singh <vag.singh@oneconvergence.com>,
Anand Thulasiram <avelu@juniper.net>,
Srikanth Kaka <srikanth.k@oneconvergence.com>
Subject: [dpdk-dev] [PATCH 14/19] net/mlx5: added stats support
Date: Mon, 27 Sep 2021 19:04:45 +0530 [thread overview]
Message-ID: <20210927133450.10653-15-srikanth.k@oneconvergence.com> (raw)
In-Reply-To: <20210927133450.10653-1-srikanth.k@oneconvergence.com>
Initialize device stats and fetch them using sysctl.
Removed ethtool traces
Signed-off-by: Srikanth Kaka <srikanth.k@oneconvergence.com>
Signed-off-by: Vag Singh <vag.singh@oneconvergence.com>
Signed-off-by: Anand Thulasiram <avelu@juniper.net>
---
drivers/net/mlx5/freebsd/mlx5_ethdev_os.c | 361 +++++-----------------
1 file changed, 84 insertions(+), 277 deletions(-)
diff --git a/drivers/net/mlx5/freebsd/mlx5_ethdev_os.c b/drivers/net/mlx5/freebsd/mlx5_ethdev_os.c
index b046b6e347..f1946fa9f6 100644
--- a/drivers/net/mlx5/freebsd/mlx5_ethdev_os.c
+++ b/drivers/net/mlx5/freebsd/mlx5_ethdev_os.c
@@ -15,11 +15,11 @@
#include <dirent.h>
#include <net/if.h>
#include <net/if_media.h>
+#include <sys/sysctl.h>
#include <sys/sockio.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <netinet/in.h>
-#include <linux/ethtool.h>
#include <fcntl.h>
#include <stdalign.h>
#include <sys/un.h>
@@ -44,90 +44,7 @@
#include "mlx5_rxtx.h"
#include "mlx5_utils.h"
-/* Supported speed values found in /usr/include/linux/ethtool.h */
-#ifndef HAVE_SUPPORTED_40000baseKR4_Full
-#define SUPPORTED_40000baseKR4_Full (1 << 23)
-#endif
-#ifndef HAVE_SUPPORTED_40000baseCR4_Full
-#define SUPPORTED_40000baseCR4_Full (1 << 24)
-#endif
-#ifndef HAVE_SUPPORTED_40000baseSR4_Full
-#define SUPPORTED_40000baseSR4_Full (1 << 25)
-#endif
-#ifndef HAVE_SUPPORTED_40000baseLR4_Full
-#define SUPPORTED_40000baseLR4_Full (1 << 26)
-#endif
-#ifndef HAVE_SUPPORTED_56000baseKR4_Full
-#define SUPPORTED_56000baseKR4_Full (1 << 27)
-#endif
-#ifndef HAVE_SUPPORTED_56000baseCR4_Full
-#define SUPPORTED_56000baseCR4_Full (1 << 28)
-#endif
-#ifndef HAVE_SUPPORTED_56000baseSR4_Full
-#define SUPPORTED_56000baseSR4_Full (1 << 29)
-#endif
-#ifndef HAVE_SUPPORTED_56000baseLR4_Full
-#define SUPPORTED_56000baseLR4_Full (1 << 30)
-#endif
-
-/* Add defines in case the running kernel is not the same as user headers. */
-#ifndef ETHTOOL_GLINKSETTINGS
-struct ethtool_link_settings {
- uint32_t cmd;
- uint32_t speed;
- uint8_t duplex;
- uint8_t port;
- uint8_t phy_address;
- uint8_t autoneg;
- uint8_t mdio_support;
- uint8_t eth_to_mdix;
- uint8_t eth_tp_mdix_ctrl;
- int8_t link_mode_masks_nwords;
- uint32_t reserved[8];
- uint32_t link_mode_masks[];
-};
-
-/* The kernel values can be found in /include/uapi/linux/ethtool.h */
-#define ETHTOOL_GLINKSETTINGS 0x0000004c
-#define ETHTOOL_LINK_MODE_1000baseT_Full_BIT 5
-#define ETHTOOL_LINK_MODE_Autoneg_BIT 6
-#define ETHTOOL_LINK_MODE_1000baseKX_Full_BIT 17
-#define ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT 18
-#define ETHTOOL_LINK_MODE_10000baseKR_Full_BIT 19
-#define ETHTOOL_LINK_MODE_10000baseR_FEC_BIT 20
-#define ETHTOOL_LINK_MODE_20000baseMLD2_Full_BIT 21
-#define ETHTOOL_LINK_MODE_20000baseKR2_Full_BIT 22
-#define ETHTOOL_LINK_MODE_40000baseKR4_Full_BIT 23
-#define ETHTOOL_LINK_MODE_40000baseCR4_Full_BIT 24
-#define ETHTOOL_LINK_MODE_40000baseSR4_Full_BIT 25
-#define ETHTOOL_LINK_MODE_40000baseLR4_Full_BIT 26
-#define ETHTOOL_LINK_MODE_56000baseKR4_Full_BIT 27
-#define ETHTOOL_LINK_MODE_56000baseCR4_Full_BIT 28
-#define ETHTOOL_LINK_MODE_56000baseSR4_Full_BIT 29
-#define ETHTOOL_LINK_MODE_56000baseLR4_Full_BIT 30
-#endif
-#ifndef HAVE_ETHTOOL_LINK_MODE_25G
-#define ETHTOOL_LINK_MODE_25000baseCR_Full_BIT 31
-#define ETHTOOL_LINK_MODE_25000baseKR_Full_BIT 32
-#define ETHTOOL_LINK_MODE_25000baseSR_Full_BIT 33
-#endif
-#ifndef HAVE_ETHTOOL_LINK_MODE_50G
-#define ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT 34
-#define ETHTOOL_LINK_MODE_50000baseKR2_Full_BIT 35
-#endif
-#ifndef HAVE_ETHTOOL_LINK_MODE_100G
-#define ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT 36
-#define ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT 37
-#define ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT 38
-#define ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT 39
-#endif
-#ifndef HAVE_ETHTOOL_LINK_MODE_200G
-#define ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT 62
-#define ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT 63
-#define ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT 0 /* 64 - 64 */
-#define ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT 1 /* 65 - 64 */
-#define ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT 2 /* 66 - 64 */
-#endif
+static unsigned int xstats_n;
/**
* Get interface name from private structure.
@@ -1114,44 +1031,31 @@ int mlx5_get_module_eeprom(struct rte_eth_dev *dev,
* PF index in case of bonding device, -1 otherwise
* @param[out] stats
* Counters table output buffer.
- *
- * @return
- * 0 on success and stats is filled, negative errno value otherwise and
- * rte_errno is set.
*/
-static int
-_mlx5_os_read_dev_counters(struct rte_eth_dev *dev, int pf, uint64_t *stats)
+static void
+_mlx5_os_read_dev_counters(struct rte_eth_dev *dev, uint64_t *stats)
{
struct mlx5_priv *priv = dev->data->dev_private;
struct mlx5_xstats_ctrl *xstats_ctrl = &priv->xstats_ctrl;
+ char stat_key[RTE_ETH_XSTATS_NAME_SIZE + 16];
unsigned int i;
- struct ifreq ifr;
- unsigned int stats_sz = xstats_ctrl->stats_n * sizeof(uint64_t);
- unsigned char et_stat_buf[sizeof(struct ethtool_stats) + stats_sz];
- struct ethtool_stats *et_stats = (struct ethtool_stats *)et_stat_buf;
- int ret;
+ size_t len = sizeof(uint64_t);
+ uint64_t val;
+ int ibvindex, ret;
+
+ ibvindex = mlx5_get_ibvindex(priv->sh->ibdev_path);
- et_stats->cmd = ETHTOOL_GSTATS;
- et_stats->n_stats = xstats_ctrl->stats_n;
- ifr.ifr_data = (caddr_t)et_stats;
- if (pf >= 0)
- ret = mlx5_ifreq_by_ifname(priv->sh->bond.ports[pf].ifname,
- SIOCETHTOOL, &ifr);
- else
- ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr);
- if (ret) {
- DRV_LOG(WARNING,
- "port %u unable to read statistic values from device",
- dev->data->port_id);
- return ret;
- }
for (i = 0; i != xstats_ctrl->mlx5_stats_n; ++i) {
- if (xstats_ctrl->info[i].dev)
+ snprintf(stat_key, sizeof(stat_key), "dev.mce.%d.%s",
+ ibvindex, xstats_ctrl->info[i].ctr_name);
+ ret = sysctlbyname(stat_key, &val, &len, NULL, 0);
+ if (ret == -1) {
+ DRV_LOG(WARNING, "port %u failed to get statistics: %s",
+ dev->data->port_id, strerror(errno));
continue;
- stats[i] += (uint64_t)
- et_stats->data[xstats_ctrl->dev_table_idx[i]];
+ }
+ stats[i] += val;
}
- return 0;
}
/**
@@ -1174,17 +1078,8 @@ mlx5_os_read_dev_counters(struct rte_eth_dev *dev, uint64_t *stats)
int ret = 0, i;
memset(stats, 0, sizeof(*stats) * xstats_ctrl->mlx5_stats_n);
- /* Read ifreq counters. */
- if (priv->master && priv->pf_bond >= 0) {
- /* Sum xstats from bonding device member ports. */
- for (i = 0; i < priv->sh->bond.n_port; i++) {
- ret = _mlx5_os_read_dev_counters(dev, i, stats);
- if (ret)
- return ret;
- }
- } else {
- ret = _mlx5_os_read_dev_counters(dev, -1, stats);
- }
+ _mlx5_os_read_dev_counters(dev, stats);
+
/* Read IB counters. */
for (i = 0; i != xstats_ctrl->mlx5_stats_n; ++i) {
if (!xstats_ctrl->info[i].dev)
@@ -1201,158 +1096,129 @@ mlx5_os_read_dev_counters(struct rte_eth_dev *dev, uint64_t *stats)
}
/**
- * Query the number of statistics provided by ETHTOOL.
+ * Query the number of statistics.
*
* @param dev
* Pointer to Ethernet device.
*
* @return
- * Number of statistics on success, negative errno value otherwise and
- * rte_errno is set.
+ * Number of statistics on success.
*/
int
mlx5_os_get_stats_n(struct rte_eth_dev *dev)
{
- struct mlx5_priv *priv = dev->data->dev_private;
- struct ethtool_drvinfo drvinfo;
- struct ifreq ifr;
- int ret;
-
- drvinfo.cmd = ETHTOOL_GDRVINFO;
- ifr.ifr_data = (caddr_t)&drvinfo;
- if (priv->master && priv->pf_bond >= 0)
- /* Bonding PF. */
- ret = mlx5_ifreq_by_ifname(priv->sh->bond.ports[0].ifname,
- SIOCETHTOOL, &ifr);
- else
- ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr);
- if (ret) {
- DRV_LOG(WARNING, "port %u unable to query number of statistics",
- dev->data->port_id);
- return ret;
- }
- return drvinfo.n_stats;
+ RTE_SET_USED(dev);
+ return xstats_n;
}
static const struct mlx5_counter_ctrl mlx5_counters_init[] = {
{
- .dpdk_name = "rx_unicast_bytes",
- .ctr_name = "rx_vport_unicast_bytes",
+ .dpdk_name = "rx_port_unicast_bytes",
+ .ctr_name = "vstats.rx_unicast_bytes",
},
{
- .dpdk_name = "rx_multicast_bytes",
- .ctr_name = "rx_vport_multicast_bytes",
+ .dpdk_name = "rx_port_multicast_bytes",
+ .ctr_name = "vstats.rx_multicast_bytes",
},
{
- .dpdk_name = "rx_broadcast_bytes",
- .ctr_name = "rx_vport_broadcast_bytes",
+ .dpdk_name = "rx_port_broadcast_bytes",
+ .ctr_name = "vstats.rx_broadcast_bytes",
},
{
- .dpdk_name = "rx_unicast_packets",
- .ctr_name = "rx_vport_unicast_packets",
+ .dpdk_name = "rx_port_unicast_packets",
+ .ctr_name = "vstats.rx_unicast_packets",
},
{
- .dpdk_name = "rx_multicast_packets",
- .ctr_name = "rx_vport_multicast_packets",
+ .dpdk_name = "rx_port_multicast_packets",
+ .ctr_name = "vstats.rx_multicast_packets",
},
{
- .dpdk_name = "rx_broadcast_packets",
- .ctr_name = "rx_vport_broadcast_packets",
+ .dpdk_name = "rx_port_broadcast_packets",
+ .ctr_name = "vstats.rx_broadcast_packets",
},
{
- .dpdk_name = "tx_unicast_bytes",
- .ctr_name = "tx_vport_unicast_bytes",
+ .dpdk_name = "tx_port_unicast_bytes",
+ .ctr_name = "vstats.tx_unicast_bytes",
},
{
- .dpdk_name = "tx_multicast_bytes",
- .ctr_name = "tx_vport_multicast_bytes",
+ .dpdk_name = "tx_port_multicast_bytes",
+ .ctr_name = "vstats.tx_multicast_bytes",
},
{
- .dpdk_name = "tx_broadcast_bytes",
- .ctr_name = "tx_vport_broadcast_bytes",
+ .dpdk_name = "tx_port_broadcast_bytes",
+ .ctr_name = "vstats.tx_broadcast_bytes",
},
{
- .dpdk_name = "tx_unicast_packets",
- .ctr_name = "tx_vport_unicast_packets",
+ .dpdk_name = "tx_port_unicast_packets",
+ .ctr_name = "vstats.tx_unicast_packets",
},
{
- .dpdk_name = "tx_multicast_packets",
- .ctr_name = "tx_vport_multicast_packets",
+ .dpdk_name = "tx_port_multicast_packets",
+ .ctr_name = "vstats.tx_multicast_packets",
},
{
- .dpdk_name = "tx_broadcast_packets",
- .ctr_name = "tx_vport_broadcast_packets",
+ .dpdk_name = "tx_port_broadcast_packets",
+ .ctr_name = "vstats.tx_broadcast_packets",
},
{
- .dpdk_name = "rx_wqe_errors",
- .ctr_name = "rx_wqe_err",
+ .dpdk_name = "rx_wqe_err",
+ .ctr_name = "vstats.rx_wqe_err",
},
{
- .dpdk_name = "rx_phy_crc_errors",
- .ctr_name = "rx_crc_errors_phy",
+ .dpdk_name = "rx_crc_align_errors",
+ .ctr_name = "pstats.crc_align_errors",
},
{
- .dpdk_name = "rx_phy_in_range_len_errors",
- .ctr_name = "rx_in_range_len_errors_phy",
+ .dpdk_name = "rx_in_range_len_errors",
+ .ctr_name = "pstats.in_range_len_errors",
},
{
- .dpdk_name = "rx_phy_symbol_errors",
- .ctr_name = "rx_symbol_err_phy",
+ .dpdk_name = "rx_symbol_err",
+ .ctr_name = "pstats.symbol_err",
},
{
- .dpdk_name = "tx_phy_errors",
- .ctr_name = "tx_errors_phy",
+ .dpdk_name = "tx_errors_packets",
+ .ctr_name = "vstats.tx_error_packets",
},
{
.dpdk_name = "rx_out_of_buffer",
- .ctr_name = "out_of_buffer",
- .dev = 1,
- },
- {
- .dpdk_name = "tx_phy_packets",
- .ctr_name = "tx_packets_phy",
- },
- {
- .dpdk_name = "rx_phy_packets",
- .ctr_name = "rx_packets_phy",
+ .ctr_name = "vstats.rx_out_of_buffer",
},
{
- .dpdk_name = "tx_phy_discard_packets",
- .ctr_name = "tx_discards_phy",
+ .dpdk_name = "lro_bytes",
+ .ctr_name = "vstats.lro_bytes",
},
{
- .dpdk_name = "rx_phy_discard_packets",
- .ctr_name = "rx_discards_phy",
+ .dpdk_name = "lro_packets",
+ .ctr_name = "vstats.lro_packets",
},
{
- .dpdk_name = "tx_phy_bytes",
- .ctr_name = "tx_bytes_phy",
+ .dpdk_name = "tso_bytes",
+ .ctr_name = "vstats.tso_bytes",
},
{
- .dpdk_name = "rx_phy_bytes",
- .ctr_name = "rx_bytes_phy",
+ .dpdk_name = "tso_packets",
+ .ctr_name = "vstats.tso_packets",
},
/* Representor only */
{
- .dpdk_name = "rx_vport_packets",
- .ctr_name = "vport_rx_packets",
+ .dpdk_name = "rx_packets",
+ .ctr_name = "vstats.rx_packets",
},
{
- .dpdk_name = "rx_vport_bytes",
- .ctr_name = "vport_rx_bytes",
+ .dpdk_name = "rx_bytes",
+ .ctr_name = "vstats.rx_bytes",
},
{
- .dpdk_name = "tx_vport_packets",
- .ctr_name = "vport_tx_packets",
+ .dpdk_name = "tx_packets",
+ .ctr_name = "vstats.tx_packets",
},
{
- .dpdk_name = "tx_vport_bytes",
- .ctr_name = "vport_tx_bytes",
+ .dpdk_name = "tx_bytes",
+ .ctr_name = "vstats.tx_bytes",
},
};
-static const unsigned int xstats_n = RTE_DIM(mlx5_counters_init);
-
/**
* Init the structures to read device counters.
*
@@ -1365,83 +1231,24 @@ mlx5_os_stats_init(struct rte_eth_dev *dev)
struct mlx5_priv *priv = dev->data->dev_private;
struct mlx5_xstats_ctrl *xstats_ctrl = &priv->xstats_ctrl;
struct mlx5_stats_ctrl *stats_ctrl = &priv->stats_ctrl;
- unsigned int i;
- unsigned int j;
- struct ifreq ifr;
- struct ethtool_gstrings *strings = NULL;
- unsigned int dev_stats_n;
- unsigned int str_sz;
- int ret;
- /* So that it won't aggregate for each init. */
+ xstats_n = RTE_DIM(mlx5_counters_init);
xstats_ctrl->mlx5_stats_n = 0;
- ret = mlx5_os_get_stats_n(dev);
- if (ret < 0) {
- DRV_LOG(WARNING, "port %u no extended statistics available",
- dev->data->port_id);
- return;
- }
- dev_stats_n = ret;
- /* Allocate memory to grab stat names and values. */
- str_sz = dev_stats_n * ETH_GSTRING_LEN;
- strings = (struct ethtool_gstrings *)
- mlx5_malloc(0, str_sz + sizeof(struct ethtool_gstrings), 0,
- SOCKET_ID_ANY);
- if (!strings) {
- DRV_LOG(WARNING, "port %u unable to allocate memory for xstats",
- dev->data->port_id);
- return;
- }
- strings->cmd = ETHTOOL_GSTRINGS;
- strings->string_set = ETH_SS_STATS;
- strings->len = dev_stats_n;
- ifr.ifr_data = (caddr_t)strings;
- if (priv->master && priv->pf_bond >= 0)
- /* Bonding master. */
- ret = mlx5_ifreq_by_ifname(priv->sh->bond.ports[0].ifname,
- SIOCETHTOOL, &ifr);
- else
- ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr);
- if (ret) {
- DRV_LOG(WARNING, "port %u unable to get statistic names",
- dev->data->port_id);
- goto free;
- }
- for (i = 0; i != dev_stats_n; ++i) {
- const char *curr_string = (const char *)
- &strings->data[i * ETH_GSTRING_LEN];
-
- for (j = 0; j != xstats_n; ++j) {
- if (!strcmp(mlx5_counters_init[j].ctr_name,
- curr_string)) {
- unsigned int idx = xstats_ctrl->mlx5_stats_n++;
-
- xstats_ctrl->dev_table_idx[idx] = i;
- xstats_ctrl->info[idx] = mlx5_counters_init[j];
- break;
- }
- }
- }
- /* Add dev counters. */
- for (i = 0; i != xstats_n; ++i) {
- if (mlx5_counters_init[i].dev) {
- unsigned int idx = xstats_ctrl->mlx5_stats_n++;
- xstats_ctrl->info[idx] = mlx5_counters_init[i];
- xstats_ctrl->hw_stats[idx] = 0;
- }
+ for (unsigned int i = 0; i != xstats_n; ++i) {
+ unsigned int idx = xstats_ctrl->mlx5_stats_n++;
+
+ xstats_ctrl->dev_table_idx[idx] = i;
+ xstats_ctrl->info[idx] = mlx5_counters_init[i];
}
- MLX5_ASSERT(xstats_ctrl->mlx5_stats_n <= MLX5_MAX_XSTATS);
- xstats_ctrl->stats_n = dev_stats_n;
- /* Copy to base at first time. */
- ret = mlx5_os_read_dev_counters(dev, xstats_ctrl->base);
+ xstats_ctrl->stats_n = xstats_n;
+ int ret = mlx5_os_read_dev_counters(dev, xstats_ctrl->base);
+
if (ret)
DRV_LOG(ERR, "port %u cannot read device counters: %s",
dev->data->port_id, strerror(rte_errno));
mlx5_os_read_dev_stat(priv, "out_of_buffer", &stats_ctrl->imissed_base);
stats_ctrl->imissed = 0;
-free:
- mlx5_free(strings);
}
/**
--
2.30.2
next prev parent reply other threads:[~2021-09-27 14:59 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-27 13:34 [dpdk-dev] [PATCH 00/19] MLX5 FreeBSD support Srikanth Kaka
2021-09-27 13:34 ` [dpdk-dev] [PATCH 01/19] common/mlx5: stub for FreeBSD Srikanth Kaka
2021-09-27 13:34 ` [dpdk-dev] [PATCH 02/19] net/mlx5: " Srikanth Kaka
2021-09-27 13:34 ` [dpdk-dev] [PATCH 03/19] common/mlx5: disabling auxiliary bus support Srikanth Kaka
2021-09-27 13:34 ` [dpdk-dev] [PATCH 04/19] net/mlx5: " Srikanth Kaka
2021-09-27 13:34 ` [dpdk-dev] [PATCH 05/19] net/mlx5: modified PCI probe to work on FreeBSD Srikanth Kaka
2021-09-27 13:34 ` [dpdk-dev] [PATCH 06/19] common/mlx5: define PF_INET socket Srikanth Kaka
2021-09-27 13:34 ` [dpdk-dev] [PATCH 07/19] net/mlx5: use the newly defined INET socket Srikanth Kaka
2021-09-27 13:34 ` [dpdk-dev] [PATCH 08/19] common/mlx5: derive PCI addr in FreeBSD Srikanth Kaka
2021-09-27 13:34 ` [dpdk-dev] [PATCH 09/19] common/mlx5: get interface name Srikanth Kaka
2021-09-27 13:34 ` [dpdk-dev] [PATCH 10/19] net/mlx5: fix socket MAC request Srikanth Kaka
2021-09-27 13:34 ` [dpdk-dev] [PATCH 11/19] net/mlx5: removing port representator support Srikanth Kaka
2021-09-27 13:34 ` [dpdk-dev] [PATCH 12/19] net/mlx5: Added procedure to detect link state Srikanth Kaka
2021-09-27 13:34 ` [dpdk-dev] [PATCH 13/19] net/mlx5: added placeholder for VLAN vmwa Srikanth Kaka
2021-09-27 13:34 ` Srikanth Kaka [this message]
2021-09-27 13:34 ` [dpdk-dev] [PATCH 15/19] net/mlx5: making flow control DPDK callback invalid Srikanth Kaka
2021-09-27 13:34 ` [dpdk-dev] [PATCH 16/19] net/mlx5: making module DPDK callbacks invalid Srikanth Kaka
2021-09-27 13:34 ` [dpdk-dev] [PATCH 17/19] common/mlx5: fixed missing dependency in mlx5_glue.h Srikanth Kaka
2021-09-27 13:34 ` [dpdk-dev] [PATCH 18/19] net/mlx5: fixed compilation warnings Srikanth Kaka
2021-09-27 13:34 ` [dpdk-dev] [PATCH 19/19] mlx5: Added meson support for FreeBSD Srikanth Kaka
2021-09-29 12:20 ` [dpdk-dev] [PATCH 00/19] MLX5 FreeBSD support Thomas Monjalon
2021-09-29 15:56 ` Srikanth K
2021-09-29 16:20 ` Thomas Monjalon
2021-09-30 16:27 ` Srikanth K
2021-09-30 16:55 ` Thomas Monjalon
2021-10-01 11:35 ` Srikanth K
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210927133450.10653-15-srikanth.k@oneconvergence.com \
--to=srikanth.k@oneconvergence.com \
--cc=avelu@juniper.net \
--cc=dev@dpdk.org \
--cc=matan@nvidia.com \
--cc=vag.singh@oneconvergence.com \
--cc=viacheslavo@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).