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