From: Maayan Kashani <mkashani@nvidia.com>
To: <dev@dpdk.org>
Cc: <mkashani@nvidia.com>, <dsosnowski@nvidia.com>,
<rasland@nvidia.com>,
Viacheslav Ovsiienko <viacheslavo@nvidia.com>,
Ori Kam <orika@nvidia.com>, Suanming Mou <suanmingm@nvidia.com>,
Matan Azrad <matan@nvidia.com>
Subject: [PATCH v3 11/11] net/mlx5: initial design changes
Date: Mon, 3 Jun 2024 13:48:50 +0300 [thread overview]
Message-ID: <20240603104850.9935-11-mkashani@nvidia.com> (raw)
In-Reply-To: <20240603104850.9935-1-mkashani@nvidia.com>
Change flow_drv_list_create/destroy to mlx5_flow_list_create/destroy.
Remove resource release function inlining.
Check number of queues in template mode in hw configure function.
Use user priority to calculate matcher priority.
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
---
drivers/net/mlx5/mlx5_flow.c | 70 +++++++---------------
drivers/net/mlx5/mlx5_flow_hw.c | 100 +++++++++++++++-----------------
2 files changed, 68 insertions(+), 102 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index 68f20300a5..32d6defdb0 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -4928,19 +4928,6 @@ flow_check_hairpin_split(struct rte_eth_dev *dev,
return 0;
}
-/* Declare flow create/destroy prototype in advance. */
-
-static uintptr_t
-flow_drv_list_create(struct rte_eth_dev *dev, enum mlx5_flow_type type,
- const struct rte_flow_attr *attr,
- const struct rte_flow_item items[],
- const struct rte_flow_action actions[],
- bool external, struct rte_flow_error *error);
-
-static void
-flow_drv_list_destroy(struct rte_eth_dev *dev, enum mlx5_flow_type type,
- uintptr_t flow_idx);
-
int
flow_dv_mreg_match_cb(void *tool_ctx __rte_unused,
struct mlx5_list_entry *entry, void *cb_ctx)
@@ -5059,7 +5046,7 @@ flow_dv_mreg_create_cb(void *tool_ctx, void *cb_ctx)
* be applied, removed, deleted in arbitrary order
* by list traversing.
*/
- mcp_res->rix_flow = flow_drv_list_create(dev, MLX5_FLOW_TYPE_MCP,
+ mcp_res->rix_flow = mlx5_flow_list_create(dev, MLX5_FLOW_TYPE_MCP,
&attr, items, actions, false, error);
if (!mcp_res->rix_flow) {
mlx5_ipool_free(priv->sh->ipool[MLX5_IPOOL_MCP], idx);
@@ -5153,7 +5140,7 @@ flow_dv_mreg_remove_cb(void *tool_ctx, struct mlx5_list_entry *entry)
struct mlx5_priv *priv = dev->data->dev_private;
MLX5_ASSERT(mcp_res->rix_flow);
- flow_drv_list_destroy(dev, MLX5_FLOW_TYPE_MCP, mcp_res->rix_flow);
+ mlx5_flow_list_destroy(dev, MLX5_FLOW_TYPE_MCP, mcp_res->rix_flow);
mlx5_ipool_free(priv->sh->ipool[MLX5_IPOOL_MCP], mcp_res->idx);
}
@@ -7540,7 +7527,7 @@ mlx5_flow_create_esw_table_zero_flow(struct rte_eth_dev *dev)
};
struct rte_flow_error error;
- return (void *)(uintptr_t)flow_drv_list_create(dev, MLX5_FLOW_TYPE_CTL,
+ return (void *)(uintptr_t)mlx5_flow_list_create(dev, MLX5_FLOW_TYPE_CTL,
&attr, &pattern,
actions, false, &error);
}
@@ -7608,14 +7595,14 @@ mlx5_flow_create_devx_sq_miss_flow(struct rte_eth_dev *dev, uint32_t sq_num)
* Creates group 0, highest priority jump flow.
* Matches txq to bypass kernel packets.
*/
- if (flow_drv_list_create(dev, MLX5_FLOW_TYPE_CTL, &attr, pattern, actions,
+ if (mlx5_flow_list_create(dev, MLX5_FLOW_TYPE_CTL, &attr, pattern, actions,
false, &error) == 0)
return 0;
/* Create group 1, lowest priority redirect flow for txq. */
attr.group = 1;
actions[0].conf = &port;
actions[0].type = RTE_FLOW_ACTION_TYPE_PORT_ID;
- return flow_drv_list_create(dev, MLX5_FLOW_TYPE_CTL, &attr, pattern,
+ return mlx5_flow_list_create(dev, MLX5_FLOW_TYPE_CTL, &attr, pattern,
actions, false, &error);
}
@@ -7771,7 +7758,7 @@ mlx5_flow_cache_flow_toggle(struct rte_eth_dev *dev, bool orig_prio)
flow_info->flow_idx_low_prio);
if (high && low) {
RTE_SWAP(*low, *high);
- flow_drv_list_destroy(dev, MLX5_FLOW_TYPE_GEN,
+ mlx5_flow_list_destroy(dev, MLX5_FLOW_TYPE_GEN,
flow_info->flow_idx_low_prio);
flow_info->flow_idx_high_prio = 0;
}
@@ -7785,7 +7772,7 @@ mlx5_flow_cache_flow_toggle(struct rte_eth_dev *dev, bool orig_prio)
while (flow_info) {
if (flow_info->orig_prio != flow_info->attr.priority) {
if (flow_info->flow_idx_high_prio)
- flow_drv_list_destroy(dev, MLX5_FLOW_TYPE_GEN,
+ mlx5_flow_list_destroy(dev, MLX5_FLOW_TYPE_GEN,
flow_info->flow_idx_high_prio);
else
break;
@@ -7940,12 +7927,13 @@ mlx5_flow_create(struct rte_eth_dev *dev,
RTE_PMD_MLX5_FLOW_ENGINE_FLAG_STANDBY_DUP_INGRESS)))
new_attr->priority += 1;
}
- flow_idx = flow_drv_list_create(dev, MLX5_FLOW_TYPE_GEN, attr, items, actions, true, error);
+ flow_idx = mlx5_flow_list_create(dev, MLX5_FLOW_TYPE_GEN, attr, items, actions,
+ true, error);
if (!flow_idx)
return NULL;
if (unlikely(mlx5_need_cache_flow(priv, attr))) {
if (mlx5_flow_cache_flow_info(dev, attr, prio, items, actions, flow_idx)) {
- flow_drv_list_destroy(dev, MLX5_FLOW_TYPE_GEN, flow_idx);
+ mlx5_flow_list_destroy(dev, MLX5_FLOW_TYPE_GEN, flow_idx);
flow_idx = 0;
}
}
@@ -7958,17 +7946,6 @@ mlx5_flow_list_create(struct rte_eth_dev *dev, enum mlx5_flow_type type,
const struct rte_flow_item items[],
const struct rte_flow_action actions[],
bool external, struct rte_flow_error *error)
-{
- return flow_drv_list_create(dev, type, attr, items, actions, external,
- error);
-}
-
-uintptr_t
-flow_drv_list_create(struct rte_eth_dev *dev, enum mlx5_flow_type type,
- const struct rte_flow_attr *attr,
- const struct rte_flow_item items[],
- const struct rte_flow_action actions[],
- bool external, struct rte_flow_error *error)
{
const struct mlx5_flow_driver_ops *fops;
enum mlx5_flow_drv_type drv_type = flow_get_drv_type(dev, attr);
@@ -8017,8 +7994,8 @@ flow_legacy_list_destroy(struct rte_eth_dev *dev, enum mlx5_flow_type type,
mlx5_ipool_free(priv->flows[type], flow_idx);
}
-static void
-flow_drv_list_destroy(struct rte_eth_dev *dev, enum mlx5_flow_type type,
+void
+mlx5_flow_list_destroy(struct rte_eth_dev *dev, enum mlx5_flow_type type,
uintptr_t flow_idx)
{
const struct mlx5_flow_driver_ops *fops;
@@ -8029,13 +8006,6 @@ flow_drv_list_destroy(struct rte_eth_dev *dev, enum mlx5_flow_type type,
fops->list_destroy(dev, type, flow_idx);
}
-void
-mlx5_flow_list_destroy(struct rte_eth_dev *dev, enum mlx5_flow_type type,
- uintptr_t flow_idx)
-{
- flow_drv_list_destroy(dev, type, flow_idx);
-}
-
/**
* Destroy all flows.
*
@@ -8064,9 +8034,9 @@ mlx5_flow_list_flush(struct rte_eth_dev *dev, enum mlx5_flow_type type,
#endif
MLX5_IPOOL_FOREACH(priv->flows[type], fidx, flow) {
if (priv->sh->config.dv_flow_en == 2) {
- flow_drv_list_destroy(dev, type, (uintptr_t)flow);
+ mlx5_flow_list_destroy(dev, type, (uintptr_t)flow);
} else {
- flow_drv_list_destroy(dev, type, fidx);
+ mlx5_flow_list_destroy(dev, type, fidx);
}
if (unlikely(mlx5_need_cache_flow(priv, NULL) && type == MLX5_FLOW_TYPE_GEN)) {
flow_info = LIST_FIRST(&mode_info->hot_upgrade);
@@ -8339,7 +8309,7 @@ mlx5_ctrl_flow_source_queue(struct rte_eth_dev *dev,
actions[0].type = RTE_FLOW_ACTION_TYPE_JUMP;
actions[0].conf = &jump;
actions[1].type = RTE_FLOW_ACTION_TYPE_END;
- flow_idx = flow_drv_list_create(dev, MLX5_FLOW_TYPE_CTL,
+ flow_idx = mlx5_flow_list_create(dev, MLX5_FLOW_TYPE_CTL,
&attr, items, actions, false, &error);
if (!flow_idx) {
DRV_LOG(DEBUG,
@@ -8429,7 +8399,7 @@ mlx5_ctrl_flow_vlan(struct rte_eth_dev *dev,
action_rss.types = 0;
for (i = 0; i != priv->reta_idx_n; ++i)
queue[i] = (*priv->reta_idx)[i];
- flow_idx = flow_drv_list_create(dev, MLX5_FLOW_TYPE_CTL,
+ flow_idx = mlx5_flow_list_create(dev, MLX5_FLOW_TYPE_CTL,
&attr, items, actions, false, &error);
if (!flow_idx)
return -rte_errno;
@@ -8504,7 +8474,7 @@ mlx5_flow_lacp_miss(struct rte_eth_dev *dev)
},
};
struct rte_flow_error error;
- uint32_t flow_idx = flow_drv_list_create(dev, MLX5_FLOW_TYPE_CTL,
+ uint32_t flow_idx = mlx5_flow_list_create(dev, MLX5_FLOW_TYPE_CTL,
&attr, items, actions,
false, &error);
@@ -8528,7 +8498,7 @@ mlx5_flow_destroy(struct rte_eth_dev *dev,
struct rte_pmd_mlx5_flow_engine_mode_info *mode_info = &priv->mode_info;
struct mlx5_dv_flow_info *flow_info;
- flow_drv_list_destroy(dev, MLX5_FLOW_TYPE_GEN,
+ mlx5_flow_list_destroy(dev, MLX5_FLOW_TYPE_GEN,
(uintptr_t)(void *)flow);
if (unlikely(mlx5_need_cache_flow(priv, NULL))) {
flow_info = LIST_FIRST(&mode_info->hot_upgrade);
@@ -9840,14 +9810,14 @@ mlx5_flow_discover_mreg_c(struct rte_eth_dev *dev)
if (!priv->sh->config.dv_flow_en)
break;
/* Create internal flow, validation skips copy action. */
- flow_idx = flow_drv_list_create(dev, MLX5_FLOW_TYPE_GEN, &attr,
+ flow_idx = mlx5_flow_list_create(dev, MLX5_FLOW_TYPE_GEN, &attr,
items, actions, false, &error);
flow = mlx5_ipool_get(priv->flows[MLX5_FLOW_TYPE_GEN],
flow_idx);
if (!flow)
continue;
priv->sh->flow_mreg_c[n++] = idx;
- flow_drv_list_destroy(dev, MLX5_FLOW_TYPE_GEN, flow_idx);
+ mlx5_flow_list_destroy(dev, MLX5_FLOW_TYPE_GEN, flow_idx);
}
for (; n < MLX5_MREG_C_NUM; ++n)
priv->sh->flow_mreg_c[n] = REG_NON;
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 3022a86344..d938b5976a 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -2254,12 +2254,12 @@ mlx5_create_ipv6_ext_reformat(struct rte_eth_dev *dev,
*/
static int
__flow_hw_translate_actions_template(struct rte_eth_dev *dev,
- const struct mlx5_flow_template_table_cfg *cfg,
- struct mlx5_hw_actions *acts,
- struct rte_flow_actions_template *at,
- struct mlx5_tbl_multi_pattern_ctx *mp_ctx,
- bool nt_mode __rte_unused,
- struct rte_flow_error *error)
+ const struct mlx5_flow_template_table_cfg *cfg,
+ struct mlx5_hw_actions *acts,
+ struct rte_flow_actions_template *at,
+ struct mlx5_tbl_multi_pattern_ctx *mp_ctx,
+ bool nt_mode,
+ struct rte_flow_error *error)
{
struct mlx5_priv *priv = dev->data->dev_private;
const struct rte_flow_template_table_attr *table_attr = &cfg->attr;
@@ -10609,7 +10609,7 @@ static int
flow_hw_validate_attributes(const struct rte_flow_port_attr *port_attr,
uint16_t nb_queue,
const struct rte_flow_queue_attr *queue_attr[],
- struct rte_flow_error *error)
+ bool nt_mode, struct rte_flow_error *error)
{
uint32_t size;
unsigned int i;
@@ -10618,7 +10618,7 @@ flow_hw_validate_attributes(const struct rte_flow_port_attr *port_attr,
return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL,
"Port attributes must be non-NULL");
- if (nb_queue == 0)
+ if (nb_queue == 0 && !nt_mode)
return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL,
"At least one flow queue is required");
@@ -10695,7 +10695,7 @@ __flow_hw_configure(struct rte_eth_dev *dev,
rte_errno = EINVAL;
goto err;
}
- if (flow_hw_validate_attributes(port_attr, nb_queue, queue_attr, error))
+ if (flow_hw_validate_attributes(port_attr, nb_queue, queue_attr, nt_mode, error))
return -rte_errno;
/*
* Calling rte_flow_configure() again is allowed if
@@ -10713,7 +10713,7 @@ __flow_hw_configure(struct rte_eth_dev *dev,
}
}
/* If previous configuration was not default non template mode config. */
- if (!(priv->hw_attr->nt_mode)) {
+ if (!priv->hw_attr->nt_mode) {
if (flow_hw_compare_config(priv->hw_attr, port_attr, nb_queue, queue_attr))
return 0;
else
@@ -12176,6 +12176,7 @@ flow_hw_get_aged_flows(struct rte_eth_dev *dev, void **contexts,
/**
* Initialization function for non template API which calls
* flow_hw_configure with default values.
+ * Configure non queues cause 1 queue is configured by default for inner usage.
*
* @param[in] dev
* Pointer to the Ethernet device structure.
@@ -12185,8 +12186,6 @@ flow_hw_get_aged_flows(struct rte_eth_dev *dev, void **contexts,
* @return
* 0 on success, a negative errno value otherwise and rte_errno is set.
*/
- /* Configure non queues cause 1 queue is configured by default for inner usage. */
-
int
flow_hw_init(struct rte_eth_dev *dev,
struct rte_flow_error *error)
@@ -12214,10 +12213,10 @@ flow_hw_init(struct rte_eth_dev *dev,
}
static int flow_hw_prepare(struct rte_eth_dev *dev,
- const struct rte_flow_action actions[] __rte_unused,
- enum mlx5_flow_type type,
- struct rte_flow_hw **flow,
- struct rte_flow_error *error)
+ const struct rte_flow_action actions[] __rte_unused,
+ enum mlx5_flow_type type,
+ struct rte_flow_hw **flow,
+ struct rte_flow_error *error)
{
struct mlx5_priv *priv = dev->data->dev_private;
uint32_t idx = 0;
@@ -12340,14 +12339,14 @@ flow_hw_encap_decap_resource_register
static int
flow_hw_translate_flow_actions(struct rte_eth_dev *dev,
- const struct rte_flow_attr *attr,
- const struct rte_flow_action actions[],
- struct rte_flow_hw *flow,
- struct mlx5_flow_hw_action_params *ap,
- struct mlx5_hw_actions *hw_acts,
- uint64_t item_flags,
- bool external,
- struct rte_flow_error *error)
+ const struct rte_flow_attr *attr,
+ const struct rte_flow_action actions[],
+ struct rte_flow_hw *flow,
+ struct mlx5_flow_hw_action_params *ap,
+ struct mlx5_hw_actions *hw_acts,
+ uint64_t item_flags,
+ bool external,
+ struct rte_flow_error *error)
{
int ret = 0;
uint32_t src_group = 0;
@@ -12445,12 +12444,12 @@ flow_hw_translate_flow_actions(struct rte_eth_dev *dev,
}
static int flow_hw_register_matcher(struct rte_eth_dev *dev,
- const struct rte_flow_attr *attr,
- const struct rte_flow_item items[],
- bool external,
- struct rte_flow_hw *flow,
- struct mlx5_flow_dv_matcher *matcher,
- struct rte_flow_error *error)
+ const struct rte_flow_attr *attr,
+ const struct rte_flow_item items[],
+ bool external,
+ struct rte_flow_hw *flow,
+ struct mlx5_flow_dv_matcher *matcher,
+ struct rte_flow_error *error)
{
struct mlx5_priv *priv = dev->data->dev_private;
struct rte_flow_error sub_error = {
@@ -12481,10 +12480,7 @@ static int flow_hw_register_matcher(struct rte_eth_dev *dev,
matcher->crc = rte_raw_cksum((const void *)matcher->mask.buf,
matcher->mask.size);
- matcher->priority = mlx5_get_matcher_priority(dev, attr,
- matcher->priority,
- external);
-
+ matcher->priority = attr->priority;
ret = __translate_group(dev, attr, external, attr->group, &group, error);
if (ret)
return ret;
@@ -12592,10 +12588,10 @@ static int flow_hw_ensure_action_pools_allocated(struct rte_eth_dev *dev,
/* TODO: remove dev if not used */
static int flow_hw_apply(struct rte_eth_dev *dev __rte_unused,
- const struct rte_flow_item items[],
- struct mlx5dr_rule_action rule_actions[],
- struct rte_flow_hw *flow,
- struct rte_flow_error *error)
+ const struct rte_flow_item items[],
+ struct mlx5dr_rule_action rule_actions[],
+ struct rte_flow_hw *flow,
+ struct rte_flow_error *error)
{
struct mlx5dr_bwc_rule *rule = NULL;
@@ -12636,13 +12632,13 @@ static int flow_hw_apply(struct rte_eth_dev *dev __rte_unused,
* 0 on success, negative errno value otherwise and rte_errno set.
*/
static int flow_hw_create_flow(struct rte_eth_dev *dev,
- enum mlx5_flow_type type,
- const struct rte_flow_attr *attr,
- const struct rte_flow_item items[],
- const struct rte_flow_action actions[],
- bool external,
- struct rte_flow_hw **flow,
- struct rte_flow_error *error)
+ enum mlx5_flow_type type,
+ const struct rte_flow_attr *attr,
+ const struct rte_flow_item items[],
+ const struct rte_flow_action actions[],
+ bool external,
+ struct rte_flow_hw **flow,
+ struct rte_flow_error *error)
{
int ret;
struct mlx5_hw_actions hw_act;
@@ -12807,7 +12803,7 @@ flow_hw_destroy(struct rte_eth_dev *dev, struct rte_flow_hw *flow)
* Address of flow to destroy.
*/
static void flow_hw_list_destroy(struct rte_eth_dev *dev, enum mlx5_flow_type type,
- uintptr_t flow_addr)
+ uintptr_t flow_addr)
{
struct mlx5_priv *priv = dev->data->dev_private;
/* Get flow via idx */
@@ -12843,12 +12839,12 @@ static void flow_hw_list_destroy(struct rte_eth_dev *dev, enum mlx5_flow_type ty
* A flow addr on success, 0 otherwise and rte_errno is set.
*/
static uintptr_t flow_hw_list_create(struct rte_eth_dev *dev,
- enum mlx5_flow_type type,
- const struct rte_flow_attr *attr,
- const struct rte_flow_item items[],
- const struct rte_flow_action actions[],
- bool external,
- struct rte_flow_error *error)
+ enum mlx5_flow_type type,
+ const struct rte_flow_attr *attr,
+ const struct rte_flow_item items[],
+ const struct rte_flow_action actions[],
+ bool external,
+ struct rte_flow_error *error)
{
int ret;
struct rte_flow_hw *flow = NULL;
--
2.25.1
next prev parent reply other threads:[~2024-06-03 10:51 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-02 10:28 [PATCH 01/11] net/mlx5: initial design of non template to hws Maayan Kashani
2024-06-03 8:04 ` [PATCH v2 05/34] " Maayan Kashani
2024-06-03 8:04 ` [PATCH v2 06/34] net/mlx5: add dummy last action Maayan Kashani
2024-06-03 8:04 ` [PATCH v2 07/34] net/mlx5: add basic actions support for non-template API Maayan Kashani
2024-06-03 8:04 ` [PATCH v2 08/34] net/mlx5: add default miss action support in nt2hws mode Maayan Kashani
2024-06-03 8:04 ` [PATCH v2 09/34] net/mlx5: add ASO actions support to non-template mode Maayan Kashani
2024-06-03 8:04 ` [PATCH v2 10/34] net/mlx5: fix segfault on counter pool destroy Maayan Kashani
2024-06-03 8:05 ` [PATCH v2 11/34] net/mlx5: abstract action handling and enable reconfigure Maayan Kashani
2024-06-03 8:05 ` [PATCH v2 12/34] common/mlx5: read connection tracking attributes Maayan Kashani
2024-06-03 8:05 ` [PATCH v2 13/34] net/mlx5: support bulk actions in non template mode Maayan Kashani
2024-06-03 8:05 ` [PATCH v2 14/34] net/mlx5: use non const max number for ASO actions Maayan Kashani
2024-06-03 8:05 ` [PATCH v2 15/34] net/mlx5: initial design changes Maayan Kashani
2024-06-03 10:48 ` [PATCH v3 01/11] net/mlx5: initial design of non template to hws Maayan Kashani
2024-06-03 10:48 ` [PATCH v3 02/11] net/mlx5: add dummy last action Maayan Kashani
2024-06-03 10:48 ` [PATCH v3 03/11] net/mlx5: add basic actions support for non-template API Maayan Kashani
2024-06-03 10:48 ` [PATCH v3 04/11] net/mlx5: add default miss action support in nt2hws mode Maayan Kashani
2024-06-03 10:48 ` [PATCH v3 05/11] net/mlx5: add ASO actions support to non-template mode Maayan Kashani
2024-06-03 10:48 ` [PATCH v3 06/11] net/mlx5: fix segfault on counter pool destroy Maayan Kashani
2024-06-03 10:48 ` [PATCH v3 07/11] net/mlx5: abstract action handling and enable reconfigure Maayan Kashani
2024-06-03 10:48 ` [PATCH v3 08/11] common/mlx5: read connection tracking attributes Maayan Kashani
2024-06-03 10:48 ` [PATCH v3 09/11] net/mlx5: support bulk actions in non template mode Maayan Kashani
2024-06-03 10:48 ` [PATCH v3 10/11] net/mlx5: use non const max number for ASO actions Maayan Kashani
2024-06-03 10:48 ` Maayan Kashani [this message]
2024-06-06 10:23 ` [PATCH v4 00/11] non-template pmd basic func Maayan Kashani
2024-06-06 10:23 ` [PATCH v4 01/11] net/mlx5: initial design of non template to hws Maayan Kashani
2024-06-06 10:23 ` [PATCH v4 02/11] net/mlx5: add dummy last action Maayan Kashani
2024-06-06 10:23 ` [PATCH v4 03/11] net/mlx5: add basic actions support for non-template API Maayan Kashani
2024-06-06 10:23 ` [PATCH v4 04/11] net/mlx5: add default miss action support in nt2hws mode Maayan Kashani
2024-06-06 10:23 ` [PATCH v4 05/11] net/mlx5: add ASO actions support to non-template mode Maayan Kashani
2024-06-06 10:23 ` [PATCH v4 06/11] net/mlx5: fix segfault on counter pool destroy Maayan Kashani
2024-06-06 10:23 ` [PATCH v4 07/11] net/mlx5: abstract action handling and enable reconfigure Maayan Kashani
2024-06-06 10:23 ` [PATCH v4 08/11] common/mlx5: read connection tracking attributes Maayan Kashani
2024-06-06 10:23 ` [PATCH v4 09/11] net/mlx5: support bulk actions in non template mode Maayan Kashani
2024-06-06 10:23 ` [PATCH v4 10/11] net/mlx5: use non const max number for ASO actions Maayan Kashani
2024-06-06 10:23 ` [PATCH v4 11/11] net/mlx5: initial design changes Maayan Kashani
2024-06-06 12:32 ` [PATCH v5 01/11] net/mlx5: initial design of non template to hws Maayan Kashani
2024-06-06 12:32 ` [PATCH v5 02/11] net/mlx5: add dummy last action Maayan Kashani
2024-06-06 12:32 ` [PATCH v5 03/11] net/mlx5: add basic actions support for non-template API Maayan Kashani
2024-06-06 12:32 ` [PATCH v5 04/11] net/mlx5: add default miss action support in nt2hws mode Maayan Kashani
2024-06-06 12:32 ` [PATCH v5 05/11] net/mlx5: add ASO actions support to non-template mode Maayan Kashani
2024-06-06 12:32 ` [PATCH v5 06/11] net/mlx5: fix segfault on counter pool destroy Maayan Kashani
2024-06-06 12:32 ` [PATCH v5 07/11] net/mlx5: abstract action handling and enable reconfigure Maayan Kashani
2024-06-06 12:32 ` [PATCH v5 08/11] common/mlx5: read connection tracking attributes Maayan Kashani
2024-06-06 12:32 ` [PATCH v5 09/11] net/mlx5: support bulk actions in non template mode Maayan Kashani
2024-06-06 12:32 ` [PATCH v5 10/11] net/mlx5: use non const max number for ASO actions Maayan Kashani
2024-06-06 12:32 ` [PATCH v5 11/11] net/mlx5: initial design changes Maayan Kashani
2024-06-09 8:55 ` [PATCH v6 01/11] net/mlx5: initial design of non template to hws Maayan Kashani
2024-06-09 8:55 ` [PATCH v6 02/11] net/mlx5: add dummy last action Maayan Kashani
2024-06-09 8:55 ` [PATCH v6 03/11] net/mlx5: add basic actions support for non-template API Maayan Kashani
2024-06-09 8:55 ` [PATCH v6 04/11] net/mlx5: add default miss action support in nt2hws mode Maayan Kashani
2024-06-09 8:55 ` [PATCH v6 05/11] net/mlx5: add ASO actions support to non-template mode Maayan Kashani
2024-06-09 8:55 ` [PATCH v6 06/11] net/mlx5: fix segfault on counter pool destroy Maayan Kashani
2024-06-09 8:55 ` [PATCH v6 07/11] net/mlx5: abstract action handling and enable reconfigure Maayan Kashani
2024-06-09 8:55 ` [PATCH v6 08/11] common/mlx5: read connection tracking attributes Maayan Kashani
2024-06-09 8:55 ` [PATCH v6 09/11] net/mlx5: support bulk actions in non template mode Maayan Kashani
2024-06-09 8:55 ` [PATCH v6 10/11] net/mlx5: use non const max number for ASO actions Maayan Kashani
2024-06-09 8:56 ` [PATCH v6 11/11] net/mlx5: initial design changes Maayan Kashani
2024-06-09 11:00 ` [PATCH v7 01/11] net/mlx5: initial design of non template to hws Maayan Kashani
2024-06-09 11:00 ` [PATCH v7 02/11] net/mlx5: add dummy last action Maayan Kashani
2024-06-09 11:00 ` [PATCH v7 03/11] net/mlx5: add basic actions support for non-template API Maayan Kashani
2024-06-09 11:01 ` [PATCH v7 04/11] net/mlx5: add default miss action support in nt2hws mode Maayan Kashani
2024-06-09 11:01 ` [PATCH v7 05/11] net/mlx5: add ASO actions support to non-template mode Maayan Kashani
2024-06-09 11:01 ` [PATCH v7 06/11] net/mlx5: fix segfault on counter pool destroy Maayan Kashani
2024-06-09 11:01 ` [PATCH v7 07/11] net/mlx5: abstract action handling and enable reconfigure Maayan Kashani
2024-06-09 11:01 ` [PATCH v7 08/11] common/mlx5: read connection tracking attributes Maayan Kashani
2024-06-09 11:01 ` [PATCH v7 09/11] net/mlx5: support bulk actions in non template mode Maayan Kashani
2024-06-09 11:01 ` [PATCH v7 10/11] net/mlx5: use non const max number for ASO actions Maayan Kashani
2024-06-09 11:01 ` [PATCH v7 11/11] net/mlx5: initial design changes Maayan Kashani
2024-06-10 8:34 ` [PATCH v7 01/11] net/mlx5: initial design of non template to hws Raslan Darawsheh
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=20240603104850.9935-11-mkashani@nvidia.com \
--to=mkashani@nvidia.com \
--cc=dev@dpdk.org \
--cc=dsosnowski@nvidia.com \
--cc=matan@nvidia.com \
--cc=orika@nvidia.com \
--cc=rasland@nvidia.com \
--cc=suanmingm@nvidia.com \
--cc=viacheslavo@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).