DPDK patches and discussions
 help / color / mirror / Atom feed
From: Ophir Munk <ophirmu@nvidia.com>
To: dev@dpdk.org, Raslan Darawsheh <rasland@nvidia.com>
Cc: Ophir Munk <ophirmu@nvidia.com>, Matan Azrad <matan@nvidia.com>,
	Tal Shnaiderman <talshn@nvidia.com>,
	Thomas Monjalon <thomas@monjalon.net>
Subject: [dpdk-dev] [PATCH v1 58/72] net/mlx5/windws: spawn eth devices
Date: Tue, 27 Oct 2020 23:23:21 +0000	[thread overview]
Message-ID: <20201027232335.31427-59-ophirmu@nvidia.com> (raw)
In-Reply-To: <20201027232335.31427-1-ophirmu@nvidia.com>

This commit implements mlx5_dev_spawn() API which allocates an eth
device (struct rte_eth_dev) for each PCI device. When working with
representors virtual functions (as in Linux), one PCI device may spawn
several eth devices: the master device for the main physical function
(PF) and several representors for the virtual functions (VFs).  However,
currently Windows does not work in switch dev mode, therefore, no VFs
are created and no representors are spawned. In this case one eth device
is created per one PCI main port.  In addition to device creation - the
device configuration must be correctly set. The device arguments
(devargs - set by the user) are parsed but they may be overridden by
Windows limitations or hardware configurations. Some associated network
parameters are stored in eth device (e.g. ifindex, MAC address, MTU) and
some callback (e.g. burst functions) are set.

Signed-off-by: Ophir Munk <ophirmu@nvidia.com>
---
 drivers/common/mlx5/windows/mlx5_win_defs.h |   6 +
 drivers/net/mlx5/windows/mlx5_os.c          | 481 +++++++++++++++++++++++++++-
 2 files changed, 482 insertions(+), 5 deletions(-)

diff --git a/drivers/common/mlx5/windows/mlx5_win_defs.h b/drivers/common/mlx5/windows/mlx5_win_defs.h
index e9569e4..d8f2099 100644
--- a/drivers/common/mlx5/windows/mlx5_win_defs.h
+++ b/drivers/common/mlx5/windows/mlx5_win_defs.h
@@ -163,4 +163,10 @@ struct mlx5_wqe_data_seg {
 	rte_be32_t		lkey;
 	rte_be64_t		addr;
 };
+
+#define MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP	(1 << 4)
+#define IBV_DEVICE_RAW_IP_CSUM			(1 << 26)
+#define IBV_RAW_PACKET_CAP_CVLAN_STRIPPING	(1 << 0)
+#define IBV_RAW_PACKET_CAP_SCATTER_FCS		(1 << 1)
+#define IBV_QPT_RAW_PACKET			8
 #endif /* __MLX5_WIN_DEFS_H__ */
diff --git a/drivers/net/mlx5/windows/mlx5_os.c b/drivers/net/mlx5/windows/mlx5_os.c
index a3e9a6a..f9b469f 100644
--- a/drivers/net/mlx5/windows/mlx5_os.c
+++ b/drivers/net/mlx5/windows/mlx5_os.c
@@ -26,6 +26,9 @@
 #include "mlx5_autoconf.h"
 #include "mlx5_mr.h"
 #include "mlx5_flow.h"
+#include "mlx5_devx.h"
+
+#define MLX5_TAGS_HLIST_ARRAY_SIZE 8192
 
 static const char *MZ_MLX5_PMD_SHARED_DATA = "mlx5_pmd_shared_data";
 
@@ -158,6 +161,43 @@ mlx5_os_get_dev_attr(void *ctx, struct mlx5_dev_attr *device_attr)
 }
 
 /**
+ * Initialize DR related data within private structure.
+ * Routine checks the reference counter and does actual
+ * resources creation/initialization only if counter is zero.
+ *
+ * @param[in] priv
+ *   Pointer to the private device data structure.
+ *
+ * @return
+ *   Zero on success, positive error code otherwise.
+ */
+static int
+mlx5_alloc_shared_dr(struct mlx5_priv *priv)
+{
+	struct mlx5_dev_ctx_shared *sh = priv->sh;
+	char s[MLX5_HLIST_NAMESIZE];
+	int err = 0;
+
+	if (!sh->flow_tbls)
+		err = mlx5_alloc_table_hash_list(priv);
+	else
+		DRV_LOG(DEBUG, "sh->flow_tbls[%p] already created, reuse\n",
+			(void *)sh->flow_tbls);
+	return err;
+}
+/**
+ * Destroy DR related data within private structure.
+ *
+ * @param[in] priv
+ *   Pointer to the private device data structure.
+ */
+void
+mlx5_os_free_shared_dr(struct mlx5_priv *priv)
+{
+	mlx5_free_table_hash_list(priv);
+}
+
+/**
  * Set the completion channel file descriptor interrupt as non-blocking.
  * Currently it has no support under Windows.
  *
@@ -221,6 +261,45 @@ mlx5_os_open_device(const struct mlx5_dev_spawn_data *spawn,
 }
 
 /**
+ * DV flow counter mode detect and config.
+ *
+ * @param dev
+ *   Pointer to rte_eth_dev structure.
+ *
+ */
+static void
+mlx5_flow_counter_mode_config(struct rte_eth_dev *dev __rte_unused)
+{
+#ifdef HAVE_IBV_FLOW_DV_SUPPORT
+	struct mlx5_priv *priv = dev->data->dev_private;
+	struct mlx5_dev_ctx_shared *sh = priv->sh;
+	bool fallback;
+
+#ifndef HAVE_IBV_DEVX_ASYNC
+	fallback = true;
+#else
+	fallback = false;
+	if (!priv->config.devx || !priv->config.dv_flow_en ||
+	    !priv->config.hca_attr.flow_counters_dump ||
+	    !(priv->config.hca_attr.flow_counter_bulk_alloc_bitmap & 0x4) ||
+	    (mlx5_flow_dv_discover_counter_offset_support(dev) == -ENOTSUP))
+		fallback = true;
+#endif
+	if (fallback)
+		DRV_LOG(INFO, "Use fall-back DV counter management. Flow "
+			"counter dump:%d, bulk_alloc_bitmap:0x%hhx.",
+			priv->config.hca_attr.flow_counters_dump,
+			priv->config.hca_attr.flow_counter_bulk_alloc_bitmap);
+	/* Initialize fallback mode only on the port initializes sh. */
+	if (sh->refcnt == 1)
+		sh->cmng.counter_fallback = fallback;
+	else if (fallback != sh->cmng.counter_fallback)
+		DRV_LOG(WARNING, "Port %d in sh has different fallback mode "
+			"with others:%d.", PORT_ID(priv), fallback);
+#endif
+}
+
+/**
  * Spawn an Ethernet device from Verbs information.
  *
  * @param dpdk_dev
@@ -231,17 +310,409 @@ mlx5_os_open_device(const struct mlx5_dev_spawn_data *spawn,
  *   Device configuration parameters.
  *
  * @return
- *   NULL pointer. Operation is not supported and rte_errno is set to ENOTSUP.
+ *   A valid Ethernet device object on success, NULL otherwise and rte_errno
+ *   is set. The following errors are defined:
+ *
+ *   EEXIST: device is already spawned
  */
 static struct rte_eth_dev *
 mlx5_dev_spawn(struct rte_device *dpdk_dev,
 	       struct mlx5_dev_spawn_data *spawn,
 	       struct mlx5_dev_config *config)
 {
-	(void)dpdk_dev;
-	(void)spawn;
-	(void)config;
-	rte_errno = -ENOTSUP;
+	const struct mlx5_switch_info *switch_info = &spawn->info;
+	struct mlx5_dev_ctx_shared *sh = NULL;
+	struct mlx5_dev_attr device_attr;
+	struct rte_eth_dev *eth_dev = NULL;
+	struct mlx5_priv *priv = NULL;
+	int err = 0;
+	unsigned int cqe_comp;
+	unsigned int cqe_pad = 0;
+	struct rte_ether_addr mac;
+	char name[RTE_ETH_NAME_MAX_LEN];
+	int own_domain_id = 0;
+	uint16_t port_id;
+
+	/* Build device name. */
+	strlcpy(name, dpdk_dev->name, sizeof(name));
+	/* check if the device is already spawned */
+	if (rte_eth_dev_get_port_by_name(name, &port_id) == 0) {
+		rte_errno = EEXIST;
+		return NULL;
+	}
+	DRV_LOG(DEBUG, "naming Ethernet device \"%s\"", name);
+	/*
+	 * Some parameters are needed in advance to create device context. We
+	 * process the devargs here to get ones, and later process devargs
+	 * again to override some hardware settings.
+	 */
+	err = mlx5_args(config, dpdk_dev->devargs);
+	if (err) {
+		err = rte_errno;
+		DRV_LOG(ERR, "failed to process device arguments: %s",
+			strerror(rte_errno));
+		goto error;
+	}
+	mlx5_malloc_mem_select(config->sys_mem_en);
+	sh = mlx5_alloc_shared_dev_ctx(spawn, config);
+	if (!sh)
+		return NULL;
+	config->devx = sh->devx;
+	/* Initialize the shutdown event in mlx5_dev_spawn to
+	 * support mlx5_is_removed for Windows.
+	 */
+	err = mlx5_glue->devx_init_showdown_event(sh->ctx);
+	if (err) {
+		DRV_LOG(ERR, "failed to init showdown event: %s",
+			strerror(errno));
+		goto error;
+	}
+	DRV_LOG(DEBUG, "MPW isn't supported");
+	mlx5_os_get_dev_attr(sh->ctx, &device_attr);
+	config->swp = 0;
+	config->ind_table_max_size =
+		sh->device_attr.max_rwq_indirection_table_size;
+	if (RTE_CACHE_LINE_SIZE == 128 &&
+	    !(device_attr.flags & MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP))
+		cqe_comp = 0;
+	else
+		cqe_comp = 1;
+	config->cqe_comp = cqe_comp;
+	DRV_LOG(DEBUG, "tunnel offloading is not supported");
+	config->tunnel_en = 0;
+	DRV_LOG(DEBUG, "MPLS over GRE/UDP tunnel offloading is no supported");
+	config->mpls_en = 0;
+	/* Allocate private eth device data. */
+	priv = mlx5_malloc(MLX5_MEM_ZERO | MLX5_MEM_RTE,
+			   sizeof(*priv),
+			   RTE_CACHE_LINE_SIZE, SOCKET_ID_ANY);
+	if (priv == NULL) {
+		DRV_LOG(ERR, "priv allocation failure");
+		err = ENOMEM;
+		goto error;
+	}
+	priv->sh = sh;
+	priv->dev_port = spawn->phys_port;
+	priv->pci_dev = spawn->pci_dev;
+	priv->mtu = RTE_ETHER_MTU;
+	priv->mp_id.port_id = port_id;
+	strlcpy(priv->mp_id.name, MLX5_MP_NAME, RTE_MP_MAX_NAME_LEN);
+	priv->representor = !!switch_info->representor;
+	priv->master = !!switch_info->master;
+	priv->domain_id = RTE_ETH_DEV_SWITCH_DOMAIN_ID_INVALID;
+	priv->vport_meta_tag = 0;
+	priv->vport_meta_mask = 0;
+	priv->pf_bond = spawn->pf_bond;
+	priv->vport_id = -1;
+	/* representor_id field keeps the unmodified VF index. */
+	priv->representor_id = -1;
+	/*
+	 * Look for sibling devices in order to reuse their switch domain
+	 * if any, otherwise allocate one.
+	 */
+	MLX5_ETH_FOREACH_DEV(port_id, priv->pci_dev) {
+		const struct mlx5_priv *opriv =
+			rte_eth_devices[port_id].data->dev_private;
+
+		if (!opriv ||
+		    opriv->sh != priv->sh ||
+			opriv->domain_id ==
+			RTE_ETH_DEV_SWITCH_DOMAIN_ID_INVALID)
+			continue;
+		priv->domain_id = opriv->domain_id;
+		break;
+	}
+	if (priv->domain_id == RTE_ETH_DEV_SWITCH_DOMAIN_ID_INVALID) {
+		err = rte_eth_switch_domain_alloc(&priv->domain_id);
+		if (err) {
+			err = rte_errno;
+			DRV_LOG(ERR, "unable to allocate switch domain: %s",
+				strerror(rte_errno));
+			goto error;
+		}
+		own_domain_id = 1;
+	}
+	/* Override some values set by hardware configuration. */
+	mlx5_args(config, dpdk_dev->devargs);
+	err = mlx5_dev_check_sibling_config(priv, config);
+	if (err)
+		goto error;
+	config->hw_csum = !!(sh->device_attr.device_cap_flags_ex &
+			    IBV_DEVICE_RAW_IP_CSUM);
+	DRV_LOG(DEBUG, "checksum offloading is %ssupported",
+		(config->hw_csum ? "" : "not "));
+	DRV_LOG(DEBUG, "counters are not supported");
+	config->ind_table_max_size =
+		sh->device_attr.max_rwq_indirection_table_size;
+	/*
+	 * Remove this check once DPDK supports larger/variable
+	 * indirection tables.
+	 */
+	if (config->ind_table_max_size > (unsigned int)ETH_RSS_RETA_SIZE_512)
+		config->ind_table_max_size = ETH_RSS_RETA_SIZE_512;
+	DRV_LOG(DEBUG, "maximum Rx indirection table size is %u",
+		config->ind_table_max_size);
+	config->hw_vlan_strip = !!(sh->device_attr.raw_packet_caps &
+				  IBV_RAW_PACKET_CAP_CVLAN_STRIPPING);
+	DRV_LOG(DEBUG, "VLAN stripping is %ssupported",
+		(config->hw_vlan_strip ? "" : "not "));
+	config->hw_fcs_strip = !!(sh->device_attr.raw_packet_caps &
+				 IBV_RAW_PACKET_CAP_SCATTER_FCS);
+	if (config->hw_padding) {
+		DRV_LOG(DEBUG, "Rx end alignment padding isn't supported");
+		config->hw_padding = 0;
+	}
+	config->tso = (sh->device_attr.max_tso > 0 &&
+		      (sh->device_attr.tso_supported_qpts &
+		       (1 << IBV_QPT_RAW_PACKET)));
+	if (config->tso)
+		config->tso_max_payload_sz = sh->device_attr.max_tso;
+	DRV_LOG(DEBUG, "%sMPS is %s",
+		config->mps == MLX5_MPW_ENHANCED ? "enhanced " :
+		config->mps == MLX5_MPW ? "legacy " : "",
+		config->mps != MLX5_MPW_DISABLED ? "enabled" : "disabled");
+	if (config->cqe_comp && !cqe_comp) {
+		DRV_LOG(WARNING, "Rx CQE compression isn't supported");
+		config->cqe_comp = 0;
+	}
+	if (config->cqe_pad && !cqe_pad) {
+		DRV_LOG(WARNING, "Rx CQE padding isn't supported");
+		config->cqe_pad = 0;
+	} else if (config->cqe_pad) {
+		DRV_LOG(INFO, "Rx CQE padding is enabled");
+	}
+	if (config->devx) {
+		err = mlx5_devx_cmd_query_hca_attr(sh->ctx, &config->hca_attr);
+		if (err) {
+			err = -err;
+			goto error;
+		}
+		/* Check relax ordering support. */
+		sh->cmng.relaxed_ordering_read = 0;
+		sh->cmng.relaxed_ordering_write = 0;
+		if (!haswell_broadwell_cpu) {
+			sh->cmng.relaxed_ordering_write =
+				config->hca_attr.relaxed_ordering_write;
+			sh->cmng.relaxed_ordering_read =
+				config->hca_attr.relaxed_ordering_read;
+		}
+	}
+	if (config->devx) {
+		uint32_t reg[MLX5_ST_SZ_DW(register_mtutc)];
+
+		err = config->hca_attr.access_register_user ?
+			mlx5_devx_cmd_register_read
+				(sh->ctx, MLX5_REGISTER_ID_MTUTC, 0,
+				reg, MLX5_ST_SZ_DW(register_mtutc)) : ENOTSUP;
+		if (!err) {
+			uint32_t ts_mode;
+
+			/* MTUTC register is read successfully. */
+			ts_mode = MLX5_GET(register_mtutc, reg,
+					   time_stamp_mode);
+			if (ts_mode == MLX5_MTUTC_TIMESTAMP_MODE_REAL_TIME)
+				config->rt_timestamp = 1;
+		} else {
+			/* Kernel does not support register reading. */
+			if (config->hca_attr.dev_freq_khz ==
+						 (NS_PER_S / MS_PER_S))
+				config->rt_timestamp = 1;
+		}
+	}
+	if (config->mprq.enabled) {
+		DRV_LOG(WARNING, "Multi-Packet RQ isn't supported");
+		config->mprq.enabled = 0;
+	}
+	if (config->max_dump_files_num == 0)
+		config->max_dump_files_num = 128;
+	eth_dev = rte_eth_dev_allocate(name);
+	if (eth_dev == NULL) {
+		DRV_LOG(ERR, "can not allocate rte ethdev");
+		err = ENOMEM;
+		goto error;
+	}
+	if (priv->representor) {
+		eth_dev->data->dev_flags |= RTE_ETH_DEV_REPRESENTOR;
+		eth_dev->data->representor_id = priv->representor_id;
+	}
+	/*
+	 * Store associated network device interface index. This index
+	 * is permanent throughout the lifetime of device. So, we may store
+	 * the ifindex here and use the cached value further.
+	 */
+	MLX5_ASSERT(spawn->ifindex);
+	priv->if_index = spawn->ifindex;
+	eth_dev->data->dev_private = priv;
+	priv->dev_data = eth_dev->data;
+	eth_dev->data->mac_addrs = priv->mac;
+	eth_dev->device = dpdk_dev;
+	eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS;
+	/* Configure the first MAC address by default. */
+	if (mlx5_get_mac(eth_dev, &mac.addr_bytes)) {
+		DRV_LOG(ERR,
+			"port %u cannot get MAC address, is mlx5_en"
+			" loaded? (errno: %s)",
+			eth_dev->data->port_id, strerror(rte_errno));
+		err = ENODEV;
+		goto error;
+	}
+	DRV_LOG(INFO,
+		"port %u MAC address is %02x:%02x:%02x:%02x:%02x:%02x",
+		eth_dev->data->port_id,
+		mac.addr_bytes[0], mac.addr_bytes[1],
+		mac.addr_bytes[2], mac.addr_bytes[3],
+		mac.addr_bytes[4], mac.addr_bytes[5]);
+#ifdef RTE_LIBRTE_MLX5_DEBUG
+	{
+		char ifname[IF_NAMESIZE];
+
+		if (mlx5_get_ifname(eth_dev, &ifname) == 0)
+			DRV_LOG(DEBUG, "port %u ifname is \"%s\"",
+				eth_dev->data->port_id, ifname);
+		else
+			DRV_LOG(DEBUG, "port %u ifname is unknown",
+				eth_dev->data->port_id);
+	}
+#endif
+	/* Get actual MTU if possible. */
+	err = mlx5_get_mtu(eth_dev, &priv->mtu);
+	if (err) {
+		err = rte_errno;
+		goto error;
+	}
+	DRV_LOG(DEBUG, "port %u MTU is %u", eth_dev->data->port_id,
+		priv->mtu);
+	/* Initialize burst functions to prevent crashes before link-up. */
+	eth_dev->rx_pkt_burst = removed_rx_burst;
+	eth_dev->tx_pkt_burst = removed_tx_burst;
+	eth_dev->dev_ops = &mlx5_os_dev_ops;
+	eth_dev->rx_descriptor_status = mlx5_rx_descriptor_status;
+	eth_dev->tx_descriptor_status = mlx5_tx_descriptor_status;
+	eth_dev->rx_queue_count = mlx5_rx_queue_count;
+	/* Register MAC address. */
+	claim_zero(mlx5_mac_addr_add(eth_dev, &mac, 0, 0));
+	priv->flows = 0;
+	priv->ctrl_flows = 0;
+	TAILQ_INIT(&priv->flow_meters);
+	TAILQ_INIT(&priv->flow_meter_profiles);
+	/* Bring Ethernet device up. */
+	DRV_LOG(DEBUG, "port %u forcing Ethernet interface up",
+		eth_dev->data->port_id);
+	mlx5_set_link_up(eth_dev);
+	/*
+	 * Even though the interrupt handler is not installed yet,
+	 * interrupts will still trigger on the async_fd from
+	 * Verbs context returned by ibv_open_device().
+	 */
+	mlx5_link_update(eth_dev, 0);
+	config->dv_esw_en = 0;
+	/* Detect minimal data bytes to inline. */
+	mlx5_set_min_inline(spawn, config);
+	/* Store device configuration on private structure. */
+	priv->config = *config;
+	/* Create context for virtual machine VLAN workaround. */
+	priv->vmwa_context = NULL;
+	if (config->dv_flow_en) {
+		err = mlx5_alloc_shared_dr(priv);
+		if (err)
+			goto error;
+		/*
+		 * RSS id is shared with meter flow id. Meter flow id can only
+		 * use the 24 MSB of the register.
+		 */
+		priv->qrss_id_pool = mlx5_flow_id_pool_alloc(UINT32_MAX >>
+				     MLX5_MTR_COLOR_BITS);
+		if (!priv->qrss_id_pool) {
+			DRV_LOG(ERR, "can't create flow id pool");
+			err = ENOMEM;
+			goto error;
+		}
+	}
+	/* No supported flow priority number detection. */
+	priv->config.flow_prio = -1;
+	if (!priv->config.dv_esw_en &&
+	    priv->config.dv_xmeta_en != MLX5_XMETA_MODE_LEGACY) {
+		DRV_LOG(WARNING, "metadata mode %u is not supported "
+				 "(no E-Switch)", priv->config.dv_xmeta_en);
+		priv->config.dv_xmeta_en = MLX5_XMETA_MODE_LEGACY;
+	}
+	mlx5_set_metadata_mask(eth_dev);
+	if (priv->config.dv_xmeta_en != MLX5_XMETA_MODE_LEGACY &&
+	    !priv->sh->dv_regc0_mask) {
+		DRV_LOG(ERR, "metadata mode %u is not supported "
+			     "(no metadata reg_c[0] is available)",
+			     priv->config.dv_xmeta_en);
+			err = ENOTSUP;
+			goto error;
+	}
+	/*
+	 * Allocate the buffer for flow creating, just once.
+	 * The allocation must be done before any flow creating.
+	 */
+	mlx5_flow_alloc_intermediate(eth_dev);
+	/* Query availability of metadata reg_c's. */
+	err = mlx5_flow_discover_mreg_c(eth_dev);
+	if (err < 0) {
+		err = -err;
+		goto error;
+	}
+	if (!mlx5_flow_ext_mreg_supported(eth_dev)) {
+		DRV_LOG(DEBUG,
+			"port %u extensive metadata register is not supported",
+			eth_dev->data->port_id);
+		if (priv->config.dv_xmeta_en != MLX5_XMETA_MODE_LEGACY) {
+			DRV_LOG(ERR, "metadata mode %u is not supported "
+				     "(no metadata registers available)",
+				     priv->config.dv_xmeta_en);
+			err = ENOTSUP;
+			goto error;
+		}
+	}
+	if (priv->config.dv_flow_en &&
+	    priv->config.dv_xmeta_en != MLX5_XMETA_MODE_LEGACY &&
+	    mlx5_flow_ext_mreg_supported(eth_dev) &&
+	    priv->sh->dv_regc0_mask) {
+		priv->mreg_cp_tbl = mlx5_hlist_create(MLX5_FLOW_MREG_HNAME,
+						      MLX5_FLOW_MREG_HTABLE_SZ);
+		if (!priv->mreg_cp_tbl) {
+			err = ENOMEM;
+			goto error;
+		}
+	}
+	if (config->devx && config->dv_flow_en) {
+		priv->obj_ops = devx_obj_ops;
+	} else {
+		DRV_LOG(ERR, "Flow mode %u is not supported "
+				"(Windows flow must be DevX with DV flow enabled)",
+				priv->config.dv_flow_en);
+		err = ENOTSUP;
+		goto error;
+	}
+	mlx5_flow_counter_mode_config(eth_dev);
+	return eth_dev;
+error:
+	if (priv) {
+		if (priv->mreg_cp_tbl)
+			mlx5_hlist_destroy(priv->mreg_cp_tbl, NULL, NULL);
+		if (priv->qrss_id_pool)
+			mlx5_flow_id_pool_release(priv->qrss_id_pool);
+		if (own_domain_id)
+			claim_zero(rte_eth_switch_domain_free(priv->domain_id));
+		mlx5_free(priv);
+		if (eth_dev != NULL)
+			eth_dev->data->dev_private = NULL;
+	}
+	if (eth_dev != NULL) {
+		/* mac_addrs must not be freed alone because part of
+		 * dev_private
+		 **/
+		eth_dev->data->mac_addrs = NULL;
+		rte_eth_dev_release_port(eth_dev);
+	}
+	if (sh)
+		mlx5_free_shared_dev_ctx(sh);
+	MLX5_ASSERT(err > 0);
+	rte_errno = err;
 	return NULL;
 }
 
-- 
2.8.4


  parent reply	other threads:[~2020-10-27 23:46 UTC|newest]

Thread overview: 235+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-27 23:22 [dpdk-dev] [PATCH v1 00/72] mlx5 Windows support - part #5 Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 01/72] mlx5: fix relaxed ordering DevX flow Ophir Munk
2020-12-10 15:06   ` [dpdk-dev] [PATCH v2 00/33] mlx5 Windows support - part #5 Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 01/33] net/mlx5: fix folding constant array error Tal Shnaiderman
2020-12-13 10:20       ` [dpdk-dev] [PATCH v3 00/32] mlx5 Windows support - part #5 Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 01/32] net/mlx5: fix folding constant array error Tal Shnaiderman
2020-12-13 20:49           ` [dpdk-dev] [PATCH v4 00/32] mlx5 Windows support - part #5 Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 01/32] net/mlx5: fix folding constant array error Tal Shnaiderman
2020-12-28  9:54               ` [dpdk-dev] [PATCH v5 00/32] mlx5 Windows support - part #5 Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 01/32] net/mlx5: fix folding constant array error Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 02/32] net/mlx5/linux: extend device attributes getter Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 03/32] net/mlx5: remove Linux files from Windows compilation Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 04/32] net/mlx5: fix freeing packet pacing Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 05/32] net/mlx5: replace Linux sleep with rte sleep Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 06/32] net/mlx5: define mprq functions as static inline Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 07/32] net/mlx5: do not define static_assert in Windows Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 08/32] net/mlx5: move static_assert calls to global scope Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 09/32] net/mlx5: wrap glue alloc/dealloc PD with OS calls Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 10/32] net/mlx5: wrap glue reg/dereg UMEM " Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 11/32] net/mlx5: fix adding destroy flow action wrapper Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 12/32] common/mlx5: add definition HAVE_INFINIBAND_VERBS_H Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 13/32] common/mlx5/linux: handle memory allocations with alignment Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 14/32] common/mlx5/windows: " Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 15/32] common/mlx5/linux: wrap event channel APIs with OS calls Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 16/32] common/mlx5: add Windows exports file Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 17/32] common/mlx5: extend DevX query hca attributes command Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 18/32] common/mlx5: add DevX alloc PD command Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 19/32] common/mlx5/windows: add glue functions APIs Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 20/32] mlx5/windows: add mlx5 meson file Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 21/32] mlx5/windows: add initialization routine for external lib Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 22/32] mlx5/windows: generate file mlx5_autoconf.h Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 23/32] common/mlx5/windows: extend PRM match_param_bits struct Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 24/32] common/mlx5/windows: add getter functions Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 25/32] common/mlx5/windows: add OS alloc/dealloc pd Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 26/32] common/mlx5/windows: add OS umem reg/dereg API Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 27/32] net/mlx5: update MR prototypes for DevX Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 28/32] common/mlx5/windows: add OS reg/dereg MR Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 29/32] net/mlx5/windows: implement device attribute getter Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 30/32] net/mlx5/windows: add mlx5_os.c stubs Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 31/32] net/mlx5/windows: implement mlx5 mac addr add Tal Shnaiderman
2020-12-28  9:54                 ` [dpdk-dev] [PATCH v5 32/32] net/mlx5: refactor eth dev ops for Windows Tal Shnaiderman
2020-12-30 18:16                 ` [dpdk-dev] [PATCH v5 00/32] mlx5 Windows support - part #5 Raslan Darawsheh
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 02/32] net/mlx5/linux: extend device attributes getter Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 03/32] net/mlx5: remove Linux files from Windows compilation Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 04/32] net/mlx5: fix freeing packet pacing Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 05/32] net/mlx5: replace Linux sleep with rte sleep Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 06/32] net/mlx5: define mprq functions as static inline Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 07/32] net/mlx5: do not define static_assert in Windows Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 08/32] net/mlx5: move static_assert calls to global scope Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 09/32] net/mlx5: wrap glue alloc/dealloc PD with OS calls Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 10/32] net/mlx5: wrap glue reg/dereg UMEM " Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 11/32] net/mlx5: fix adding destroy flow action wrapper Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 12/32] common/mlx5: add definition HAVE_INFINIBAND_VERBS_H Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 13/32] common/mlx5/linux: handle memory allocations with alignment Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 14/32] common/mlx5/windows: " Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 15/32] common/mlx5/linux: wrap event channel APIs with OS calls Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 16/32] common/mlx5: add Windows exports file Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 17/32] common/mlx5: extend DevX query hca attributes command Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 18/32] common/mlx5: add DevX alloc PD command Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 19/32] common/mlx5/windows: add glue functions APIs Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 20/32] mlx5/windows: add mlx5 meson file Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 21/32] mlx5/windows: add initialization routine for external lib Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 22/32] mlx5/windows: generate file mlx5_autoconf.h Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 23/32] common/mlx5/windows: extend PRM match_param_bits struct Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 24/32] common/mlx5/windows: add getter functions Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 25/32] common/mlx5/windows: add OS alloc/dealloc pd Tal Shnaiderman
2020-12-13 20:49             ` [dpdk-dev] [PATCH v4 26/32] common/mlx5/windows: add OS umem reg/dereg API Tal Shnaiderman
2020-12-13 20:50             ` [dpdk-dev] [PATCH v4 27/32] net/mlx5: update MR prototypes for DevX Tal Shnaiderman
2020-12-13 20:50             ` [dpdk-dev] [PATCH v4 28/32] common/mlx5/windows: add OS reg/dereg MR Tal Shnaiderman
2020-12-13 20:50             ` [dpdk-dev] [PATCH v4 29/32] net/mlx5/windows: implement device attribute getter Tal Shnaiderman
2020-12-13 20:50             ` [dpdk-dev] [PATCH v4 30/32] net/mlx5/windows: add mlx5_os.c stubs Tal Shnaiderman
2020-12-13 20:50             ` [dpdk-dev] [PATCH v4 31/32] net/mlx5/windows: implement mlx5 mac addr add Tal Shnaiderman
2020-12-13 20:50             ` [dpdk-dev] [PATCH v4 32/32] net/mlx5: refactor eth dev ops for Windows Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 02/32] net/mlx5/linux: extend device attributes getter Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 03/32] net/mlx5: remove Linux files from Windows compilation Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 04/32] net/mlx5: fix freeing packet pacing Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 05/32] net/mlx5: replace Linux sleep with rte sleep Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 06/32] net/mlx5: define mprq functions as static inline Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 07/32] net/mlx5: do not define static_assert in Windows Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 08/32] net/mlx5: move static_assert calls to global scope Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 09/32] net/mlx5: wrap glue alloc/dealloc PD with OS calls Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 10/32] net/mlx5: wrap glue reg/dereg UMEM " Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 11/32] net/mlx5: fix adding destroy flow action wrapper Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 12/32] common/mlx5: add definition HAVE_INFINIBAND_VERBS_H Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 13/32] common/mlx5/linux: handle memory allocations with alignment Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 14/32] common/mlx5/windows: " Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 15/32] common/mlx5/linux: wrap event channel APIs with OS calls Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 16/32] common/mlx5: add Windows exports file Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 17/32] common/mlx5: extend DevX query hca attributes command Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 18/32] common/mlx5: add DevX alloc PD command Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 19/32] common/mlx5/windows: add glue functions APIs Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 20/32] mlx5/windows: add mlx5 meson file Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 21/32] mlx5/windows: add initialization routine for external lib Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 22/32] mlx5/windows: generate file mlx5_autoconf.h Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 23/32] common/mlx5/windows: extend PRM match_param_bits struct Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 24/32] common/mlx5/windows: add getter functions Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 25/32] common/mlx5/windows: add OS alloc/dealloc pd Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 26/32] common/mlx5/windows: add OS umem reg/dereg API Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 27/32] net/mlx5: update MR prototypes for DevX Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 28/32] common/mlx5/windows: add OS reg/dereg MR Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 29/32] net/mlx5/windows: implement device attribute getter Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 30/32] net/mlx5/windows: add mlx5_os.c stubs Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 31/32] net/mlx5/windows: implement mlx5 mac addr add Tal Shnaiderman
2020-12-13 10:20         ` [dpdk-dev] [PATCH v3 32/32] net/mlx5: refactor eth dev ops for Windows Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 02/33] net/mlx5/linux: extend device attributes getter Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 03/33] net/mlx5: remove Linux files from Windows compilation Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 04/33] net/mlx5: fix freeing packet pacing Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 05/33] net/mlx5: replace Linux sleep with rte sleep Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 06/33] net/mlx5: define mprq functions as static inline Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 07/33] net/mlx5: do not define static_assert in Windows Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 08/33] net/mlx5: move static_assert calls to global scope Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 09/33] net/mlx5: wrap glue alloc/dealloc PD with OS calls Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 10/33] net/mlx5: wrap glue reg/dereg UMEM " Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 11/33] net/mlx5: fix adding destroy flow action wrapper Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 12/33] common/mlx5: add definition HAVE_INFINIBAND_VERBS_H Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 13/33] common/mlx5/linux: handle memory allocations with alignment Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 14/33] common/mlx5/windows: " Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 15/33] common/mlx5/linux: wrap event channel APIs with OS calls Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 16/33] common/mlx5: add Windows exports file Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 17/33] common/mlx5: extend DevX query hca attributes command Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 18/33] common/mlx5: add DevX alloc PD command Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 19/33] common/mlx5/windows: add glue functions APIs Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 20/33] mlx5/windows: add mlx5 meson file Tal Shnaiderman
2020-12-11 23:42       ` Dmitry Kozlyuk
2020-12-12  2:34         ` Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 21/33] mlx5/windows: add initialization routine for external lib Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 22/33] mlx5/windows: generate file mlx5_autoconf.h Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 23/33] common/mlx5/windows: extend PRM match_param_bits struct Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 24/33] common/mlx5/windows: add getter functions Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 25/33] common/mlx5/windows: add OS alloc/dealloc pd Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 26/33] common/mlx5/windows: add OS umem reg/dereg API Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 27/33] net/mlx5: update MR prototypes for DevX Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 28/33] common/mlx5/windows: add OS reg/dereg MR Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 29/33] drivers/common: enable Windows common mlx5 compilation Tal Shnaiderman
2021-01-03  8:00       ` [dpdk-dev] [PATCH v3] " Tal Shnaiderman
2021-01-11 20:52         ` Thomas Monjalon
2021-01-12 12:58       ` [dpdk-dev] [PATCH v4] " Tal Shnaiderman
2021-01-13 22:07         ` Thomas Monjalon
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 30/33] net/mlx5/windows: implement device attribute getter Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 31/33] net/mlx5/windows: add mlx5_os.c stubs Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 32/33] net/mlx5/windows: implement mlx5 mac addr add Tal Shnaiderman
2020-12-10 15:06     ` [dpdk-dev] [PATCH v2 33/33] net/mlx5: refactor eth dev ops for Windows Tal Shnaiderman
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 02/72] net/mlx5: fix flow sample definitions Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 03/72] net/mlx5: fix folding constant array error Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 04/72] net/mlx5/linux: extend device attributes getter Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 05/72] net/mlx5: remove Linux files from Windows compilation Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 06/72] net/mlx5: fix freeing packet pacing Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 07/72] net/mlx5: replace Linux sleep with rte sleep Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 08/72] net/mlx5: define mprq functions as static inline Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 09/72] net/mlx5: do not define static_assert in Windows Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 10/72] net/mlx5: move static_assert calls to global scope Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 11/72] net/mlx5: wrap glue alloc/dealloc PD with OS calls Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 12/72] net/mlx5: wrap glue reg/dereg UMEM " Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 13/72] net/mlx5: fix adding destroy flow action wrapper Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 14/72] common/mlx5: add definition HAVE_INFINIBAND_VERBS_H Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 15/72] common/mlx5/linux: handle memory allocations with alignment Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 16/72] common/mlx5/windows: " Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 17/72] common/mlx5/linux: wrap event channel APIs with OS calls Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 18/72] common/mlx5: add Windows exports file Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 19/72] common/mlx5: extend DevX query hca attributes command Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 20/72] common/mlx5: add DevX alloc PD command Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 21/72] common/mlx5/windows: add glue functions APIs Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 22/72] mlx5/windows: add mlx5 meson file Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 23/72] mlx5/windows: add initialization routine for external lib Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 24/72] mlx5/windows: generate file mlx5_autoconf.h Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 25/72] common/mlx5/windows: extend PRM match_param_bits struct Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 26/72] common/mlx5/windows: add getter functions Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 27/72] common/mlx5/windows: add OS alloc/dealloc pd Ophir Munk
2020-11-11  0:11   ` Narcisa Ana Maria Vasile
2020-11-14 21:51     ` Tal Shnaiderman
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 28/72] common/mlx5/windows: add OS umem reg/dereg API Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 29/72] net/mlx5: update MR prototypes for DevX Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 30/72] common/mlx5/windows: add OS reg/dereg MR Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 31/72] drivers/common: enable Windows common mlx5 compilation Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 32/72] net/mlx5/windows: implement device attribute getter Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 33/72] net/mlx5/windows: add mlx5_os.c stubs Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 34/72] net/mlx5/windows: implement mlx5 mac addr add Ophir Munk
2020-11-11  0:08   ` Narcisa Ana Maria Vasile
2020-11-14 21:49     ` Tal Shnaiderman
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 35/72] net/mlx5: refactor eth dev ops for Windows Ophir Munk
2020-10-27 23:22 ` [dpdk-dev] [PATCH v1 36/72] common/mlx5/windows: add missing DV and IBV definitions Ophir Munk
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 37/72] mlx5/windows: add mlx5_os header file under net Ophir Munk
2020-10-28  7:18   ` Thomas Monjalon
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 38/72] net/mlx5/windows: add pthread initializer definition Ophir Munk
2020-10-28  7:21   ` Thomas Monjalon
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 39/72] net/mlx5/windows: define epoll API to do nothing Ophir Munk
2020-10-28  7:22   ` Thomas Monjalon
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 40/72] net/mlx5/windows: define errno ETOOMANYREFS Ophir Munk
2020-10-28  7:23   ` Thomas Monjalon
2020-10-28 14:40     ` Tal Shnaiderman
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 41/72] common/mlx5: add rte compatibility header file Ophir Munk
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 42/72] common/mlx5/windows: add DevX UAR getters Ophir Munk
2020-11-11  0:07   ` Narcisa Ana Maria Vasile
2020-11-14 21:41     ` Tal Shnaiderman
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 43/72] common/mlx5/windows: wrap event channel APIs with OS calls Ophir Munk
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 44/72] net/mlx5/windows: add memory region callbacks Ophir Munk
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 45/72] net/mlx5/windows: add stubs for MP requests Ophir Munk
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 46/72] net/mlx5/windows: support get mac Ophir Munk
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 47/72] net/mlx5/windows: add ethdev stub operations Ophir Munk
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 48/72] net/mlx5/windows: support link update Ophir Munk
2020-11-11  0:06   ` Narcisa Ana Maria Vasile
2020-11-14 21:35     ` Tal Shnaiderman
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 49/72] net/mlx5/windows: support read clock Ophir Munk
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 50/72] net/mlx5/windows: support get mtu Ophir Munk
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 51/72] net/mlx5/windows: support get interface name Ophir Munk
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 52/72] net/mlx5/windows: support is removed Ophir Munk
2020-10-28  7:26   ` Thomas Monjalon
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 53/72] net/mlx5/windws: add VLAN stubs Ophir Munk
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 54/72] net/mlx5: exclude rte_intr_callback_register call Ophir Munk
2020-10-28  7:29   ` Thomas Monjalon
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 55/72] net/mlx5/windows: support get pdn Ophir Munk
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 56/72] net/mlx5/windows: support open device Ophir Munk
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 57/72] net/mlx5/windows: initial probing implementation Ophir Munk
2020-11-11  0:02   ` Narcisa Ana Maria Vasile
2020-10-27 23:23 ` Ophir Munk [this message]
2020-11-10 23:48   ` [dpdk-dev] [PATCH v1 58/72] net/mlx5/windws: spawn eth devices Narcisa Ana Maria Vasile
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 59/72] net/mlx5/windows: support VF PCI address Ophir Munk
2020-11-11  0:04   ` Narcisa Ana Maria Vasile
2020-11-14 21:23     ` Tal Shnaiderman
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 60/72] net/mlx5/linux: wrap adjust flow priority with OS calls Ophir Munk
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 61/72] net/mlx5/linux: add OS default miss flow action Ophir Munk
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 62/72] net/mlx5/linux: fix add OS dest_devx_tir action Ophir Munk
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 63/72] drivers/net: enable Windows net/mlx5 compilation Ophir Munk
2020-10-28  7:31   ` Thomas Monjalon
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 64/72] net/mlx5/windows: introduce flow support Ophir Munk
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 65/72] net/mlx5/windows: create flow matcher object Ophir Munk
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 66/72] net/mlx5/windows: create flow action dest TIR object Ophir Munk
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 67/72] net/mlx5/windows: create flow rule Ophir Munk
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 68/72] net/mlx5: use HAVE_INFINIBAND_VERBS_H in shared code Ophir Munk
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 69/72] net/mlx5: fix separating eth_dev_ops per OS Ophir Munk
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 70/72] common/mlx5: fix Windows warnings on missing enum Ophir Munk
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 71/72] net/mlx5: fix Windows warnings on get_if_name Ophir Munk
2020-10-28  7:34   ` Thomas Monjalon
2020-10-27 23:23 ` [dpdk-dev] [PATCH v1 72/72] mlx5: build pmd only with the clang compiler Ophir Munk
2020-10-28  7:35   ` Thomas Monjalon

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=20201027232335.31427-59-ophirmu@nvidia.com \
    --to=ophirmu@nvidia.com \
    --cc=dev@dpdk.org \
    --cc=matan@nvidia.com \
    --cc=rasland@nvidia.com \
    --cc=talshn@nvidia.com \
    --cc=thomas@monjalon.net \
    /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).