All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ori Kam <orika@mellanox.com>
To: jerinj@marvell.com, xiang.w.wang@intel.com, matan@mellanox.com,
	viacheslavo@mellanox.com
Cc: guyk@marvell.com, dev@dpdk.org, pbhagavatula@marvell.com,
	shahafs@mellanox.com, hemant.agrawal@nxp.com, opher@mellanox.com,
	alexr@mellanox.com, dovrat@marvell.com, pkapoor@marvell.com,
	nipun.gupta@nxp.com, bruce.richardson@intel.com,
	yang.a.hong@intel.com, harry.chang@intel.com,
	gu.jian1@zte.com.cn, shanjiangh@chinatelecom.cn,
	zhangy.yun@chinatelecom.cn, lixingfu@huachentel.com,
	wushuai@inspur.com, yuyingxia@yxlink.com,
	fanchenggang@sunyainfo.com, davidfgao@tencent.com,
	liuzhong1@chinaunicom.cn, zhaoyong11@huawei.com, oc@yunify.com,
	jim@netgate.com, hongjun.ni@intel.com, deri@ntop.org,
	fc@napatech.com, arthur.su@lionic.com, thomas@monjalon.net,
	orika@mellanox.com, rasland@mellanox.com
Subject: [dpdk-dev] [PATCH 12/20] regex/mlx5: add configure function
Date: Sun,  5 Jul 2020 09:23:39 +0000	[thread overview]
Message-ID: <1593941027-86651-13-git-send-email-orika@mellanox.com> (raw)
In-Reply-To: <1593941027-86651-1-git-send-email-orika@mellanox.com>

This commit implements the configure function.
This function is responsible to configure the RegEx engine.

Signed-off-by: Ori Kam <orika@mellanox.com>
---
 drivers/regex/mlx5/mlx5_regex.c |   2 +
 drivers/regex/mlx5/mlx5_regex.h |  15 +++
 drivers/regex/mlx5/mlx5_rxp.c   | 279 +++++++++++++++++++++++++++++++++++++++-
 3 files changed, 295 insertions(+), 1 deletion(-)

diff --git a/drivers/regex/mlx5/mlx5_regex.c b/drivers/regex/mlx5/mlx5_regex.c
index 2c4b7ce..94e4352 100644
--- a/drivers/regex/mlx5/mlx5_regex.c
+++ b/drivers/regex/mlx5/mlx5_regex.c
@@ -23,6 +23,7 @@
 
 const struct rte_regexdev_ops mlx5_regexdev_ops = {
 	.dev_info_get = mlx5_regex_info_get,
+	.dev_configure = mlx5_regex_configure,
 };
 
 
@@ -158,6 +159,7 @@
 	priv->regexdev->dev_ops = &mlx5_regexdev_ops;
 	priv->regexdev->device = (struct rte_device *)pci_dev;
 	priv->regexdev->data->dev_private = priv;
+	priv->regexdev->state = RTE_REGEXDEV_READY;
 	return 0;
 
 error:
diff --git a/drivers/regex/mlx5/mlx5_regex.h b/drivers/regex/mlx5/mlx5_regex.h
index 9d0fc16..5238f24 100644
--- a/drivers/regex/mlx5/mlx5_regex.h
+++ b/drivers/regex/mlx5/mlx5_regex.h
@@ -5,15 +5,30 @@
 #ifndef MLX5_REGEX_H
 #define MLX5_REGEX_H
 
+struct mlx5_regex_sq {
+	uint32_t nb_desc; /* Number of desc for this object. */
+};
+
+struct mlx5_regex_qp {
+	uint32_t flags; /* QP user flags. */
+	uint32_t nb_desc; /* Total number of desc for thsi qp. */
+	struct mlx5_regex_sq *sqs; /* Pointer to sq array. */
+};
+
 struct mlx5_regex_priv {
 	TAILQ_ENTRY(mlx5_regex_priv) next;
 	struct ibv_context *ctx; /* Device context. */
 	struct rte_pci_device *pci_dev;
 	struct rte_regexdev *regexdev; /* Pointer to the RegEx dev. */
+	uint16_t nb_queues; /* Number of queues. */
+	struct mlx5_regex_qp *qps; /* Pointer to the qp array. */
+	uint16_t nb_max_matches; /* Max number of matches. */
 };
 
 /* mlx5_rxp.c */
 int mlx5_regex_info_get(struct rte_regexdev *dev,
 			struct rte_regexdev_info *info);
+int mlx5_regex_configure(struct rte_regexdev *dev,
+			 const struct rte_regexdev_config *cfg);
 
 #endif /* MLX5_REGEX_H */
diff --git a/drivers/regex/mlx5/mlx5_rxp.c b/drivers/regex/mlx5/mlx5_rxp.c
index 12d55ed..60a4640 100644
--- a/drivers/regex/mlx5/mlx5_rxp.c
+++ b/drivers/regex/mlx5/mlx5_rxp.c
@@ -2,13 +2,22 @@
  * Copyright 2020 Mellanox Technologies, Ltd
  */
 
+#include <errno.h>
+
 #include <rte_log.h>
 #include <rte_errno.h>
+#include <rte_malloc.h>
 #include <rte_regexdev.h>
 #include <rte_regexdev_core.h>
 #include <rte_regexdev_driver.h>
 
+#include <mlx5_glue.h>
+#include <mlx5_devx_cmds.h>
+#include <mlx5_prm.h>
+
 #include "mlx5_regex.h"
+#include "mlx5_regex_utils.h"
+#include "mlx5_rxp_csrs.h"
 
 #define MLX5_REGEX_MAX_MATCHES 255
 #define MLX5_REGEX_MAX_PAYLOAD_SIZE UINT16_MAX
@@ -29,7 +38,7 @@
  */
 int
 mlx5_regex_info_get(struct rte_regexdev *dev __rte_unused,
-		  struct rte_regexdev_info *info)
+		    struct rte_regexdev_info *info)
 {
 	info->max_matches = MLX5_REGEX_MAX_MATCHES;
 	info->max_payload_size = MLX5_REGEX_MAX_PAYLOAD_SIZE;
@@ -39,3 +48,271 @@
 	info->rule_flags = 0;
 	return 0;
 }
+
+static int
+rxp_poll_csr_for_value(struct ibv_context *ctx, uint32_t *value,
+		       uint32_t address, uint32_t expected_value,
+		       uint32_t expected_mask, uint32_t timeout_ms, uint8_t id)
+{
+	unsigned int i;
+	int ret;
+
+	ret = -EBUSY;
+	for (i = 0; i < timeout_ms; i++) {
+		if (mlx5_devx_regex_register_read(ctx, id, address, value))
+			return -1;
+
+		if ((*value & expected_mask) == expected_value) {
+			ret = 0;
+			break;
+		}
+		rte_delay_us(1000);
+	}
+	return ret;
+}
+
+/**
+ * Start the selected engine.
+ *
+ * @param ctx
+ *   The IBV context.
+ * @param id
+ *   The selected engine.
+ *
+ * @return
+ *   0 on success, a negative errno value otherwise and rte_errno is set.
+ */
+static int
+rxp_start_engine(struct ibv_context *ctx, uint8_t id)
+{
+	uint32_t ctrl;
+	int ret;
+
+	ret = mlx5_devx_regex_register_read(ctx, id, MLX5_RXP_CSR_CTRL, &ctrl);
+	if (ret)
+		return ret;
+	ctrl |= MLX5_RXP_CSR_CTRL_GO;
+	ret = mlx5_devx_regex_register_write(ctx, id, MLX5_RXP_CSR_CTRL, ctrl);
+	return ret;
+}
+
+/**
+ * Stop the selected engine.
+ *
+ * @param ctx
+ *   The IBV context.
+ * @param id
+ *   The selected engine.
+ *
+ * @return
+ *   0 on success, a negative errno value otherwise and rte_errno is set.
+ */
+static int
+rxp_stop_engine(struct ibv_context *ctx, uint8_t id)
+{
+	uint32_t ctrl;
+	int ret;
+
+	ret = mlx5_devx_regex_register_read(ctx, id, MLX5_RXP_CSR_CTRL, &ctrl);
+	if (ret)
+		return ret;
+	ctrl &= ~MLX5_RXP_CSR_CTRL_GO;
+	ret = mlx5_devx_regex_register_write(ctx, id, MLX5_RXP_CSR_CTRL, ctrl);
+	return ret;
+}
+
+static int
+rxp_init_rtru(struct ibv_context *ctx, uint8_t id, uint32_t init_bits)
+{
+	uint32_t ctrl_value;
+	uint32_t poll_value;
+	uint32_t expected_value;
+	uint32_t expected_mask;
+	int ret = 0;
+
+	/* Read the rtru ctrl CSR */
+	ret = mlx5_devx_regex_register_read(ctx, id, MLX5_RXP_RTRU_CSR_CTRL,
+					    &ctrl_value);
+	if (ret)
+		return -1;
+	/* Clear any previous init modes */
+	ctrl_value &= ~(MLX5_RXP_RTRU_CSR_CTRL_INIT_MODE_MASK);
+	if (ctrl_value & MLX5_RXP_RTRU_CSR_CTRL_INIT) {
+		ctrl_value &= ~(MLX5_RXP_RTRU_CSR_CTRL_INIT);
+		mlx5_devx_regex_register_write(ctx, id, MLX5_RXP_RTRU_CSR_CTRL,
+					       ctrl_value);
+	}
+	/* Set the init_mode bits in the rtru ctrl CSR */
+	ctrl_value |= init_bits;
+	mlx5_devx_regex_register_write(ctx, id, MLX5_RXP_RTRU_CSR_CTRL,
+				       ctrl_value);
+	/* Need to sleep for a short period after pulsing the rtru init bit.  */
+	rte_delay_us(20000);
+	/* Poll the rtru status CSR until all the init done bits are set. */
+	DRV_LOG(DEBUG, "waiting for RXP rule memory to complete init");
+	/* Set the init bit in the rtru ctrl CSR. */
+	ctrl_value |= MLX5_RXP_RTRU_CSR_CTRL_INIT;
+	mlx5_devx_regex_register_write(ctx, id, MLX5_RXP_RTRU_CSR_CTRL,
+				       ctrl_value);
+	/* Clear the init bit in the rtru ctrl CSR */
+	ctrl_value &= ~MLX5_RXP_RTRU_CSR_CTRL_INIT;
+	mlx5_devx_regex_register_write(ctx, id, MLX5_RXP_RTRU_CSR_CTRL,
+				       ctrl_value);
+	/* Check that the following bits are set in the RTRU_CSR. */
+	if (init_bits == MLX5_RXP_RTRU_CSR_CTRL_INIT_MODE_L1_L2) {
+		/* Must be incremental mode */
+		expected_value = MLX5_RXP_RTRU_CSR_STATUS_L1C_INIT_DONE |
+				 MLX5_RXP_RTRU_CSR_STATUS_L2C_INIT_DONE;
+	} else {
+		expected_value = MLX5_RXP_RTRU_CSR_STATUS_IM_INIT_DONE |
+				 MLX5_RXP_RTRU_CSR_STATUS_L1C_INIT_DONE |
+				 MLX5_RXP_RTRU_CSR_STATUS_L2C_INIT_DONE;
+	}
+	expected_mask = expected_value;
+	ret = rxp_poll_csr_for_value(ctx, &poll_value,
+				     MLX5_RXP_RTRU_CSR_STATUS,
+				     expected_value, expected_mask,
+				     MLX5_RXP_CSR_STATUS_TRIAL_TIMEOUT, id);
+	if (ret)
+		return ret;
+	DRV_LOG(DEBUG, "rule Memory initialise: 0x%08X", poll_value);
+	/* Clear the init bit in the rtru ctrl CSR */
+	ctrl_value &= ~(MLX5_RXP_RTRU_CSR_CTRL_INIT);
+	mlx5_devx_regex_register_write(ctx, id, MLX5_RXP_RTRU_CSR_CTRL,
+				       ctrl_value);
+	return 0;
+}
+
+/**
+ * Init the engine.
+ *
+ * @param ctx
+ *   The IBV context.
+ * @param id
+ *   The selected engine.
+ *
+ * @return
+ *   0 on success, a negative errno value otherwise and rte_errno is set.
+ */
+static int
+rxp_init(struct mlx5_regex_priv *priv, uint8_t id)
+{
+	uint32_t ctrl;
+	uint32_t reg;
+	struct ibv_context *ctx = priv->ctx;
+	int ret;
+
+	ret = mlx5_devx_regex_register_read(ctx, id, MLX5_RXP_CSR_CTRL, &ctrl);
+	if (ret)
+		return ret;
+	if (ctrl & MLX5_RXP_CSR_CTRL_INIT) {
+		ctrl &= ~MLX5_RXP_CSR_CTRL_INIT;
+		ret = mlx5_devx_regex_register_write(ctx, id, MLX5_RXP_CSR_CTRL,
+						     ctrl);
+		if (ret)
+			return ret;
+	}
+	ctrl |= MLX5_RXP_CSR_CTRL_INIT;
+	ret = mlx5_devx_regex_register_write(ctx, id, MLX5_RXP_CSR_CTRL, ctrl);
+	if (ret)
+		return ret;
+	ctrl &= ~MLX5_RXP_CSR_CTRL_INIT;
+	ret = mlx5_devx_regex_register_write(ctx, id, MLX5_RXP_CSR_CTRL, ctrl);
+	rte_delay_us(20000);
+
+	ret = rxp_poll_csr_for_value(ctx, &ctrl, MLX5_RXP_CSR_STATUS,
+				     MLX5_RXP_CSR_STATUS_INIT_DONE,
+				     MLX5_RXP_CSR_STATUS_INIT_DONE,
+				     MLX5_RXP_CSR_STATUS_TRIAL_TIMEOUT, id);
+	if (ret)
+		return ret;
+	ret = mlx5_devx_regex_register_read(ctx, id, MLX5_RXP_CSR_CTRL, &ctrl);
+	if (ret)
+		return ret;
+	ctrl &= ~MLX5_RXP_CSR_CTRL_INIT;
+	ret = mlx5_devx_regex_register_write(ctx, id, MLX5_RXP_CSR_CTRL,
+					     ctrl);
+	if (ret)
+		return ret;
+	rxp_init_rtru(ctx, id, MLX5_RXP_RTRU_CSR_CTRL_INIT_MODE_IM_L1_L2);
+	ret = rxp_init_rtru(ctx, id, MLX5_RXP_RTRU_CSR_CTRL_INIT_MODE_IM_L1_L2);
+	if (ret)
+		return ret;
+	ret = mlx5_devx_regex_register_read(ctx, id, MLX5_RXP_CSR_CAPABILITY_5,
+					    &reg);
+	if (ret)
+		return ret;
+	DRV_LOG(DEBUG, "max matches: %d, DDOS threshold: %d", reg >> 16,
+		reg & 0xffff);
+	ret = mlx5_devx_regex_register_write(ctx, id, MLX5_RXP_CSR_MAX_MATCH,
+					     priv->nb_max_matches);
+	ret |= mlx5_devx_regex_register_write(ctx, id,
+					      MLX5_RXP_CSR_MAX_LATENCY, 0);
+	ret |= mlx5_devx_regex_register_write(ctx, id,
+					      MLX5_RXP_CSR_MAX_PRI_THREAD, 0);
+	return ret;
+}
+
+/**
+ * DPDK callback for reading device info.
+ *
+ * @param dev
+ *   Pointer to RegEx device structure.
+ * @param[in] cfg
+ *   Pointer to the regexdev device configuration structure.
+ *
+ * @return
+ *   0 on success, a negative errno value otherwise and rte_errno is set.
+ */
+int
+mlx5_regex_configure(struct rte_regexdev *dev,
+		     const struct rte_regexdev_config *cfg)
+{
+	struct mlx5_regex_priv *priv = dev->data->dev_private;
+	int ret;
+	uint8_t id;
+
+	priv->nb_queues = cfg->nb_queue_pairs;
+	priv->qps = rte_zmalloc(NULL, sizeof(struct mlx5_regex_qp) *
+				priv->nb_queues, 0);
+	if (!priv->nb_queues) {
+		DRV_LOG(ERR, "can't allocate qps memory");
+		rte_errno = ENOMEM;
+		return -rte_errno;
+	}
+	priv->nb_max_matches = cfg->nb_max_matches;
+	for (id = 0; id < 2; id++) {
+		ret = rxp_stop_engine(priv->ctx, id);
+		if (ret) {
+			DRV_LOG(ERR, "can't stop engine.");
+			rte_errno = ENODEV;
+			return -rte_errno;
+		}
+		ret = rxp_init(priv, id);
+		if (ret) {
+			DRV_LOG(ERR, "can't init engine.");
+			rte_errno = ENODEV;
+			return -rte_errno;
+		}
+		ret = mlx5_devx_regex_register_write(priv->ctx, id,
+						     MLX5_RXP_CSR_MAX_MATCH,
+						     priv->nb_max_matches);
+		if (ret) {
+			DRV_LOG(ERR, "can't update number of matches.");
+			rte_errno = ENODEV;
+			goto configure_error;
+		}
+		ret = rxp_start_engine(priv->ctx, id);
+		if (ret) {
+			DRV_LOG(ERR, "can't start engine.");
+			rte_errno = ENODEV;
+			goto configure_error;
+		}
+
+	}
+	return 0;
+configure_error:
+	if (priv->qps)
+		rte_free(priv->qps);
+	return -rte_errno;
+}
-- 
1.8.3.1


  parent reply	other threads:[~2020-07-05  9:26 UTC|newest]

Thread overview: 119+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-05  9:23 [dpdk-dev] [PATCH 00/20] add Mellanox RegEx PMD Ori Kam
2020-07-05  9:23 ` [dpdk-dev] [PATCH 01/20] regex/mlx5: add RegEx PMD layer and mlx5 driver Ori Kam
2020-07-05 10:59   ` Wang, Haiyue
2020-07-05 11:32     ` Ori Kam
2020-07-06 22:47   ` Thomas Monjalon
2020-07-05  9:23 ` [dpdk-dev] [PATCH 02/20] regex/mlx5: add log utils Ori Kam
2020-07-05  9:23 ` [dpdk-dev] [PATCH 03/20] common/mlx5: add MMO and regexp structs/opcodes Ori Kam
2020-07-08  7:32   ` Slava Ovsiienko
2020-07-05  9:23 ` [dpdk-dev] [PATCH 04/20] common/mlx5: add mlx5 regex command structs Ori Kam
2020-07-08  7:32   ` Slava Ovsiienko
2020-07-05  9:23 ` [dpdk-dev] [PATCH 05/20] common/mlx5: add support for regex capability query Ori Kam
2020-07-08  7:32   ` Slava Ovsiienko
2020-07-05  9:23 ` [dpdk-dev] [PATCH 06/20] regex/mlx5: add probe function Ori Kam
2020-07-05  9:23 ` [dpdk-dev] [PATCH 07/20] common/mlx5: add rxp database set cmd Ori Kam
2020-07-08  7:32   ` Slava Ovsiienko
2020-07-05  9:23 ` [dpdk-dev] [PATCH 08/20] regex/mlx5: add RXP register definitions Ori Kam
2020-07-05  9:23 ` [dpdk-dev] [PATCH 09/20] common/mlx5: add write and read RXP registers Ori Kam
2020-07-08  7:32   ` Slava Ovsiienko
2020-07-05  9:23 ` [dpdk-dev] [PATCH 10/20] regex/mlx5: add engine status check Ori Kam
2020-07-05  9:23 ` [dpdk-dev] [PATCH 11/20] regex/mlx5: add get info function Ori Kam
2020-07-05  9:23 ` Ori Kam [this message]
2020-07-05  9:23 ` [dpdk-dev] [PATCH 13/20] regex/mlx5: add program rules support Ori Kam
2020-07-05  9:23 ` [dpdk-dev] [PATCH 14/20] regex/mlx5: add completion queue creation Ori Kam
2020-07-05  9:23 ` [dpdk-dev] [PATCH 15/20] regex/mlx5: add send queue support Ori Kam
2020-07-05  9:23 ` [dpdk-dev] [PATCH 16/20] common/mlx5: add match tuple hw layout Ori Kam
2020-07-08  7:32   ` Slava Ovsiienko
2020-07-05  9:23 ` [dpdk-dev] [PATCH 17/20] regex/mlx5: fastpath setup Ori Kam
2020-07-05  9:23 ` [dpdk-dev] [PATCH 18/20] regex/mlx5: add enqueue implementation Ori Kam
2020-07-05  9:23 ` [dpdk-dev] [PATCH 19/20] regex/mlx5: implement dequeue function Ori Kam
2020-07-05  9:23 ` [dpdk-dev] [PATCH 20/20] maintainers: add maintainers to regexdev lib Ori Kam
2020-07-12 20:58 ` [dpdk-dev] [PATCH v2 00/20] add Mellanox RegEx PMD Ori Kam
2020-07-12 20:58   ` [dpdk-dev] [PATCH v2 01/20] regex/mlx5: add RegEx PMD layer and mlx5 driver Ori Kam
2020-07-15 17:20     ` Thomas Monjalon
2020-07-15 17:29     ` Thomas Monjalon
2020-07-12 20:58   ` [dpdk-dev] [PATCH v2 02/20] regex/mlx5: add log utils Ori Kam
2020-07-15 17:32     ` Thomas Monjalon
2020-07-12 20:58   ` [dpdk-dev] [PATCH v2 03/20] common/mlx5: add MMO and regexp structs/opcodes Ori Kam
2020-07-12 20:58   ` [dpdk-dev] [PATCH v2 04/20] common/mlx5: add mlx5 regex command structs Ori Kam
2020-07-15 17:24     ` Thomas Monjalon
2020-07-12 20:58   ` [dpdk-dev] [PATCH v2 05/20] common/mlx5: add support for regex capability query Ori Kam
2020-07-15 17:26     ` Thomas Monjalon
2020-07-12 20:58   ` [dpdk-dev] [PATCH v2 06/20] regex/mlx5: add probe function Ori Kam
2020-07-15 17:38     ` Thomas Monjalon
2020-07-15 19:02     ` Thomas Monjalon
2020-07-12 20:58   ` [dpdk-dev] [PATCH v2 07/20] common/mlx5: add rxp database set cmd Ori Kam
2020-07-12 20:58   ` [dpdk-dev] [PATCH v2 08/20] regex/mlx5: add RXP register definitions Ori Kam
2020-07-12 20:58   ` [dpdk-dev] [PATCH v2 09/20] common/mlx5: add write and read RXP registers Ori Kam
2020-07-15 17:34     ` Thomas Monjalon
2020-07-12 20:58   ` [dpdk-dev] [PATCH v2 10/20] regex/mlx5: add engine status check Ori Kam
2020-07-12 20:58   ` [dpdk-dev] [PATCH v2 11/20] regex/mlx5: add get info function Ori Kam
2020-07-12 20:58   ` [dpdk-dev] [PATCH v2 12/20] regex/mlx5: add configure function Ori Kam
2020-07-12 20:58   ` [dpdk-dev] [PATCH v2 13/20] regex/mlx5: add program rules support Ori Kam
2020-07-12 20:58   ` [dpdk-dev] [PATCH v2 14/20] regex/mlx5: add completion queue creation Ori Kam
2020-07-12 20:58   ` [dpdk-dev] [PATCH v2 15/20] regex/mlx5: add send queue support Ori Kam
2020-07-12 20:58   ` [dpdk-dev] [PATCH v2 16/20] common/mlx5: add match tuple hw layout Ori Kam
2020-07-12 20:58   ` [dpdk-dev] [PATCH v2 17/20] regex/mlx5: fastpath setup Ori Kam
2020-07-12 20:58   ` [dpdk-dev] [PATCH v2 18/20] regex/mlx5: add enqueue implementation Ori Kam
2020-07-12 20:59   ` [dpdk-dev] [PATCH v2 19/20] regex/mlx5: implement dequeue function Ori Kam
2020-07-12 20:59   ` [dpdk-dev] [PATCH v2 20/20] regex/mlx5: add start stop functions Ori Kam
2020-07-15 16:48   ` [dpdk-dev] [PATCH v2 00/20] add Mellanox RegEx PMD Thomas Monjalon
2020-07-17 10:27 ` [dpdk-dev] [PATCH v3 00/13] " Ori Kam
2020-07-17 10:27   ` [dpdk-dev] [PATCH v3 01/13] regex/mlx5: add RegEx PMD layer and mlx5 driver Ori Kam
2020-07-17 10:27   ` [dpdk-dev] [PATCH v3 02/13] regex/mlx5: add log utils Ori Kam
2020-07-17 10:27   ` [dpdk-dev] [PATCH v3 03/13] regex/mlx5: add probe function Ori Kam
2020-07-17 10:27   ` [dpdk-dev] [PATCH v3 04/13] regex/mlx5: add get info function Ori Kam
2020-07-17 10:27   ` [dpdk-dev] [PATCH v3 05/13] regex/mlx5: add engine status check Ori Kam
2020-07-17 10:27   ` [dpdk-dev] [PATCH v3 06/13] regex/mlx5: add configure function Ori Kam
2020-07-17 10:27   ` [dpdk-dev] [PATCH v3 07/13] regex/mlx5: add program rules support Ori Kam
2020-07-17 10:27   ` [dpdk-dev] [PATCH v3 08/13] regex/mlx5: add completion queue creation Ori Kam
2020-07-17 10:27   ` [dpdk-dev] [PATCH v3 09/13] regex/mlx5: add send queue support Ori Kam
2020-07-17 10:27   ` [dpdk-dev] [PATCH v3 10/13] regex/mlx5: fastpath setup Ori Kam
2020-07-17 10:27   ` [dpdk-dev] [PATCH v3 11/13] regex/mlx5: add enqueue implementation Ori Kam
2020-07-17 10:27   ` [dpdk-dev] [PATCH v3 12/13] regex/mlx5: implement dequeue function Ori Kam
2020-07-17 10:27   ` [dpdk-dev] [PATCH v3 13/13] regex/mlx5: add start stop functions Ori Kam
2020-07-17 11:10 ` [dpdk-dev] [PATCH v4 00/13] add Mellanox RegEx PMD Ori Kam
2020-07-17 11:10   ` [dpdk-dev] [PATCH v4 01/13] regex/mlx5: add RegEx PMD layer and mlx5 driver Ori Kam
2020-07-17 11:10   ` [dpdk-dev] [PATCH v4 02/13] regex/mlx5: add log utils Ori Kam
2020-07-17 11:10   ` [dpdk-dev] [PATCH v4 03/13] regex/mlx5: add probe function Ori Kam
2020-07-17 11:10   ` [dpdk-dev] [PATCH v4 04/13] regex/mlx5: add get info function Ori Kam
2020-07-17 11:10   ` [dpdk-dev] [PATCH v4 05/13] regex/mlx5: add engine status check Ori Kam
2020-07-17 11:10   ` [dpdk-dev] [PATCH v4 06/13] regex/mlx5: add configure function Ori Kam
2020-07-17 11:10   ` [dpdk-dev] [PATCH v4 07/13] regex/mlx5: add program rules support Ori Kam
2020-07-17 11:10   ` [dpdk-dev] [PATCH v4 08/13] regex/mlx5: add completion queue creation Ori Kam
2020-07-17 11:10   ` [dpdk-dev] [PATCH v4 09/13] regex/mlx5: add send queue support Ori Kam
2020-07-17 11:11   ` [dpdk-dev] [PATCH v4 10/13] regex/mlx5: fastpath setup Ori Kam
2020-07-17 11:11   ` [dpdk-dev] [PATCH v4 11/13] regex/mlx5: add enqueue implementation Ori Kam
2020-07-17 11:11   ` [dpdk-dev] [PATCH v4 12/13] regex/mlx5: implement dequeue function Ori Kam
2020-07-17 11:11   ` [dpdk-dev] [PATCH v4 13/13] regex/mlx5: add start stop functions Ori Kam
2020-07-19 18:09 ` [dpdk-dev] [PATCH v5 00/13] add Mellanox RegEx PMD Ori Kam
2020-07-19 18:09   ` [dpdk-dev] [PATCH v5 01/13] regex/mlx5: add RegEx PMD layer and mlx5 driver Ori Kam
2020-07-19 22:15     ` Thomas Monjalon
2020-07-20  4:50       ` Ori Kam
2020-07-19 18:09   ` [dpdk-dev] [PATCH v5 02/13] regex/mlx5: add log utils Ori Kam
2020-07-19 18:09   ` [dpdk-dev] [PATCH v5 03/13] regex/mlx5: add probe function Ori Kam
2020-07-19 18:09   ` [dpdk-dev] [PATCH v5 04/13] regex/mlx5: add get info function Ori Kam
2020-07-19 18:09   ` [dpdk-dev] [PATCH v5 05/13] regex/mlx5: add engine status check Ori Kam
2020-07-19 18:09   ` [dpdk-dev] [PATCH v5 06/13] regex/mlx5: add configure function Ori Kam
2020-07-19 18:09   ` [dpdk-dev] [PATCH v5 07/13] regex/mlx5: add program rules support Ori Kam
2020-07-19 18:09   ` [dpdk-dev] [PATCH v5 08/13] regex/mlx5: add completion queue creation Ori Kam
2020-07-19 18:09   ` [dpdk-dev] [PATCH v5 09/13] regex/mlx5: add send queue support Ori Kam
2020-07-19 18:09   ` [dpdk-dev] [PATCH v5 10/13] regex/mlx5: fastpath setup Ori Kam
2020-07-19 18:09   ` [dpdk-dev] [PATCH v5 11/13] regex/mlx5: add enqueue implementation Ori Kam
2020-07-19 18:09   ` [dpdk-dev] [PATCH v5 12/13] regex/mlx5: implement dequeue function Ori Kam
2020-07-19 18:09   ` [dpdk-dev] [PATCH v5 13/13] regex/mlx5: add start stop functions Ori Kam
2020-07-20  6:26 ` [dpdk-dev] [PATCH v6 00/13] add Mellanox RegEx PMD Ori Kam
2020-07-20  6:26   ` [dpdk-dev] [PATCH v6 01/13] regex/mlx5: add RegEx PMD layer and mlx5 driver Ori Kam
2020-07-20  6:26   ` [dpdk-dev] [PATCH v6 02/13] regex/mlx5: add log utils Ori Kam
2020-07-20  6:26   ` [dpdk-dev] [PATCH v6 03/13] regex/mlx5: add probe function Ori Kam
2020-07-20  6:26   ` [dpdk-dev] [PATCH v6 04/13] regex/mlx5: add get info function Ori Kam
2020-07-20  6:26   ` [dpdk-dev] [PATCH v6 05/13] regex/mlx5: add engine status check Ori Kam
2020-07-20  6:26   ` [dpdk-dev] [PATCH v6 06/13] regex/mlx5: add configure function Ori Kam
2020-07-20  6:26   ` [dpdk-dev] [PATCH v6 07/13] regex/mlx5: add program rules support Ori Kam
2020-07-20  6:26   ` [dpdk-dev] [PATCH v6 08/13] regex/mlx5: add completion queue creation Ori Kam
2020-07-20  6:26   ` [dpdk-dev] [PATCH v6 09/13] regex/mlx5: add send queue support Ori Kam
2020-07-20  6:26   ` [dpdk-dev] [PATCH v6 10/13] regex/mlx5: fastpath setup Ori Kam
2020-07-20  6:26   ` [dpdk-dev] [PATCH v6 11/13] regex/mlx5: add enqueue implementation Ori Kam
2020-07-20  6:26   ` [dpdk-dev] [PATCH v6 12/13] regex/mlx5: implement dequeue function Ori Kam
2020-07-20  6:26   ` [dpdk-dev] [PATCH v6 13/13] regex/mlx5: add start stop functions Ori Kam
2020-07-21 17:06   ` [dpdk-dev] [PATCH v6 00/13] add Mellanox RegEx PMD 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=1593941027-86651-13-git-send-email-orika@mellanox.com \
    --to=orika@mellanox.com \
    --cc=alexr@mellanox.com \
    --cc=arthur.su@lionic.com \
    --cc=bruce.richardson@intel.com \
    --cc=davidfgao@tencent.com \
    --cc=deri@ntop.org \
    --cc=dev@dpdk.org \
    --cc=dovrat@marvell.com \
    --cc=fanchenggang@sunyainfo.com \
    --cc=fc@napatech.com \
    --cc=gu.jian1@zte.com.cn \
    --cc=guyk@marvell.com \
    --cc=harry.chang@intel.com \
    --cc=hemant.agrawal@nxp.com \
    --cc=hongjun.ni@intel.com \
    --cc=jerinj@marvell.com \
    --cc=jim@netgate.com \
    --cc=liuzhong1@chinaunicom.cn \
    --cc=lixingfu@huachentel.com \
    --cc=matan@mellanox.com \
    --cc=nipun.gupta@nxp.com \
    --cc=oc@yunify.com \
    --cc=opher@mellanox.com \
    --cc=pbhagavatula@marvell.com \
    --cc=pkapoor@marvell.com \
    --cc=rasland@mellanox.com \
    --cc=shahafs@mellanox.com \
    --cc=shanjiangh@chinatelecom.cn \
    --cc=thomas@monjalon.net \
    --cc=viacheslavo@mellanox.com \
    --cc=wushuai@inspur.com \
    --cc=xiang.w.wang@intel.com \
    --cc=yang.a.hong@intel.com \
    --cc=yuyingxia@yxlink.com \
    --cc=zhangy.yun@chinatelecom.cn \
    --cc=zhaoyong11@huawei.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.