automatic DPDK test reports
 help / color / mirror / Atom feed
* |WARNING| pw108084-108089 [PATCH] [6/6] app/testpmd: add test for external RxQ
@ 2022-02-22 21:19 dpdklab
  0 siblings, 0 replies; only message in thread
From: dpdklab @ 2022-02-22 21:19 UTC (permalink / raw)
  To: test-report; +Cc: dpdk-test-reports

[-- Attachment #1: Type: text/plain, Size: 12191 bytes --]

Test-Label: iol-testing
Test-Status: WARNING
http://dpdk.org/patch/108084

_apply patch failure_

Submitter: Michael Baum <michaelba@nvidia.com>
Date: Tuesday, February 22 2022 21:04:16 
Applied on: CommitID:ecc0dd455e9a56db783463d83173c3f348b560ce
Apply patch set 108084-108089 failed:

Checking patch doc/guides/platform/mlx5.rst...
error: doc/guides/platform/mlx5.rst: does not exist in index
Checking patch drivers/common/mlx5/linux/mlx5_common_os.c...
Checking patch drivers/common/mlx5/linux/mlx5_common_os.h...
Checking patch drivers/common/mlx5/mlx5_common.c...
error: while searching for:
/* Driver type key for new device global syntax. */
#define MLX5_DRIVER_KEY "driver"

/* Enable extending memsegs when creating a MR. */
#define MLX5_MR_EXT_MEMSEG_EN "mr_ext_memseg_en"


error: patch failed: drivers/common/mlx5/mlx5_common.c:24
error: while searching for:
		config->mr_mempool_reg_en = !!tmp;
	} else if (strcmp(key, MLX5_SYS_MEM_EN) == 0) {
		config->sys_mem_en = !!tmp;
	}
	return 0;
}

error: patch failed: drivers/common/mlx5/mlx5_common.c:283
error: while searching for:
		MLX5_MR_EXT_MEMSEG_EN,
		MLX5_SYS_MEM_EN,
		MLX5_MR_MEMPOOL_REG_EN,
		NULL,
	};
	int ret = 0;

error: patch failed: drivers/common/mlx5/mlx5_common.c:310
error: while searching for:
	config->mr_mempool_reg_en = 1;
	config->sys_mem_en = 0;
	config->dbnc = MLX5_ARG_UNSET;
	/* Process common parameters. */
	ret = mlx5_kvargs_process(mkvlist, params,
				  mlx5_common_args_check_handler, config);
	if (ret) {
		rte_errno = EINVAL;
		ret = -rte_errno;
	}
	DRV_LOG(DEBUG, "mr_ext_memseg_en is %u.", config->mr_ext_memseg_en);
	DRV_LOG(DEBUG, "mr_mempool_reg_en is %u.", config->mr_mempool_reg_en);
	DRV_LOG(DEBUG, "sys_mem_en is %u.", config->sys_mem_en);

error: patch failed: drivers/common/mlx5/mlx5_common.c:321
Hunk #5 succeeded at 497 (offset -166 lines).
Hunk #6 succeeded at 526 (offset -166 lines).
error: while searching for:
			cdev->dev->name);
		goto error;
	}
	if (cdev->config.sys_mem_en ^ config->sys_mem_en) {
		DRV_LOG(ERR,
			"\"sys_mem_en\" configuration mismatch for device %s.",

error: patch failed: drivers/common/mlx5/mlx5_common.c:826
Checking patch drivers/common/mlx5/mlx5_common.h...
Hunk #1 succeeded at 414 (offset -32 lines).
Hunk #2 succeeded at 435 (offset -32 lines).
Hunk #3 succeeded at 526 (offset -47 lines).
Checking patch drivers/common/mlx5/version.map...
Hunk #1 succeeded at 133 (offset -3 lines).
Checking patch drivers/common/mlx5/windows/mlx5_common_os.c...
Checking patch drivers/common/mlx5/windows/mlx5_common_os.h...
Applied patch drivers/common/mlx5/linux/mlx5_common_os.c cleanly.
Applied patch drivers/common/mlx5/linux/mlx5_common_os.h cleanly.
Applying patch drivers/common/mlx5/mlx5_common.c with 5 rejects...
Rejected hunk #1.
Rejected hunk #2.
Rejected hunk #3.
Rejected hunk #4.
Hunk #5 applied cleanly.
Hunk #6 applied cleanly.
Rejected hunk #7.
Applied patch drivers/common/mlx5/mlx5_common.h cleanly.
Applied patch drivers/common/mlx5/version.map cleanly.
Applied patch drivers/common/mlx5/windows/mlx5_common_os.c cleanly.
Applied patch drivers/common/mlx5/windows/mlx5_common_os.h cleanly.
diff a/drivers/common/mlx5/mlx5_common.c b/drivers/common/mlx5/mlx5_common.c	(rejected hunks)
@@ -24,6 +24,12 @@ uint8_t haswell_broadwell_cpu;
 /* Driver type key for new device global syntax. */
 #define MLX5_DRIVER_KEY "driver"
 
+/* Device parameter to get file descriptor for import device. */
+#define MLX5_DEVICE_FD "cmd_fd"
+
+/* Device parameter to get PD number for import Protection Domain. */
+#define MLX5_PD_HANDLE "pd_handle"
+
 /* Enable extending memsegs when creating a MR. */
 #define MLX5_MR_EXT_MEMSEG_EN "mr_ext_memseg_en"
 
@@ -283,6 +289,10 @@ mlx5_common_args_check_handler(const char *key, const char *val, void *opaque)
 		config->mr_mempool_reg_en = !!tmp;
 	} else if (strcmp(key, MLX5_SYS_MEM_EN) == 0) {
 		config->sys_mem_en = !!tmp;
+	} else if (strcmp(key, MLX5_DEVICE_FD) == 0) {
+		config->device_fd = tmp;
+	} else if (strcmp(key, MLX5_PD_HANDLE) == 0) {
+		config->pd_handle = tmp;
 	}
 	return 0;
 }
@@ -310,6 +320,8 @@ mlx5_common_config_get(struct mlx5_kvargs_ctrl *mkvlist,
 		MLX5_MR_EXT_MEMSEG_EN,
 		MLX5_SYS_MEM_EN,
 		MLX5_MR_MEMPOOL_REG_EN,
+		MLX5_DEVICE_FD,
+		MLX5_PD_HANDLE,
 		NULL,
 	};
 	int ret = 0;
@@ -321,13 +333,19 @@ mlx5_common_config_get(struct mlx5_kvargs_ctrl *mkvlist,
 	config->mr_mempool_reg_en = 1;
 	config->sys_mem_en = 0;
 	config->dbnc = MLX5_ARG_UNSET;
+	config->device_fd = MLX5_ARG_UNSET;
+	config->pd_handle = MLX5_ARG_UNSET;
 	/* Process common parameters. */
 	ret = mlx5_kvargs_process(mkvlist, params,
 				  mlx5_common_args_check_handler, config);
 	if (ret) {
 		rte_errno = EINVAL;
-		ret = -rte_errno;
+		return -rte_errno;
 	}
+	/* Validate user arguments for remote PD and CTX if it is given. */
+	ret = mlx5_os_remote_pd_and_ctx_validate(config);
+	if (ret)
+		return ret;
 	DRV_LOG(DEBUG, "mr_ext_memseg_en is %u.", config->mr_ext_memseg_en);
 	DRV_LOG(DEBUG, "mr_mempool_reg_en is %u.", config->mr_mempool_reg_en);
 	DRV_LOG(DEBUG, "sys_mem_en is %u.", config->sys_mem_en);
@@ -826,6 +849,17 @@ mlx5_common_probe_again_args_validate(struct mlx5_common_device *cdev,
 			cdev->dev->name);
 		goto error;
 	}
+	if (cdev->config.device_fd ^ config->device_fd) {
+		DRV_LOG(ERR, "\"cmd_fd\" configuration mismatch for device %s.",
+			cdev->dev->name);
+		goto error;
+	}
+	if (cdev->config.pd_handle ^ config->pd_handle) {
+		DRV_LOG(ERR,
+			"\"pd_handle\" configuration mismatch for device %s.",
+			cdev->dev->name);
+		goto error;
+	}
 	if (cdev->config.sys_mem_en ^ config->sys_mem_en) {
 		DRV_LOG(ERR,
 			"\"sys_mem_en\" configuration mismatch for device %s.",
Checking patch drivers/net/mlx5/linux/mlx5_os.c...
Hunk #1 succeeded at 1127 (offset -29 lines).
Hunk #2 succeeded at 1828 (offset 199 lines).
Checking patch drivers/net/mlx5/mlx5.c...
Hunk #1 succeeded at 1609 (offset -246 lines).
Checking patch drivers/net/mlx5/mlx5.h...
Hunk #1 succeeded at 1424 (offset 4 lines).
Checking patch drivers/net/mlx5/mlx5_defs.h...
Checking patch drivers/net/mlx5/mlx5_ethdev.c...
Checking patch drivers/net/mlx5/mlx5_rx.h...
Checking patch drivers/net/mlx5/mlx5_rxq.c...
error: while searching for:
		data->rt_timestamp = sh->dev_cap.rt_timestamp;
	}
}

error: patch failed: drivers/net/mlx5/mlx5_rxq.c:2989
Checking patch drivers/net/mlx5/rte_pmd_mlx5.h...
Checking patch drivers/net/mlx5/version.map...
Applied patch drivers/net/mlx5/linux/mlx5_os.c cleanly.
Applied patch drivers/net/mlx5/mlx5.c cleanly.
Applied patch drivers/net/mlx5/mlx5.h cleanly.
Applied patch drivers/net/mlx5/mlx5_defs.h cleanly.
Applied patch drivers/net/mlx5/mlx5_ethdev.c cleanly.
Applied patch drivers/net/mlx5/mlx5_rx.h cleanly.
Applying patch drivers/net/mlx5/mlx5_rxq.c with 1 reject...
Hunk #1 applied cleanly.
Rejected hunk #2.
Applied patch drivers/net/mlx5/rte_pmd_mlx5.h cleanly.
Applied patch drivers/net/mlx5/version.map cleanly.
diff a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c	(rejected hunks)
@@ -2989,3 +2990,111 @@ mlx5_rxq_timestamp_set(struct rte_eth_dev *dev)
 		data->rt_timestamp = sh->dev_cap.rt_timestamp;
 	}
 }
+
+/**
+ * Validate given external RxQ rte_plow index, and get pointer to concurrent
+ * external RxQ object to map/unmap.
+ *
+ * @param[in] port_id
+ *   The port identifier of the Ethernet device.
+ * @param[in] dpdk_idx
+ *   Queue index in rte_flow.
+ *
+ * @return
+ *   Pointer to concurrent external RxQ on success,
+ *   NULL otherwise and rte_errno is set.
+ */
+static struct mlx5_external_rxq *
+mlx5_external_rx_queue_get_validate(uint16_t port_id, uint16_t dpdk_idx)
+{
+	struct rte_eth_dev *dev;
+	struct mlx5_priv *priv;
+
+	if (dpdk_idx < MLX5_EXTERNAL_RX_QUEUE_ID_MIN) {
+		DRV_LOG(ERR, "Queue index %u should be in range: [%u, %u].",
+			dpdk_idx, MLX5_EXTERNAL_RX_QUEUE_ID_MIN, UINT16_MAX);
+		rte_errno = EINVAL;
+		return NULL;
+	}
+	if (rte_eth_dev_is_valid_port(port_id) < 0) {
+		DRV_LOG(ERR, "There is no Ethernet device for port %u.",
+			port_id);
+		rte_errno = ENODEV;
+		return NULL;
+	}
+	dev = &rte_eth_devices[port_id];
+	priv = dev->data->dev_private;
+	if (!mlx5_imported_pd_and_ctx(priv->sh->cdev)) {
+		DRV_LOG(ERR, "Port %u "
+			"external RxQ isn't supported on local PD and CTX.",
+			port_id);
+		rte_errno = ENOTSUP;
+		return NULL;
+	}
+	if (!mlx5_devx_obj_ops_en(priv->sh)) {
+		DRV_LOG(ERR,
+			"Port %u external RxQ isn't supported by Verbs API.",
+			port_id);
+		rte_errno = ENOTSUP;
+		return NULL;
+	}
+	/*
+	 * When user configures remote PD and CTX and device creates RxQ by
+	 * DevX, external RxQs array is allocated.
+	 */
+	MLX5_ASSERT(priv->ext_rxqs != NULL);
+	return &priv->ext_rxqs[dpdk_idx - MLX5_EXTERNAL_RX_QUEUE_ID_MIN];
+}
+
+int
+rte_pmd_mlx5_external_rx_queue_id_map(uint16_t port_id, uint16_t dpdk_idx,
+				      uint32_t hw_idx)
+{
+	struct mlx5_external_rxq *ext_rxq;
+
+	ext_rxq = mlx5_external_rx_queue_get_validate(port_id, dpdk_idx);
+	if (ext_rxq == NULL)
+		return -rte_errno;
+	if (__atomic_load_n(&ext_rxq->refcnt, __ATOMIC_RELAXED)) {
+		if (ext_rxq->hw_id != hw_idx) {
+			DRV_LOG(ERR, "Port %u external RxQ index %u "
+				"is already mapped to HW index (requesting is "
+				"%u, existing is %u).",
+				port_id, dpdk_idx, hw_idx, ext_rxq->hw_id);
+			rte_errno = EEXIST;
+			return -rte_errno;
+		}
+		DRV_LOG(WARNING, "Port %u external RxQ index %u "
+			"is already mapped to the requested HW index (%u)",
+			port_id, dpdk_idx, hw_idx);
+
+	} else {
+		ext_rxq->hw_id = hw_idx;
+		__atomic_store_n(&ext_rxq->refcnt, 1, __ATOMIC_RELAXED);
+		DRV_LOG(DEBUG, "Port %u external RxQ index %u "
+			"is successfully mapped to the requested HW index (%u)",
+			port_id, dpdk_idx, hw_idx);
+	}
+	return 0;
+}
+
+int
+rte_pmd_mlx5_external_rx_queue_id_unmap(uint16_t port_id, uint16_t dpdk_idx)
+{
+	struct mlx5_external_rxq *ext_rxq;
+
+	ext_rxq = mlx5_external_rx_queue_get_validate(port_id, dpdk_idx);
+	if (ext_rxq == NULL)
+		return -rte_errno;
+	if (__atomic_load_n(&ext_rxq->refcnt, __ATOMIC_RELAXED) == 0) {
+		DRV_LOG(ERR, "Port %u external RxQ index %u doesn't exist.",
+			port_id, dpdk_idx);
+		rte_errno = EINVAL;
+		return -rte_errno;
+	}
+	__atomic_store_n(&ext_rxq->refcnt, 0, __ATOMIC_RELAXED);
+	DRV_LOG(DEBUG,
+		"Port %u external RxQ index %u is successfully unmapped.",
+		port_id, dpdk_idx);
+	return 0;
+}
Checking patch doc/guides/nics/mlx5.rst...
Hunk #1 succeeded at 62 (offset 24 lines).
Checking patch doc/guides/rel_notes/release_22_03.rst...
error: while searching for:
  * Added PPPoL2TPv2oUDP FDIR distribute packets based on inner IP
    src/dst address and UDP/TCP src/dst port.

* **Updated Wangxun ngbe driver.**

  * Added support for devices of custom PHY interfaces.

error: patch failed: doc/guides/rel_notes/release_22_03.rst:118
Checking patch drivers/net/mlx5/mlx5.c...
error: drivers/net/mlx5/mlx5.c: does not match index
Checking patch drivers/net/mlx5/mlx5_devx.c...
Hunk #1 succeeded at 579 (offset -1 lines).
Hunk #2 succeeded at 718 (offset -1 lines).
Hunk #3 succeeded at 736 (offset -1 lines).
Checking patch drivers/net/mlx5/mlx5_flow.c...
Checking patch drivers/net/mlx5/mlx5_rx.h...
error: drivers/net/mlx5/mlx5_rx.h: does not match index
Checking patch drivers/net/mlx5/mlx5_rxq.c...
error: drivers/net/mlx5/mlx5_rxq.c: does not match index
Applied patch doc/guides/nics/mlx5.rst cleanly.
Applying patch doc/guides/rel_notes/release_22_03.rst with 1 reject...
Rejected hunk #1.
Applied patch drivers/net/mlx5/mlx5_devx.c cleanly.
Applied patch drivers/net/mlx5/mlx5_flow.c cleanly.
diff a/doc/guides/rel_notes/release_22_03.rst b/doc/guides/rel_notes/release_22_03.rst	(rejected hunks)
@@ -118,6 +118,12 @@ New Features
   * Added PPPoL2TPv2oUDP FDIR distribute packets based on inner IP
     src/dst address and UDP/TCP src/dst port.
 
+* **Updated Mellanox mlx5 driver.**
+
+  Updated the Mellanox mlx5 driver with new features and improvements, including:
+
+  * Support steering for external Rx queue.
+
 * **Updated Wangxun ngbe driver.**
 
   * Added support for devices of custom PHY interfaces.

https://lab.dpdk.org/results/dashboard/patchsets/21201/

UNH-IOL DPDK Community Lab

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-02-22 21:19 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-22 21:19 |WARNING| pw108084-108089 [PATCH] [6/6] app/testpmd: add test for external RxQ dpdklab

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).