* [dpdk-dev] [PATCH 0/3] net/mlx5: add flow rule match for IPv4 IHL field
@ 2021-06-30 7:04 Gregory Etelson
2021-06-30 7:04 ` [dpdk-dev] [PATCH 1/3] common/mlx5: query for hardware capability to offload " Gregory Etelson
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Gregory Etelson @ 2021-06-30 7:04 UTC (permalink / raw)
To: dev; +Cc: getelson, matan, rasland
Expand MLX5 PMD flows functionality with a match on IPV4 IHL field.
Allow testpmd to cofigure IPv4 IHL values in flow rule.
Gregory Etelson (3):
common/mlx5: query for hardware capability to offload IPv4 IHL field
net/mlx5: add flow rule match for IPv4 IHL field
app/testpmd: add flow item to match on IPv4 version_ihl field
app/test-pmd/cmdline_flow.c | 12 ++++++++++-
drivers/common/mlx5/mlx5_devx_cmds.c | 6 ++++++
drivers/common/mlx5/mlx5_devx_cmds.h | 2 ++
drivers/net/mlx5/mlx5_flow_dv.c | 31 +++++++++++++++++++++-------
4 files changed, 42 insertions(+), 9 deletions(-)
--
2.31.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [dpdk-dev] [PATCH 1/3] common/mlx5: query for hardware capability to offload IPv4 IHL field
2021-06-30 7:04 [dpdk-dev] [PATCH 0/3] net/mlx5: add flow rule match for IPv4 IHL field Gregory Etelson
@ 2021-06-30 7:04 ` Gregory Etelson
2021-06-30 7:04 ` [dpdk-dev] [PATCH 2/3] net/mlx5: add flow rule match for " Gregory Etelson
` (2 subsequent siblings)
3 siblings, 0 replies; 8+ messages in thread
From: Gregory Etelson @ 2021-06-30 7:04 UTC (permalink / raw)
To: dev; +Cc: getelson, matan, rasland, Viacheslav Ovsiienko, Shahaf Shuler
The patch queries MLX5 port hardware if it is capable to offload
IPv4 IHL field.
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
---
drivers/common/mlx5/mlx5_devx_cmds.c | 6 ++++++
drivers/common/mlx5/mlx5_devx_cmds.h | 2 ++
2 files changed, 8 insertions(+)
diff --git a/drivers/common/mlx5/mlx5_devx_cmds.c b/drivers/common/mlx5/mlx5_devx_cmds.c
index f5914bce32..9070691332 100644
--- a/drivers/common/mlx5/mlx5_devx_cmds.c
+++ b/drivers/common/mlx5/mlx5_devx_cmds.c
@@ -948,6 +948,12 @@ mlx5_devx_cmd_query_hca_attr(void *ctx,
(flow_table_nic_cap, hcattr,
flow_table_properties_nic_receive.log_max_ft_sampler_num);
attr->pkt_integrity_match = mlx5_devx_query_pkt_integrity_match(hcattr);
+ attr->inner_ipv4_ihl = MLX5_GET
+ (flow_table_nic_cap, hcattr,
+ ft_field_support_2_nic_receive.inner_ipv4_ihl);
+ attr->outer_ipv4_ihl = MLX5_GET
+ (flow_table_nic_cap, hcattr,
+ ft_field_support_2_nic_receive.outer_ipv4_ihl);
/* Query HCA offloads for Ethernet protocol. */
memset(in, 0, sizeof(in));
memset(out, 0, sizeof(out));
diff --git a/drivers/common/mlx5/mlx5_devx_cmds.h b/drivers/common/mlx5/mlx5_devx_cmds.h
index f8a17b886b..034c40b49c 100644
--- a/drivers/common/mlx5/mlx5_devx_cmds.h
+++ b/drivers/common/mlx5/mlx5_devx_cmds.h
@@ -148,6 +148,8 @@ struct mlx5_hca_attr {
uint32_t crypto_login:1; /* General obj type CRYPTO_LOGIN supported. */
uint32_t regexp_num_of_engines;
uint32_t log_max_ft_sampler_num:8;
+ uint32_t inner_ipv4_ihl:1;
+ uint32_t outer_ipv4_ihl:1;
uint32_t geneve_tlv_opt;
uint32_t cqe_compression:1;
uint32_t mini_cqe_resp_flow_tag:1;
--
2.31.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [dpdk-dev] [PATCH 2/3] net/mlx5: add flow rule match for IPv4 IHL field
2021-06-30 7:04 [dpdk-dev] [PATCH 0/3] net/mlx5: add flow rule match for IPv4 IHL field Gregory Etelson
2021-06-30 7:04 ` [dpdk-dev] [PATCH 1/3] common/mlx5: query for hardware capability to offload " Gregory Etelson
@ 2021-06-30 7:04 ` Gregory Etelson
2021-06-30 7:04 ` [dpdk-dev] [PATCH 3/3] app/testpmd: add flow item to match on IPv4 version_ihl field Gregory Etelson
2021-07-05 11:40 ` [dpdk-dev] [PATCH v2 0/2] net/mlx5: add flow rule match for IPv4 IHL field Gregory Etelson
3 siblings, 0 replies; 8+ messages in thread
From: Gregory Etelson @ 2021-06-30 7:04 UTC (permalink / raw)
To: dev; +Cc: getelson, matan, rasland, Viacheslav Ovsiienko, Shahaf Shuler
Provide flow rules capability to match on IPv4 IHL field.
Minimal HCA firmware version requiredto offload IPv4 IHL is
xx_30_2000.
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_dv.c | 31 +++++++++++++++++++++++--------
1 file changed, 23 insertions(+), 8 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index c5d4b01e57..155f686ad1 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -2451,19 +2451,19 @@ flow_dv_validate_item_gtp_psc(const struct rte_flow_item *item,
* 0 on success, a negative errno value otherwise and rte_errno is set.
*/
static int
-flow_dv_validate_item_ipv4(const struct rte_flow_item *item,
- uint64_t item_flags,
- uint64_t last_item,
- uint16_t ether_type,
- struct rte_flow_error *error)
+flow_dv_validate_item_ipv4(struct rte_eth_dev *dev,
+ const struct rte_flow_item *item,
+ uint64_t item_flags, uint64_t last_item,
+ uint16_t ether_type, struct rte_flow_error *error)
{
int ret;
+ struct mlx5_priv *priv = dev->data->dev_private;
const struct rte_flow_item_ipv4 *spec = item->spec;
const struct rte_flow_item_ipv4 *last = item->last;
const struct rte_flow_item_ipv4 *mask = item->mask;
rte_be16_t fragment_offset_spec = 0;
rte_be16_t fragment_offset_last = 0;
- const struct rte_flow_item_ipv4 nic_ipv4_mask = {
+ struct rte_flow_item_ipv4 nic_ipv4_mask = {
.hdr = {
.src_addr = RTE_BE32(0xffffffff),
.dst_addr = RTE_BE32(0xffffffff),
@@ -2474,6 +2474,17 @@ flow_dv_validate_item_ipv4(const struct rte_flow_item *item,
},
};
+ if (mask && (mask->hdr.version_ihl & RTE_IPV4_HDR_IHL_MASK)) {
+ int tunnel = !!(item_flags & MLX5_FLOW_LAYER_TUNNEL);
+ bool ihl_cap = !tunnel ? priv->config.hca_attr.outer_ipv4_ihl :
+ priv->config.hca_attr.inner_ipv4_ihl;
+ if (!ihl_cap)
+ return rte_flow_error_set(error, ENOTSUP,
+ RTE_FLOW_ERROR_TYPE_ITEM,
+ item,
+ "IPV4 ihl offload not supported");
+ nic_ipv4_mask.hdr.version_ihl = mask->hdr.version_ihl;
+ }
ret = mlx5_flow_validate_item_ipv4(item, item_flags, last_item,
ether_type, &nic_ipv4_mask,
MLX5_ITEM_RANGE_ACCEPTED, error);
@@ -6771,7 +6782,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
case RTE_FLOW_ITEM_TYPE_IPV4:
mlx5_flow_tunnel_ip_check(items, next_protocol,
&item_flags, &tunnel);
- ret = flow_dv_validate_item_ipv4(items, item_flags,
+ ret = flow_dv_validate_item_ipv4(dev, items, item_flags,
last_item, ether_type,
error);
if (ret < 0)
@@ -8154,7 +8165,7 @@ flow_dv_translate_item_ipv4(void *matcher, void *key,
void *headers_v;
char *l24_m;
char *l24_v;
- uint8_t tos;
+ uint8_t tos, ihl_m, ihl_v;
if (inner) {
headers_m = MLX5_ADDR_OF(fte_match_param, matcher,
@@ -8183,6 +8194,10 @@ flow_dv_translate_item_ipv4(void *matcher, void *key,
*(uint32_t *)l24_m = ipv4_m->hdr.src_addr;
*(uint32_t *)l24_v = ipv4_m->hdr.src_addr & ipv4_v->hdr.src_addr;
tos = ipv4_m->hdr.type_of_service & ipv4_v->hdr.type_of_service;
+ ihl_m = ipv4_m->hdr.version_ihl & RTE_IPV4_HDR_IHL_MASK;
+ ihl_v = ipv4_v->hdr.version_ihl & RTE_IPV4_HDR_IHL_MASK;
+ MLX5_SET(fte_match_set_lyr_2_4, headers_m, ipv4_ihl, ihl_m);
+ MLX5_SET(fte_match_set_lyr_2_4, headers_v, ipv4_ihl, ihl_m & ihl_v);
MLX5_SET(fte_match_set_lyr_2_4, headers_m, ip_ecn,
ipv4_m->hdr.type_of_service);
MLX5_SET(fte_match_set_lyr_2_4, headers_v, ip_ecn, tos);
--
2.31.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [dpdk-dev] [PATCH 3/3] app/testpmd: add flow item to match on IPv4 version_ihl field
2021-06-30 7:04 [dpdk-dev] [PATCH 0/3] net/mlx5: add flow rule match for IPv4 IHL field Gregory Etelson
2021-06-30 7:04 ` [dpdk-dev] [PATCH 1/3] common/mlx5: query for hardware capability to offload " Gregory Etelson
2021-06-30 7:04 ` [dpdk-dev] [PATCH 2/3] net/mlx5: add flow rule match for " Gregory Etelson
@ 2021-06-30 7:04 ` Gregory Etelson
2021-07-05 11:40 ` [dpdk-dev] [PATCH v2 0/2] net/mlx5: add flow rule match for IPv4 IHL field Gregory Etelson
3 siblings, 0 replies; 8+ messages in thread
From: Gregory Etelson @ 2021-06-30 7:04 UTC (permalink / raw)
To: dev; +Cc: getelson, matan, rasland, Ori Kam, Xiaoyun Li
The new flow item allows PMD to offload IPv4 IHL field for matching,
if hardware supports that operation.
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
---
app/test-pmd/cmdline_flow.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
index 1c587bb7b8..c1c7b9a9f9 100644
--- a/app/test-pmd/cmdline_flow.c
+++ b/app/test-pmd/cmdline_flow.c
@@ -173,6 +173,7 @@ enum index {
ITEM_VLAN_INNER_TYPE,
ITEM_VLAN_HAS_MORE_VLAN,
ITEM_IPV4,
+ ITEM_IPV4_VER_IHL,
ITEM_IPV4_TOS,
ITEM_IPV4_ID,
ITEM_IPV4_FRAGMENT_OFFSET,
@@ -1071,6 +1072,7 @@ static const enum index item_vlan[] = {
};
static const enum index item_ipv4[] = {
+ ITEM_IPV4_VER_IHL,
ITEM_IPV4_TOS,
ITEM_IPV4_ID,
ITEM_IPV4_FRAGMENT_OFFSET,
@@ -2567,6 +2569,13 @@ static const struct token token_list[] = {
.next = NEXT(item_ipv4),
.call = parse_vc,
},
+ [ITEM_IPV4_VER_IHL] = {
+ .name = "version_ihl",
+ .help = "match header length",
+ .next = NEXT(item_ipv4, NEXT_ENTRY(UNSIGNED), item_param),
+ .args = ARGS(ARGS_ENTRY(struct rte_flow_item_ipv4,
+ hdr.version_ihl)),
+ },
[ITEM_IPV4_TOS] = {
.name = "tos",
.help = "type of service",
@@ -8123,7 +8132,8 @@ update_fields(uint8_t *buf, struct rte_flow_item *item, uint16_t next_proto)
break;
case RTE_FLOW_ITEM_TYPE_IPV4:
ipv4 = (struct rte_ipv4_hdr *)buf;
- ipv4->version_ihl = 0x45;
+ if (!ipv4->version_ihl)
+ ipv4->version_ihl = RTE_IPV4_VHL_DEF;
if (next_proto && ipv4->next_proto_id == 0)
ipv4->next_proto_id = (uint8_t)next_proto;
break;
--
2.31.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [dpdk-dev] [PATCH v2 0/2] net/mlx5: add flow rule match for IPv4 IHL field
2021-06-30 7:04 [dpdk-dev] [PATCH 0/3] net/mlx5: add flow rule match for IPv4 IHL field Gregory Etelson
` (2 preceding siblings ...)
2021-06-30 7:04 ` [dpdk-dev] [PATCH 3/3] app/testpmd: add flow item to match on IPv4 version_ihl field Gregory Etelson
@ 2021-07-05 11:40 ` Gregory Etelson
2021-07-05 11:40 ` [dpdk-dev] [PATCH v2 1/2] common/mlx5: query for hardware capability to offload " Gregory Etelson
` (2 more replies)
3 siblings, 3 replies; 8+ messages in thread
From: Gregory Etelson @ 2021-07-05 11:40 UTC (permalink / raw)
To: dev; +Cc: getelson, matan, rasland
Expand MLX5 PMD flows functionality with a match on IPV4 IHL field.
Allow testpmd to cofigure IPv4 IHL values in flow rule.
v2:
- update release notes.
- update MLX5 guide.
- remove tespmd from the series.
Gregory Etelson (2):
common/mlx5: query for hardware capability to offload IPv4 IHL field
net/mlx5: add flow rule match for IPv4 IHL field
doc/guides/nics/mlx5.rst | 1 +
doc/guides/rel_notes/release_21_08.rst | 3 +++
drivers/common/mlx5/mlx5_devx_cmds.c | 6 +++++
drivers/common/mlx5/mlx5_devx_cmds.h | 2 ++
drivers/net/mlx5/mlx5_flow_dv.c | 31 +++++++++++++++++++-------
5 files changed, 35 insertions(+), 8 deletions(-)
--
2.31.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [dpdk-dev] [PATCH v2 1/2] common/mlx5: query for hardware capability to offload IPv4 IHL field
2021-07-05 11:40 ` [dpdk-dev] [PATCH v2 0/2] net/mlx5: add flow rule match for IPv4 IHL field Gregory Etelson
@ 2021-07-05 11:40 ` Gregory Etelson
2021-07-05 11:40 ` [dpdk-dev] [PATCH v2 2/2] net/mlx5: add flow rule match for " Gregory Etelson
2021-07-13 19:09 ` [dpdk-dev] [PATCH v2 0/2] " Raslan Darawsheh
2 siblings, 0 replies; 8+ messages in thread
From: Gregory Etelson @ 2021-07-05 11:40 UTC (permalink / raw)
To: dev; +Cc: getelson, matan, rasland, Viacheslav Ovsiienko, Shahaf Shuler
The patch queries MLX5 port hardware if it is capable to offload
IPv4 IHL field.
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
---
drivers/common/mlx5/mlx5_devx_cmds.c | 6 ++++++
drivers/common/mlx5/mlx5_devx_cmds.h | 2 ++
2 files changed, 8 insertions(+)
diff --git a/drivers/common/mlx5/mlx5_devx_cmds.c b/drivers/common/mlx5/mlx5_devx_cmds.c
index f5914bce32..9070691332 100644
--- a/drivers/common/mlx5/mlx5_devx_cmds.c
+++ b/drivers/common/mlx5/mlx5_devx_cmds.c
@@ -948,6 +948,12 @@ mlx5_devx_cmd_query_hca_attr(void *ctx,
(flow_table_nic_cap, hcattr,
flow_table_properties_nic_receive.log_max_ft_sampler_num);
attr->pkt_integrity_match = mlx5_devx_query_pkt_integrity_match(hcattr);
+ attr->inner_ipv4_ihl = MLX5_GET
+ (flow_table_nic_cap, hcattr,
+ ft_field_support_2_nic_receive.inner_ipv4_ihl);
+ attr->outer_ipv4_ihl = MLX5_GET
+ (flow_table_nic_cap, hcattr,
+ ft_field_support_2_nic_receive.outer_ipv4_ihl);
/* Query HCA offloads for Ethernet protocol. */
memset(in, 0, sizeof(in));
memset(out, 0, sizeof(out));
diff --git a/drivers/common/mlx5/mlx5_devx_cmds.h b/drivers/common/mlx5/mlx5_devx_cmds.h
index f8a17b886b..034c40b49c 100644
--- a/drivers/common/mlx5/mlx5_devx_cmds.h
+++ b/drivers/common/mlx5/mlx5_devx_cmds.h
@@ -148,6 +148,8 @@ struct mlx5_hca_attr {
uint32_t crypto_login:1; /* General obj type CRYPTO_LOGIN supported. */
uint32_t regexp_num_of_engines;
uint32_t log_max_ft_sampler_num:8;
+ uint32_t inner_ipv4_ihl:1;
+ uint32_t outer_ipv4_ihl:1;
uint32_t geneve_tlv_opt;
uint32_t cqe_compression:1;
uint32_t mini_cqe_resp_flow_tag:1;
--
2.31.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [dpdk-dev] [PATCH v2 2/2] net/mlx5: add flow rule match for IPv4 IHL field
2021-07-05 11:40 ` [dpdk-dev] [PATCH v2 0/2] net/mlx5: add flow rule match for IPv4 IHL field Gregory Etelson
2021-07-05 11:40 ` [dpdk-dev] [PATCH v2 1/2] common/mlx5: query for hardware capability to offload " Gregory Etelson
@ 2021-07-05 11:40 ` Gregory Etelson
2021-07-13 19:09 ` [dpdk-dev] [PATCH v2 0/2] " Raslan Darawsheh
2 siblings, 0 replies; 8+ messages in thread
From: Gregory Etelson @ 2021-07-05 11:40 UTC (permalink / raw)
To: dev; +Cc: getelson, matan, rasland, Viacheslav Ovsiienko, Shahaf Shuler
Provide flow rules capability to match on IPv4 IHL field.
Minimal HCA firmware version requiredto offload IPv4 IHL is
xx_30_2000.
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
---
doc/guides/nics/mlx5.rst | 1 +
doc/guides/rel_notes/release_21_08.rst | 3 +++
drivers/net/mlx5/mlx5_flow_dv.c | 31 +++++++++++++++++++-------
3 files changed, 27 insertions(+), 8 deletions(-)
diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst
index eb44a070b1..3cdf0de4e7 100644
--- a/doc/guides/nics/mlx5.rst
+++ b/doc/guides/nics/mlx5.rst
@@ -110,6 +110,7 @@ Features
- Flow integrity offload API.
- Connection tracking.
- Sub-Function representors.
+- IPv4 IHL offload.
Limitations
-----------
diff --git a/doc/guides/rel_notes/release_21_08.rst b/doc/guides/rel_notes/release_21_08.rst
index a6ecfdf3ce..9fd3b2c214 100644
--- a/doc/guides/rel_notes/release_21_08.rst
+++ b/doc/guides/rel_notes/release_21_08.rst
@@ -55,6 +55,9 @@ New Features
Also, make sure to start the actual text at the margin.
=======================================================
+* **Updated Mellanox MLX5 PMD.**
+
+ * Added IPv4 IHL offload support.
Removed Items
-------------
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index a04a3c2bb8..a84fb60d10 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -2451,19 +2451,19 @@ flow_dv_validate_item_gtp_psc(const struct rte_flow_item *item,
* 0 on success, a negative errno value otherwise and rte_errno is set.
*/
static int
-flow_dv_validate_item_ipv4(const struct rte_flow_item *item,
- uint64_t item_flags,
- uint64_t last_item,
- uint16_t ether_type,
- struct rte_flow_error *error)
+flow_dv_validate_item_ipv4(struct rte_eth_dev *dev,
+ const struct rte_flow_item *item,
+ uint64_t item_flags, uint64_t last_item,
+ uint16_t ether_type, struct rte_flow_error *error)
{
int ret;
+ struct mlx5_priv *priv = dev->data->dev_private;
const struct rte_flow_item_ipv4 *spec = item->spec;
const struct rte_flow_item_ipv4 *last = item->last;
const struct rte_flow_item_ipv4 *mask = item->mask;
rte_be16_t fragment_offset_spec = 0;
rte_be16_t fragment_offset_last = 0;
- const struct rte_flow_item_ipv4 nic_ipv4_mask = {
+ struct rte_flow_item_ipv4 nic_ipv4_mask = {
.hdr = {
.src_addr = RTE_BE32(0xffffffff),
.dst_addr = RTE_BE32(0xffffffff),
@@ -2474,6 +2474,17 @@ flow_dv_validate_item_ipv4(const struct rte_flow_item *item,
},
};
+ if (mask && (mask->hdr.version_ihl & RTE_IPV4_HDR_IHL_MASK)) {
+ int tunnel = !!(item_flags & MLX5_FLOW_LAYER_TUNNEL);
+ bool ihl_cap = !tunnel ? priv->config.hca_attr.outer_ipv4_ihl :
+ priv->config.hca_attr.inner_ipv4_ihl;
+ if (!ihl_cap)
+ return rte_flow_error_set(error, ENOTSUP,
+ RTE_FLOW_ERROR_TYPE_ITEM,
+ item,
+ "IPV4 ihl offload not supported");
+ nic_ipv4_mask.hdr.version_ihl = mask->hdr.version_ihl;
+ }
ret = mlx5_flow_validate_item_ipv4(item, item_flags, last_item,
ether_type, &nic_ipv4_mask,
MLX5_ITEM_RANGE_ACCEPTED, error);
@@ -6771,7 +6782,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
case RTE_FLOW_ITEM_TYPE_IPV4:
mlx5_flow_tunnel_ip_check(items, next_protocol,
&item_flags, &tunnel);
- ret = flow_dv_validate_item_ipv4(items, item_flags,
+ ret = flow_dv_validate_item_ipv4(dev, items, item_flags,
last_item, ether_type,
error);
if (ret < 0)
@@ -8154,7 +8165,7 @@ flow_dv_translate_item_ipv4(void *matcher, void *key,
void *headers_v;
char *l24_m;
char *l24_v;
- uint8_t tos;
+ uint8_t tos, ihl_m, ihl_v;
if (inner) {
headers_m = MLX5_ADDR_OF(fte_match_param, matcher,
@@ -8183,6 +8194,10 @@ flow_dv_translate_item_ipv4(void *matcher, void *key,
*(uint32_t *)l24_m = ipv4_m->hdr.src_addr;
*(uint32_t *)l24_v = ipv4_m->hdr.src_addr & ipv4_v->hdr.src_addr;
tos = ipv4_m->hdr.type_of_service & ipv4_v->hdr.type_of_service;
+ ihl_m = ipv4_m->hdr.version_ihl & RTE_IPV4_HDR_IHL_MASK;
+ ihl_v = ipv4_v->hdr.version_ihl & RTE_IPV4_HDR_IHL_MASK;
+ MLX5_SET(fte_match_set_lyr_2_4, headers_m, ipv4_ihl, ihl_m);
+ MLX5_SET(fte_match_set_lyr_2_4, headers_v, ipv4_ihl, ihl_m & ihl_v);
MLX5_SET(fte_match_set_lyr_2_4, headers_m, ip_ecn,
ipv4_m->hdr.type_of_service);
MLX5_SET(fte_match_set_lyr_2_4, headers_v, ip_ecn, tos);
--
2.31.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH v2 0/2] net/mlx5: add flow rule match for IPv4 IHL field
2021-07-05 11:40 ` [dpdk-dev] [PATCH v2 0/2] net/mlx5: add flow rule match for IPv4 IHL field Gregory Etelson
2021-07-05 11:40 ` [dpdk-dev] [PATCH v2 1/2] common/mlx5: query for hardware capability to offload " Gregory Etelson
2021-07-05 11:40 ` [dpdk-dev] [PATCH v2 2/2] net/mlx5: add flow rule match for " Gregory Etelson
@ 2021-07-13 19:09 ` Raslan Darawsheh
2 siblings, 0 replies; 8+ messages in thread
From: Raslan Darawsheh @ 2021-07-13 19:09 UTC (permalink / raw)
To: Gregory Etelson, dev; +Cc: Matan Azrad
Hi,
> -----Original Message-----
> From: Gregory Etelson <getelson@nvidia.com>
> Sent: Monday, July 5, 2021 2:41 PM
> To: dev@dpdk.org
> Cc: Gregory Etelson <getelson@nvidia.com>; Matan Azrad
> <matan@nvidia.com>; Raslan Darawsheh <rasland@nvidia.com>
> Subject: [PATCH v2 0/2] net/mlx5: add flow rule match for IPv4 IHL field
>
> Expand MLX5 PMD flows functionality with a match on IPV4 IHL field.
> Allow testpmd to cofigure IPv4 IHL values in flow rule.
>
> v2:
> - update release notes.
> - update MLX5 guide.
> - remove tespmd from the series.
>
> Gregory Etelson (2):
> common/mlx5: query for hardware capability to offload IPv4 IHL field
> net/mlx5: add flow rule match for IPv4 IHL field
>
> doc/guides/nics/mlx5.rst | 1 +
> doc/guides/rel_notes/release_21_08.rst | 3 +++
> drivers/common/mlx5/mlx5_devx_cmds.c | 6 +++++
> drivers/common/mlx5/mlx5_devx_cmds.h | 2 ++
> drivers/net/mlx5/mlx5_flow_dv.c | 31 +++++++++++++++++++-------
> 5 files changed, 35 insertions(+), 8 deletions(-)
>
> --
> 2.31.1
Series applied to next-net-mlx,
Kindest regards,
Raslan Darawsheh
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2021-07-13 19:09 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-30 7:04 [dpdk-dev] [PATCH 0/3] net/mlx5: add flow rule match for IPv4 IHL field Gregory Etelson
2021-06-30 7:04 ` [dpdk-dev] [PATCH 1/3] common/mlx5: query for hardware capability to offload " Gregory Etelson
2021-06-30 7:04 ` [dpdk-dev] [PATCH 2/3] net/mlx5: add flow rule match for " Gregory Etelson
2021-06-30 7:04 ` [dpdk-dev] [PATCH 3/3] app/testpmd: add flow item to match on IPv4 version_ihl field Gregory Etelson
2021-07-05 11:40 ` [dpdk-dev] [PATCH v2 0/2] net/mlx5: add flow rule match for IPv4 IHL field Gregory Etelson
2021-07-05 11:40 ` [dpdk-dev] [PATCH v2 1/2] common/mlx5: query for hardware capability to offload " Gregory Etelson
2021-07-05 11:40 ` [dpdk-dev] [PATCH v2 2/2] net/mlx5: add flow rule match for " Gregory Etelson
2021-07-13 19:09 ` [dpdk-dev] [PATCH v2 0/2] " Raslan Darawsheh
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).