All of lore.kernel.org
 help / color / mirror / Atom feed
From: bugzilla@dpdk.org
To: dev@dpdk.org
Subject: [DPDK/testpmd Bug 1479] mlx5: Not able to create rte_flows to match head fragments and sub fragments
Date: Tue, 02 Jul 2024 14:21:19 +0000	[thread overview]
Message-ID: <bug-1479-3@http.bugs.dpdk.org/> (raw)

[-- Attachment #1: Type: text/plain, Size: 4173 bytes --]

https://bugs.dpdk.org/show_bug.cgi?id=1479

            Bug ID: 1479
           Summary: mlx5: Not able to create rte_flows to match head
                    fragments and sub fragments
           Product: DPDK
           Version: 21.11
          Hardware: All
                OS: All
            Status: UNCONFIRMED
          Severity: major
          Priority: Normal
         Component: testpmd
          Assignee: dev@dpdk.org
          Reporter: pingtosiva@gmail.com
  Target Milestone: ---

I am trying to create an RTE flow rule to match head and non-head fragments to
compute NIC RSS based on 5tuple/3tuple respectively on connectX-6 DX NIC and
mlx5 driver. 

As part of it when trying to install RTE flow rule using testpmd on dpdk
21.11/23.07 version, the following errors are thrown.

Flow rule to match head fragment
=================================
testpmd>  flow create 0 ingress pattern eth / ipv4 fragment_offset spec 0x2000
fragment_offset mask 0x3fff / end actions drop / count / end
port_flow_complain(): Caught PMD error type 13 (specific pattern item): cause:
0x7ffd1954c548, match on first fragment not supported: Operation not supported

Flow rule to match non-head fragments
======================================
testpmd> flow validate 0 ingress pattern eth / ipv4 fragment_offset is 0x2001
fragment_offset last 0x1fff / end actions drop / end
port_flow_complain(): Caught PMD error type 11 (item specification range):
cause: 0x7ffc6f629534, specified range not supported: Operation not supported

When I browsed mlx5_flow_dv.c driver file, there are set of conditions
implemented to block this configurations.

Could you kindly help is there a way to compute different RSS hash for
fragments and non-fragments using RTE flow rules on mellanox?

Thanks! in advance.

       /*
         * Match on fragment_offset 0x2000 means MF is 1 and frag-offset is 0,
         * indicating this is 1st fragment of fragmented packet.
         * This is not yet supported in MLX5, return appropriate error message.
         */
        if (fragment_offset_spec == RTE_BE16(RTE_IPV4_HDR_MF_FLAG))
                return rte_flow_error_set(error, ENOTSUP,
                                          RTE_FLOW_ERROR_TYPE_ITEM, item,
                                          "match on first fragment not "
                                          "supported");
        if (fragment_offset_spec && !last)
                return rte_flow_error_set(error, ENOTSUP,
                                          RTE_FLOW_ERROR_TYPE_ITEM, item,
                                          "specified value not supported");
        /*
         * Match on fragment_offset spec 0x2001 and last 0x3fff
         * means MF is 1 and frag-offset is > 0.
         * This packet is fragment 2nd and onward, excluding last.
         * This is not yet supported in MLX5, return appropriate
         * error message.
         */
        if (fragment_offset_spec == RTE_BE16(RTE_IPV4_HDR_MF_FLAG + 1) &&
            fragment_offset_last == RTE_BE16(MLX5_IPV4_FRAG_OFFSET_MASK))
                return rte_flow_error_set(error, ENOTSUP,
                                          RTE_FLOW_ERROR_TYPE_ITEM_LAST,
                                          last, "match on following "
                                          "fragments not supported");
        /*
         * Match on fragment_offset spec 0x0001 and last 0x1fff
         * means MF is 0 and frag-offset is > 0.
         * This packet is last fragment of fragmented packet.
         * This is not yet supported in MLX5, return appropriate
         * error message.
         */
        if (fragment_offset_spec == RTE_BE16(1) &&
            fragment_offset_last == RTE_BE16(RTE_IPV4_HDR_OFFSET_MASK))
                return rte_flow_error_set(error, ENOTSUP,
                                          RTE_FLOW_ERROR_TYPE_ITEM_LAST,
                                          last, "match on last "
                                          "fragment not supported");

-- 
You are receiving this mail because:
You are the assignee for the bug.

[-- Attachment #2: Type: text/html, Size: 6162 bytes --]

             reply	other threads:[~2024-07-02 14:21 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-02 14:21 bugzilla [this message]
2024-07-03  6:19 ` [DPDK/testpmd Bug 1479] mlx5: Not able to create rte_flows to match head fragments and sub fragments Asaf Penso
2025-10-27  9:17 ` bugzilla

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=bug-1479-3@http.bugs.dpdk.org/ \
    --to=bugzilla@dpdk.org \
    --cc=dev@dpdk.org \
    /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.