mbox series

[v5,0/5] ethdev: update modify field flow action

Message ID 20211012202557.30295-1-viacheslavo@nvidia.com (mailing list archive)
Headers
Series ethdev: update modify field flow action |

Message

Slava Ovsiienko Oct. 12, 2021, 8:25 p.m. UTC
  The generic modify field flow action introduced in [1] has
some issues related to the immediate source operand:

  - immediate source can be presented either as an unsigned
    64-bit integer or pointer to data pattern in memory.
    There was no explicit pointer field defined in the union

  - the byte ordering for 64-bit integer was not specified.
    Many fields have lesser lengths and byte ordering
    is crucial.

  - how the bit offset is applied to the immediate source
    field was not defined and documented

  - 64-bit integer size is not enough to provide MAC and
    IPv6 addresses

In order to cover the issues and exclude any ambiguities
the following is done:

  - introduce the explicit pointer field
    in rte_flow_action_modify_data structure

  - replace the 64-bit unsigned integer with 16-byte array

  - update the modify field flow action documentation

Appropriate commit message has been removed.

[1] commit 73b68f4c54a0 ("ethdev: introduce generic modify flow action")
[2] RFC: http://patches.dpdk.org/project/dpdk/patch/20210910141609.8410-1-viacheslavo@nvidia.com/
[3] Deprecation notice: http://patches.dpdk.org/project/dpdk/patch/20210803085754.643180-1-orika@nvidia.com/
[4] v1 - http://patches.dpdk.org/project/dpdk/cover/20211001195223.31909-1-viacheslavo@nvidia.com/
[5] v2 - http://patches.dpdk.org/project/dpdk/patch/20211010234547.1495-2-viacheslavo@nvidia.com/
[6] v3 - http://patches.dpdk.org/project/dpdk/cover/20211012080631.28504-1-viacheslavo@nvidia.com/
[7] v4 - http://patches.dpdk.org/project/dpdk/cover/20211012104919.13145-1-viacheslavo@nvidia.com/

v2: - comments addressed
    - documentation updated
    - typos fixed
    - mlx5 PMD updated

v3: - comments addressed
    - documentation updated
    - typos fixed

v4: - removed errorneously added Ack by Ori K. for mlx5 patch
    - mlx5 patch updated - bug fixes and cleanup

v5: - fix compilation issue with unused variable in mlx5

Viacheslav Ovsiienko (5):
  ethdev: update modify field flow action
  ethdev: fix missed experimental tag for modify field action
  app/testpmd: update modify field flow action support
  app/testpmd: fix hex string parser in flow commands
  net/mlx5: update modify field action

 app/test-pmd/cmdline_flow.c            |  60 ++++++++----
 doc/guides/prog_guide/rte_flow.rst     |  24 ++++-
 doc/guides/rel_notes/deprecation.rst   |   4 -
 doc/guides/rel_notes/release_21_11.rst |   7 ++
 drivers/net/mlx5/mlx5_flow_dv.c        | 123 ++++++++-----------------
 lib/ethdev/rte_flow.h                  |  19 +++-
 6 files changed, 127 insertions(+), 110 deletions(-)
  

Comments

Ferruh Yigit Oct. 13, 2021, 1:46 p.m. UTC | #1
On 10/12/2021 9:25 PM, Viacheslav Ovsiienko wrote:
> The generic modify field flow action introduced in [1] has
> some issues related to the immediate source operand:
> 
>    - immediate source can be presented either as an unsigned
>      64-bit integer or pointer to data pattern in memory.
>      There was no explicit pointer field defined in the union
> 
>    - the byte ordering for 64-bit integer was not specified.
>      Many fields have lesser lengths and byte ordering
>      is crucial.
> 
>    - how the bit offset is applied to the immediate source
>      field was not defined and documented
> 
>    - 64-bit integer size is not enough to provide MAC and
>      IPv6 addresses
> 
> In order to cover the issues and exclude any ambiguities
> the following is done:
> 
>    - introduce the explicit pointer field
>      in rte_flow_action_modify_data structure
> 
>    - replace the 64-bit unsigned integer with 16-byte array
> 
>    - update the modify field flow action documentation
> 
> Appropriate commit message has been removed.
> 
> [1] commit 73b68f4c54a0 ("ethdev: introduce generic modify flow action")
> [2] RFC: http://patches.dpdk.org/project/dpdk/patch/20210910141609.8410-1-viacheslavo@nvidia.com/
> [3] Deprecation notice: http://patches.dpdk.org/project/dpdk/patch/20210803085754.643180-1-orika@nvidia.com/
> [4] v1 - http://patches.dpdk.org/project/dpdk/cover/20211001195223.31909-1-viacheslavo@nvidia.com/
> [5] v2 - http://patches.dpdk.org/project/dpdk/patch/20211010234547.1495-2-viacheslavo@nvidia.com/
> [6] v3 - http://patches.dpdk.org/project/dpdk/cover/20211012080631.28504-1-viacheslavo@nvidia.com/
> [7] v4 - http://patches.dpdk.org/project/dpdk/cover/20211012104919.13145-1-viacheslavo@nvidia.com/
> 
> v2: - comments addressed
>      - documentation updated
>      - typos fixed
>      - mlx5 PMD updated
> 
> v3: - comments addressed
>      - documentation updated
>      - typos fixed
> 
> v4: - removed errorneously added Ack by Ori K. for mlx5 patch
>      - mlx5 patch updated - bug fixes and cleanup
> 
> v5: - fix compilation issue with unused variable in mlx5
> 
> Viacheslav Ovsiienko (5):
>    ethdev: update modify field flow action
>    ethdev: fix missed experimental tag for modify field action
>    app/testpmd: update modify field flow action support
>    app/testpmd: fix hex string parser in flow commands
>    net/mlx5: update modify field action
> 

Hi Viacheslav,

The set reports build error on the CI [1], can you please check if it is a valid error?

[1]
http://mails.dpdk.org/archives/test-report/2021-October/227206.html

FAILED: drivers/libtmp_rte_net_mlx5.a.p/net_mlx5_mlx5_flow_dv.c.o
../drivers/net/mlx5/mlx5_flow_dv.c: In function 'flow_dv_convert_action_modify_field.isra.123':
../drivers/net/mlx5/mlx5_flow_dv.c:526:30: error: 'item.spec' may be used uninitialized in this function [-Werror=maybe-uninitialized]
     data = flow_dv_fetch_field((const uint8_t *)item->spec +
                               ^
../drivers/net/mlx5/mlx5_flow_dv.c:1865:23: note: 'item.spec' was declared here
   struct rte_flow_item item;
                        ^