From: Gregory Etelson <getelson@nvidia.com>
To: <dev@dpdk.org>
Cc: getelson@nvidia.com, <mkashani@nvidia.com>,
" . .
/patches/upstream-pmd-indirect-actions-list/v2/v2-0000-cover-letter
. patch" <rasland@nvidia.com>, "Matan Azrad" <matan@nvidia.com>,
"Viacheslav Ovsiienko" <viacheslavo@nvidia.com>,
"Ori Kam" <orika@nvidia.com>,
"Suanming Mou" <suanmingm@nvidia.com>
Subject: [PATCH v2 12/16] net/mlx5: refactor HWS code
Date: Mon, 16 Oct 2023 21:42:31 +0300 [thread overview]
Message-ID: <20231016184235.200427-12-getelson@nvidia.com> (raw)
In-Reply-To: <20231016184235.200427-1-getelson@nvidia.com>
1. In `rte_flow_actions_template`, rename `actions_off` into `dr_off`.
2. Remove duplicated code in template table creation.
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
---
drivers/net/mlx5/mlx5_flow.h | 2 +-
drivers/net/mlx5/mlx5_flow_hw.c | 117 ++++++++++++++------------------
2 files changed, 52 insertions(+), 67 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
index f6a752475d..a31120cd78 100644
--- a/drivers/net/mlx5/mlx5_flow.h
+++ b/drivers/net/mlx5/mlx5_flow.h
@@ -1331,7 +1331,7 @@ struct rte_flow_actions_template {
uint64_t action_flags; /* Bit-map of all valid action in template. */
uint16_t dr_actions_num; /* Amount of DR rules actions. */
uint16_t actions_num; /* Amount of flow actions */
- uint16_t *actions_off; /* DR action offset for given rte action offset. */
+ uint16_t *dr_off; /* DR action offset for given rte action offset. */
uint16_t reformat_off; /* Offset of DR reformat action. */
uint16_t mhdr_off; /* Offset of DR modify header action. */
uint32_t refcnt; /* Reference counter. */
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 7b060442ac..53641ae2d5 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -1506,7 +1506,7 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev,
uint32_t type;
bool reformat_used = false;
unsigned int of_vlan_offset;
- uint16_t action_pos;
+ uint16_t dr_pos;
uint16_t jump_pos;
uint32_t ct_idx;
int ret, err;
@@ -1521,9 +1521,9 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev,
else
type = MLX5DR_TABLE_TYPE_NIC_RX;
for (; !actions_end; actions++, masks++) {
+ dr_pos = at->dr_off[actions - at->actions];
switch ((int)actions->type) {
case RTE_FLOW_ACTION_TYPE_INDIRECT_LIST:
- action_pos = at->actions_off[actions - at->actions];
if (!attr->group) {
DRV_LOG(ERR, "Indirect action is not supported in root table.");
goto err;
@@ -1531,61 +1531,57 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev,
ret = table_template_translate_indirect_list
(dev, actions, masks, acts,
actions - action_start,
- action_pos);
+ dr_pos);
if (ret)
goto err;
break;
case RTE_FLOW_ACTION_TYPE_INDIRECT:
- action_pos = at->actions_off[actions - at->actions];
if (!attr->group) {
DRV_LOG(ERR, "Indirect action is not supported in root table.");
goto err;
}
if (actions->conf && masks->conf) {
if (flow_hw_shared_action_translate
- (dev, actions, acts, actions - action_start, action_pos))
+ (dev, actions, acts, actions - action_start, dr_pos))
goto err;
} else if (__flow_hw_act_data_general_append
- (priv, acts, actions->type,
- actions - action_start, action_pos)){
+ (priv, acts, RTE_FLOW_ACTION_TYPE_INDIRECT,
+ actions - action_start, dr_pos)){
goto err;
}
break;
case RTE_FLOW_ACTION_TYPE_VOID:
break;
case RTE_FLOW_ACTION_TYPE_DROP:
- action_pos = at->actions_off[actions - at->actions];
- acts->rule_acts[action_pos].action =
+ acts->rule_acts[dr_pos].action =
priv->hw_drop[!!attr->group];
break;
case RTE_FLOW_ACTION_TYPE_MARK:
- action_pos = at->actions_off[actions - at->actions];
acts->mark = true;
if (masks->conf &&
((const struct rte_flow_action_mark *)
masks->conf)->id)
- acts->rule_acts[action_pos].tag.value =
+ acts->rule_acts[dr_pos].tag.value =
mlx5_flow_mark_set
(((const struct rte_flow_action_mark *)
(actions->conf))->id);
else if (__flow_hw_act_data_general_append(priv, acts,
- actions->type, actions - action_start, action_pos))
+ actions->type, actions - action_start, dr_pos))
goto err;
- acts->rule_acts[action_pos].action =
+ acts->rule_acts[dr_pos].action =
priv->hw_tag[!!attr->group];
__atomic_fetch_add(&priv->hws_mark_refcnt, 1, __ATOMIC_RELAXED);
flow_hw_rxq_flag_set(dev, true);
break;
case RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN:
- action_pos = at->actions_off[actions - at->actions];
- acts->rule_acts[action_pos].action =
+ acts->rule_acts[dr_pos].action =
priv->hw_push_vlan[type];
if (is_template_masked_push_vlan(masks->conf))
- acts->rule_acts[action_pos].push_vlan.vlan_hdr =
+ acts->rule_acts[dr_pos].push_vlan.vlan_hdr =
vlan_hdr_to_be32(actions);
else if (__flow_hw_act_data_general_append
(priv, acts, actions->type,
- actions - action_start, action_pos))
+ actions - action_start, dr_pos))
goto err;
of_vlan_offset = is_of_vlan_pcp_present(actions) ?
MLX5_HW_VLAN_PUSH_PCP_IDX :
@@ -1594,12 +1590,10 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev,
masks += of_vlan_offset;
break;
case RTE_FLOW_ACTION_TYPE_OF_POP_VLAN:
- action_pos = at->actions_off[actions - at->actions];
- acts->rule_acts[action_pos].action =
+ acts->rule_acts[dr_pos].action =
priv->hw_pop_vlan[type];
break;
case RTE_FLOW_ACTION_TYPE_JUMP:
- action_pos = at->actions_off[actions - at->actions];
if (masks->conf &&
((const struct rte_flow_action_jump *)
masks->conf)->group) {
@@ -1610,17 +1604,16 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev,
(dev, cfg, jump_group, error);
if (!acts->jump)
goto err;
- acts->rule_acts[action_pos].action = (!!attr->group) ?
- acts->jump->hws_action :
- acts->jump->root_action;
+ acts->rule_acts[dr_pos].action = (!!attr->group) ?
+ acts->jump->hws_action :
+ acts->jump->root_action;
} else if (__flow_hw_act_data_general_append
(priv, acts, actions->type,
- actions - action_start, action_pos)){
+ actions - action_start, dr_pos)){
goto err;
}
break;
case RTE_FLOW_ACTION_TYPE_QUEUE:
- action_pos = at->actions_off[actions - at->actions];
if (masks->conf &&
((const struct rte_flow_action_queue *)
masks->conf)->index) {
@@ -1630,16 +1623,15 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev,
actions);
if (!acts->tir)
goto err;
- acts->rule_acts[action_pos].action =
+ acts->rule_acts[dr_pos].action =
acts->tir->action;
} else if (__flow_hw_act_data_general_append
(priv, acts, actions->type,
- actions - action_start, action_pos)) {
+ actions - action_start, dr_pos)) {
goto err;
}
break;
case RTE_FLOW_ACTION_TYPE_RSS:
- action_pos = at->actions_off[actions - at->actions];
if (actions->conf && masks->conf) {
acts->tir = flow_hw_tir_action_register
(dev,
@@ -1647,11 +1639,11 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev,
actions);
if (!acts->tir)
goto err;
- acts->rule_acts[action_pos].action =
+ acts->rule_acts[dr_pos].action =
acts->tir->action;
} else if (__flow_hw_act_data_general_append
(priv, acts, actions->type,
- actions - action_start, action_pos)) {
+ actions - action_start, dr_pos)) {
goto err;
}
break;
@@ -1720,11 +1712,10 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev,
NULL,
"Send to kernel action on root table is not supported in HW steering mode");
}
- action_pos = at->actions_off[actions - at->actions];
table_type = attr->ingress ? MLX5DR_TABLE_TYPE_NIC_RX :
((attr->egress) ? MLX5DR_TABLE_TYPE_NIC_TX :
- MLX5DR_TABLE_TYPE_FDB);
- acts->rule_acts[action_pos].action = priv->hw_send_to_kernel[table_type];
+ MLX5DR_TABLE_TYPE_FDB);
+ acts->rule_acts[dr_pos].action = priv->hw_send_to_kernel[table_type];
break;
case RTE_FLOW_ACTION_TYPE_MODIFY_FIELD:
err = flow_hw_modify_field_compile(dev, attr, action_start,
@@ -1744,10 +1735,9 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev,
action_start += 1;
break;
case RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT:
- action_pos = at->actions_off[actions - at->actions];
if (flow_hw_represented_port_compile
(dev, attr, action_start, actions,
- masks, acts, action_pos, error))
+ masks, acts, dr_pos, error))
goto err;
break;
case RTE_FLOW_ACTION_TYPE_METER:
@@ -1756,19 +1746,18 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev,
* Calculated DR offset is stored only for ASO_METER and FT
* is assumed to be the next action.
*/
- action_pos = at->actions_off[actions - at->actions];
- jump_pos = action_pos + 1;
+ jump_pos = dr_pos + 1;
if (actions->conf && masks->conf &&
((const struct rte_flow_action_meter *)
masks->conf)->mtr_id) {
err = flow_hw_meter_compile(dev, cfg,
- action_pos, jump_pos, actions, acts, error);
+ dr_pos, jump_pos, actions, acts, error);
if (err)
goto err;
} else if (__flow_hw_act_data_general_append(priv, acts,
- actions->type,
+ actions->type,
actions - action_start,
- action_pos))
+ dr_pos))
goto err;
break;
case RTE_FLOW_ACTION_TYPE_AGE:
@@ -1781,11 +1770,10 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev,
NULL,
"Age action on root table is not supported in HW steering mode");
}
- action_pos = at->actions_off[actions - at->actions];
if (__flow_hw_act_data_general_append(priv, acts,
- actions->type,
+ actions->type,
actions - action_start,
- action_pos))
+ dr_pos))
goto err;
break;
case RTE_FLOW_ACTION_TYPE_COUNT:
@@ -1806,49 +1794,46 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev,
* counter.
*/
break;
- action_pos = at->actions_off[actions - at->actions];
if (masks->conf &&
((const struct rte_flow_action_count *)
masks->conf)->id) {
- err = flow_hw_cnt_compile(dev, action_pos, acts);
+ err = flow_hw_cnt_compile(dev, dr_pos, acts);
if (err)
goto err;
} else if (__flow_hw_act_data_general_append
(priv, acts, actions->type,
- actions - action_start, action_pos)) {
+ actions - action_start, dr_pos)) {
goto err;
}
break;
case RTE_FLOW_ACTION_TYPE_CONNTRACK:
- action_pos = at->actions_off[actions - at->actions];
if (masks->conf) {
ct_idx = MLX5_ACTION_CTX_CT_GET_IDX
((uint32_t)(uintptr_t)actions->conf);
if (flow_hw_ct_compile(dev, MLX5_HW_INV_QUEUE, ct_idx,
- &acts->rule_acts[action_pos]))
+ &acts->rule_acts[dr_pos]))
goto err;
} else if (__flow_hw_act_data_general_append
(priv, acts, actions->type,
- actions - action_start, action_pos)) {
+ actions - action_start, dr_pos)) {
goto err;
}
break;
case RTE_FLOW_ACTION_TYPE_METER_MARK:
- action_pos = at->actions_off[actions - at->actions];
if (actions->conf && masks->conf &&
((const struct rte_flow_action_meter_mark *)
masks->conf)->profile) {
err = flow_hw_meter_mark_compile(dev,
- action_pos, actions,
- acts->rule_acts,
- &acts->mtr_id,
- MLX5_HW_INV_QUEUE);
+ dr_pos, actions,
+ acts->rule_acts,
+ &acts->mtr_id,
+ MLX5_HW_INV_QUEUE);
if (err)
goto err;
} else if (__flow_hw_act_data_general_append(priv, acts,
- actions->type,
+ actions->type,
actions - action_start,
- action_pos))
+ dr_pos))
goto err;
break;
case RTE_FLOW_ACTION_TYPE_END:
@@ -4681,7 +4666,7 @@ action_template_set_type(struct rte_flow_actions_template *at,
unsigned int action_src, uint16_t *curr_off,
enum mlx5dr_action_type type)
{
- at->actions_off[action_src] = *curr_off;
+ at->dr_off[action_src] = *curr_off;
action_types[*curr_off] = type;
*curr_off = *curr_off + 1;
}
@@ -4718,7 +4703,7 @@ flow_hw_dr_actions_template_handle_shared(const struct rte_flow_action *mask,
action_src, curr_off,
MLX5DR_ACTION_TYP_CTR);
}
- at->actions_off[action_src] = *cnt_off;
+ at->dr_off[action_src] = *cnt_off;
break;
case RTE_FLOW_ACTION_TYPE_CONNTRACK:
action_template_set_type(at, action_types, action_src, curr_off,
@@ -4838,7 +4823,7 @@ flow_hw_dr_actions_template_create(struct rte_flow_actions_template *at)
}
break;
case RTE_FLOW_ACTION_TYPE_METER:
- at->actions_off[i] = curr_off;
+ at->dr_off[i] = curr_off;
action_types[curr_off++] = MLX5DR_ACTION_TYP_ASO_METER;
if (curr_off >= MLX5_HW_MAX_ACTS)
goto err_actions_num;
@@ -4846,14 +4831,14 @@ flow_hw_dr_actions_template_create(struct rte_flow_actions_template *at)
break;
case RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN:
type = mlx5_hw_dr_action_types[at->actions[i].type];
- at->actions_off[i] = curr_off;
+ at->dr_off[i] = curr_off;
action_types[curr_off++] = type;
i += is_of_vlan_pcp_present(at->actions + i) ?
MLX5_HW_VLAN_PUSH_PCP_IDX :
MLX5_HW_VLAN_PUSH_VID_IDX;
break;
case RTE_FLOW_ACTION_TYPE_METER_MARK:
- at->actions_off[i] = curr_off;
+ at->dr_off[i] = curr_off;
action_types[curr_off++] = MLX5DR_ACTION_TYP_ASO_METER;
if (curr_off >= MLX5_HW_MAX_ACTS)
goto err_actions_num;
@@ -4869,11 +4854,11 @@ flow_hw_dr_actions_template_create(struct rte_flow_actions_template *at)
cnt_off = curr_off++;
action_types[cnt_off] = MLX5DR_ACTION_TYP_CTR;
}
- at->actions_off[i] = cnt_off;
+ at->dr_off[i] = cnt_off;
break;
default:
type = mlx5_hw_dr_action_types[at->actions[i].type];
- at->actions_off[i] = curr_off;
+ at->dr_off[i] = curr_off;
action_types[curr_off++] = type;
break;
}
@@ -5234,7 +5219,7 @@ flow_hw_actions_template_create(struct rte_eth_dev *dev,
if (mask_len <= 0)
return NULL;
len += RTE_ALIGN(mask_len, 16);
- len += RTE_ALIGN(act_num * sizeof(*at->actions_off), 16);
+ len += RTE_ALIGN(act_num * sizeof(*at->dr_off), 16);
at = mlx5_malloc(MLX5_MEM_ZERO, len + sizeof(*at),
RTE_CACHE_LINE_SIZE, rte_socket_id());
if (!at) {
@@ -5258,10 +5243,10 @@ flow_hw_actions_template_create(struct rte_eth_dev *dev,
if (mask_len <= 0)
goto error;
/* DR actions offsets in the third part. */
- at->actions_off = (uint16_t *)((uint8_t *)at->masks + mask_len);
+ at->dr_off = (uint16_t *)((uint8_t *)at->masks + mask_len);
at->actions_num = act_num;
for (i = 0; i < at->actions_num; ++i)
- at->actions_off[i] = UINT16_MAX;
+ at->dr_off[i] = UINT16_MAX;
at->reformat_off = UINT16_MAX;
at->mhdr_off = UINT16_MAX;
at->rx_cpy_pos = pos;
--
2.39.2
next prev parent reply other threads:[~2023-10-16 18:44 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-27 19:10 [PATCH 0/3] net/mlx5: support indirect list actions Gregory Etelson
2023-10-16 18:42 ` [PATCH v2 01/16] net/mlx5/hws: add support for reformat DevX object Gregory Etelson
2023-10-16 18:42 ` [PATCH v2 02/16] net/mlx5/hws: support creating of dynamic forward table and FTE Gregory Etelson
2023-10-16 18:42 ` [PATCH v2 03/16] net/mlx5/hws: add mlx5dr DevX object struct to mlx5dr action Gregory Etelson
2023-10-16 18:42 ` [PATCH v2 04/16] net/mlx5/hws: add support for mirroring Gregory Etelson
2023-10-16 18:42 ` [PATCH v2 05/16] net/mlx5/hws: allow destination into default miss FT Gregory Etelson
2023-10-16 18:42 ` [PATCH v2 06/16] net/mlx5/hws: support reformat for hws mirror Gregory Etelson
2023-10-16 18:42 ` [PATCH v2 07/16] net/mlx5: reformat HWS code Gregory Etelson
2023-10-16 18:42 ` [PATCH v2 08/16] net/mlx5: support HWS mirror action Gregory Etelson
2023-10-16 18:42 ` [PATCH v2 09/16] net/mlx5: fix mirror action validation Gregory Etelson
2023-10-16 18:42 ` [PATCH v2 10/16] net/mlx5: fix in shared counter and age template action create Gregory Etelson
2023-10-16 18:42 ` [PATCH v2 11/16] net/mlx5: fix modify field expansion for raw DECAP / ENCAP Gregory Etelson
2023-10-16 18:42 ` Gregory Etelson [this message]
2023-10-16 18:42 ` [PATCH v2 13/16] net/mlx5: fix RTE action location tracking in a template Gregory Etelson
2023-10-16 18:42 ` [PATCH v2 14/16] net/mlx5: fix mirror redirect action Gregory Etelson
2023-10-16 18:42 ` [PATCH v2 15/16] net/mlx5: support indirect list METER_MARK action Gregory Etelson
2023-10-16 18:42 ` [PATCH v2 16/16] net/mlx5: fix METER_MARK indirection list callback Gregory Etelson
2023-10-17 7:56 ` [PATCH v2 01/16] net/mlx5/hws: add support for reformat DevX object Suanming Mou
2023-10-17 7:31 ` [PATCH v2 00/16] net/mlx5: support indirect actions list Gregory Etelson
2023-10-17 8:09 ` [PATCH v3 " Gregory Etelson
2023-10-17 8:09 ` [PATCH v3 01/16] net/mlx5/hws: add support for reformat DevX object Gregory Etelson
2023-10-17 8:09 ` [PATCH v3 02/16] net/mlx5/hws: support creating of dynamic forward table and FTE Gregory Etelson
2023-10-17 8:09 ` [PATCH v3 03/16] net/mlx5/hws: add mlx5dr DevX object struct to mlx5dr action Gregory Etelson
2023-10-17 8:09 ` [PATCH v3 04/16] net/mlx5/hws: add support for mirroring Gregory Etelson
2023-10-17 8:09 ` [PATCH v3 05/16] net/mlx5/hws: allow destination into default miss FT Gregory Etelson
2023-10-17 8:09 ` [PATCH v3 06/16] net/mlx5/hws: support reformat for hws mirror Gregory Etelson
2023-10-17 8:09 ` [PATCH v3 07/16] net/mlx5: reformat HWS code Gregory Etelson
2023-10-17 8:09 ` [PATCH v3 08/16] net/mlx5: support HWS mirror action Gregory Etelson
2023-10-17 8:09 ` [PATCH v3 09/16] net/mlx5: fix mirror action validation Gregory Etelson
2023-10-17 8:09 ` [PATCH v3 10/16] net/mlx5: fix in shared counter and age template action create Gregory Etelson
2023-10-17 8:09 ` [PATCH v3 11/16] net/mlx5: fix modify field expansion for raw DECAP / ENCAP Gregory Etelson
2023-10-17 8:09 ` [PATCH v3 12/16] net/mlx5: refactor HWS code Gregory Etelson
2023-10-17 8:09 ` [PATCH v3 13/16] net/mlx5: fix RTE action location tracking in a template Gregory Etelson
2023-10-17 8:09 ` [PATCH v3 14/16] net/mlx5: fix mirror redirect action Gregory Etelson
2023-10-17 8:09 ` [PATCH v3 15/16] net/mlx5: support indirect list METER_MARK action Gregory Etelson
2023-10-17 8:09 ` [PATCH v3 16/16] net/mlx5: fix METER_MARK indirection list callback Gregory Etelson
2023-10-23 12:42 ` [PATCH v4 00/10] net/mlx5: support indirect actions list Gregory Etelson
2023-10-23 12:42 ` [PATCH v4 01/10] net/mlx5/hws: add support for reformat DevX object Gregory Etelson
2023-10-23 12:42 ` [PATCH v4 02/10] net/mlx5/hws: support creating of dynamic forward table and FTE Gregory Etelson
2023-10-23 12:42 ` [PATCH v4 03/10] net/mlx5/hws: add mlx5dr DevX object struct to mlx5dr action Gregory Etelson
2023-10-23 12:42 ` [PATCH v4 04/10] net/mlx5/hws: add support for mirroring Gregory Etelson
2023-10-23 12:42 ` [PATCH v4 05/10] net/mlx5/hws: allow destination into default miss FT Gregory Etelson
2023-10-23 12:42 ` [PATCH v4 06/10] net/mlx5/hws: support reformat for hws mirror Gregory Etelson
2023-10-23 12:42 ` [PATCH v4 07/10] net/mlx5: reformat HWS code for HWS mirror action Gregory Etelson
2023-10-23 12:42 ` [PATCH v4 08/10] net/mlx5: support " Gregory Etelson
2023-10-23 12:42 ` [PATCH v4 09/10] net/mlx5: reformat HWS code for indirect list actions Gregory Etelson
2023-10-23 12:42 ` [PATCH v4 10/10] net/mlx5: support indirect list METER_MARK action Gregory Etelson
2023-10-25 10:27 ` [PATCH v5 00/10] net/mlx5: support indirect actions list Gregory Etelson
2023-10-25 10:27 ` [PATCH v5 01/10] net/mlx5/hws: add support for reformat DevX object Gregory Etelson
2023-10-25 10:27 ` [PATCH v5 02/10] net/mlx5/hws: support creating of dynamic forward table and FTE Gregory Etelson
2023-10-25 10:27 ` [PATCH v5 03/10] net/mlx5/hws: add mlx5dr DevX object struct to mlx5dr action Gregory Etelson
2023-10-25 10:27 ` [PATCH v5 04/10] net/mlx5/hws: add support for mirroring Gregory Etelson
2023-10-25 10:27 ` [PATCH v5 05/10] net/mlx5/hws: allow destination into default miss FT Gregory Etelson
2023-10-25 10:27 ` [PATCH v5 06/10] net/mlx5/hws: support reformat for hws mirror Gregory Etelson
2023-10-25 10:27 ` [PATCH v5 07/10] net/mlx5: reformat HWS code for HWS mirror action Gregory Etelson
2023-10-25 10:27 ` [PATCH v5 08/10] net/mlx5: support " Gregory Etelson
2023-10-25 10:27 ` [PATCH v5 09/10] net/mlx5: reformat HWS code for indirect list actions Gregory Etelson
2023-10-25 10:27 ` [PATCH v5 10/10] net/mlx5: support indirect list METER_MARK action Gregory Etelson
2023-10-25 11:22 ` [PATCH v6 00/10] net/mlx5: support indirect actions list Gregory Etelson
2023-10-25 11:22 ` [PATCH v6 01/10] net/mlx5/hws: add support for reformat DevX object Gregory Etelson
2023-10-25 11:22 ` [PATCH v6 02/10] net/mlx5/hws: support creating of dynamic forward table and FTE Gregory Etelson
2023-10-25 11:22 ` [PATCH v6 03/10] net/mlx5/hws: add mlx5dr DevX object struct to mlx5dr action Gregory Etelson
2023-10-25 11:22 ` [PATCH v6 04/10] net/mlx5/hws: add support for mirroring Gregory Etelson
2023-10-25 11:22 ` [PATCH v6 05/10] net/mlx5/hws: allow destination into default miss FT Gregory Etelson
2023-10-25 11:22 ` [PATCH v6 06/10] net/mlx5/hws: support reformat for hws mirror Gregory Etelson
2023-10-25 11:22 ` [PATCH v6 07/10] net/mlx5: reformat HWS code for HWS mirror action Gregory Etelson
2023-10-25 11:22 ` [PATCH v6 08/10] net/mlx5: support " Gregory Etelson
2023-10-25 11:22 ` [PATCH v6 09/10] net/mlx5: reformat HWS code for indirect list actions Gregory Etelson
2023-10-25 11:22 ` [PATCH v6 10/10] net/mlx5: support indirect list METER_MARK action Gregory Etelson
2023-10-26 7:12 ` [PATCH v7 00/10] net/mlx5: support indirect actions list Gregory Etelson
2023-10-26 7:12 ` [PATCH v7 01/10] net/mlx5/hws: add support for reformat DevX object Gregory Etelson
2023-10-26 7:12 ` [PATCH v7 02/10] net/mlx5/hws: support creating of dynamic forward table and FTE Gregory Etelson
2023-10-26 7:12 ` [PATCH v7 03/10] net/mlx5/hws: add mlx5dr DevX object struct to mlx5dr action Gregory Etelson
2023-10-26 7:12 ` [PATCH v7 04/10] net/mlx5/hws: add support for mirroring Gregory Etelson
2023-10-26 7:12 ` [PATCH v7 05/10] net/mlx5/hws: allow destination into default miss FT Gregory Etelson
2023-10-26 7:12 ` [PATCH v7 06/10] net/mlx5/hws: support reformat for hws mirror Gregory Etelson
2023-10-26 7:12 ` [PATCH v7 07/10] net/mlx5: reformat HWS code for HWS mirror action Gregory Etelson
2023-10-26 7:12 ` [PATCH v7 08/10] net/mlx5: support " Gregory Etelson
2023-10-26 7:12 ` [PATCH v7 09/10] net/mlx5: reformat HWS code for indirect list actions Gregory Etelson
2023-10-26 7:12 ` [PATCH v7 10/10] net/mlx5: support indirect list METER_MARK action Gregory Etelson
2023-10-29 7:53 ` [PATCH v7 00/10] net/mlx5: support indirect actions list 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=20231016184235.200427-12-getelson@nvidia.com \
--to=getelson@nvidia.com \
--cc=dev@dpdk.org \
--cc=matan@nvidia.com \
--cc=mkashani@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).