> -----Original Message-----
> From: dev <dev-boun...@dpdk.org> On Behalf Of Dekel Peled
> Sent: Tuesday, April 2, 2019 6:13 PM
> To: Adrien Mazarguil <adrien.mazarg...@6wind.com>; wenzhuo...@intel.com;
> jingjing...@intel.com; bernard.iremon...@intel.com; Yongseok Koh
> <ys...@mellanox.com>; Shahaf Shuler <shah...@mellanox.com>
> Cc: dev@dpdk.org; Ori Kam <or...@mellanox.com>; Dekel Peled
> <dek...@mellanox.com>
> Subject: [dpdk-dev] [PATCH v2 1/3] ethdev: add actions to modify TCP header
> fields
> 
> Add actions:
> - INC_TCP_SEQ - Increase sequence number in the outermost TCP header.
> - DEC_TCP_SEQ - Decrease sequence number in the outermost TCP header.
> - INC_TCP_ACK - Increase acknowledgment number in the outermost TCP
>               header.
> - DEC_TCP_ACK - Decrease acknowledgment number in the outermost TCP
>               header.
> 
> Original work by Xiaoyu Min.
> 
> Signed-off-by: Dekel Peled <dek...@mellanox.com>
> ---
>  doc/guides/prog_guide/rte_flow.rst | 72
> ++++++++++++++++++++++++++++++++++++++
>  lib/librte_ethdev/rte_flow.c       |  8 +++++
>  lib/librte_ethdev/rte_flow.h       | 70
> ++++++++++++++++++++++++++++++++++++
>  3 files changed, 150 insertions(+)
> 
> diff --git a/doc/guides/prog_guide/rte_flow.rst
> b/doc/guides/prog_guide/rte_flow.rst
> index 0203f4f..5bebb29 100644
> --- a/doc/guides/prog_guide/rte_flow.rst
> +++ b/doc/guides/prog_guide/rte_flow.rst
> @@ -2345,6 +2345,78 @@ Otherwise, RTE_FLOW_ERROR_TYPE_ACTION error
> will be returned.
>     | ``mac_addr`` | MAC address   |
>     +--------------+---------------+
> 
> +Action: ``INC_TCP_SEQ``
> +^^^^^^^^^^^^^^^^^^^^^^^
> +
> +Increase sequence number in the outermost TCP header.
> +
> +If this action is used without a valid RTE_FLOW_ITEM_TYPE_TCP flow pattern
> item,
> +behavior is unspecified, depending on PMD implementation.
> +
> +.. _table_rte_flow_action_inc_tcp_seq:
> +
> +.. table:: INC_TCP_SEQ
> +
> +   +-----------+------------------------------------------+
> +   | Field     | Value                                    |
> +   +===========+==========================================+
> +   | ``value`` | Value to increase TCP sequence number by |
> +   +-----------+------------------------------------------+
> +
> +Action: ``DEC_TCP_SEQ``
> +^^^^^^^^^^^^^^^^^^^^^^^
> +
> +Decrease sequence number in the outermost TCP header.
> +
> +If this action is used without a valid RTE_FLOW_ITEM_TYPE_TCP flow pattern
> item,
> +behavior is unspecified, depending on PMD implementation.
> +
> +.. _table_rte_flow_action_dec_tcp_seq:
> +
> +.. table:: DEC_TCP_SEQ
> +
> +   +-----------+------------------------------------------+
> +   | Field     | Value                                    |
> +   +===========+==========================================+
> +   | ``value`` | Value to decrease TCP sequence number by |
> +   +-----------+------------------------------------------+
> +
> +Action: ``INC_TCP_ACK``
> +^^^^^^^^^^^^^^^^^^^^^^^
> +
> +Increase acknowledgment number in the outermost TCP header.
> +
> +If this action is used without a valid RTE_FLOW_ITEM_TYPE_TCP flow pattern
> item,
> +behavior is unspecified, depending on PMD implementation.
> +
> +.. _table_rte_flow_action_inc_tcp_ack:
> +
> +.. table:: INC_TCP_ACK
> +
> +   +-----------+------------------------------------------------+
> +   | Field     | Value                                          |
> +   +===========+================================================+
> +   | ``value`` | Value to increase TCP acknowledgment number by |
> +   +-----------+------------------------------------------------+
> +
> +Action: ``DEC_TCP_ACK``
> +^^^^^^^^^^^^^^^^^^^^^^^
> +
> +Decrease acknowledgment number in the outermost TCP header.
> +
> +If this action is used without a valid RTE_FLOW_ITEM_TYPE_TCP flow pattern
> item,
> +behavior is unspecified, depending on PMD implementation.
> +
> +.. _table_rte_flow_action_dec_tcp_ack:
> +
> +.. table:: DEC_TCP_ACK
> +
> +   +-----------+------------------------------------------------+
> +   | Field     | Value                                          |
> +   +===========+================================================+
> +   | ``value`` | Value to decrease TCP acknowledgment number by |
> +   +-----------+------------------------------------------------+
> +
>  Negative types
>  ~~~~~~~~~~~~~~
> 
> diff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c
> index 3277be1..589d0b9 100644
> --- a/lib/librte_ethdev/rte_flow.c
> +++ b/lib/librte_ethdev/rte_flow.c
> @@ -143,6 +143,14 @@ struct rte_flow_desc_data {
>       MK_FLOW_ACTION(SET_TTL, sizeof(struct rte_flow_action_set_ttl)),
>       MK_FLOW_ACTION(SET_MAC_SRC, sizeof(struct
> rte_flow_action_set_mac)),
>       MK_FLOW_ACTION(SET_MAC_DST, sizeof(struct
> rte_flow_action_set_mac)),
> +     MK_FLOW_ACTION(INC_TCP_SEQ,
> +                     sizeof(struct rte_flow_action_modify_tcp_seq)),
> +     MK_FLOW_ACTION(DEC_TCP_SEQ,
> +                     sizeof(struct rte_flow_action_modify_tcp_seq)),
> +     MK_FLOW_ACTION(INC_TCP_ACK,
> +                     sizeof(struct rte_flow_action_modify_tcp_ack)),
> +     MK_FLOW_ACTION(DEC_TCP_ACK,
> +                     sizeof(struct rte_flow_action_modify_tcp_ack)),
>  };
> 
>  static int
> diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h
> index c0fe879..eca7544 100644
> --- a/lib/librte_ethdev/rte_flow.h
> +++ b/lib/librte_ethdev/rte_flow.h
> @@ -1651,6 +1651,50 @@ enum rte_flow_action_type {
>        * See struct rte_flow_action_set_mac.
>        */
>       RTE_FLOW_ACTION_TYPE_SET_MAC_DST,
> +
> +     /**
> +      * Increase sequence number in the outermost TCP header.
> +      *
> +      * If this action is used without a valid RTE_FLOW_ITEM_TYPE_TCP
> +      * flow pattern item, behavior is unspecified, depending on
> +      * PMD implementation.
> +      *
> +      * See struct rte_flow_action_modify_tcp_seq
> +      */
> +     RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ,
> +
> +     /**
> +      * Decrease sequence number in the outermost TCP header.
> +      *
> +      * If this action is used without a valid RTE_FLOW_ITEM_TYPE_TCP
> +      * flow pattern item, behavior is unspecified, depending on
> +      * PMD implementation.
> +      *
> +      * See struct rte_flow_action_modify_tcp_seq
> +      */
> +     RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ,
> +
> +     /**
> +      * Increase acknowledgment number in the outermost TCP header.
> +      *
> +      * If this action is used without a valid RTE_FLOW_ITEM_TYPE_TCP
> +      * flow pattern item, behavior is unspecified, depending on
> +      * PMD implementation.
> +      *
> +      * See struct rte_flow_action_modify_tcp_ack
> +      */
> +     RTE_FLOW_ACTION_TYPE_INC_TCP_ACK,
> +
> +     /**
> +      * Decrease acknowledgment number in the outermost TCP header.
> +      *
> +      * If this action is used without a valid RTE_FLOW_ITEM_TYPE_TCP
> +      * flow pattern item, behavior is unspecified, depending on
> +      * PMD implementation.
> +      *
> +      * See struct rte_flow_action_modify_tcp_ack
> +      */
> +     RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK,
>  };
> 
>  /**
> @@ -2122,6 +2166,32 @@ struct rte_flow_action_set_mac {
>       uint8_t mac_addr[ETHER_ADDR_LEN];
>  };
> 
> +/**
> + * @warning
> + * @b EXPERIMENTAL: this structure may change without prior notice
> + *
> + * RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ
> + * RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ
> + *
> + * Increase/Decrease outermost TCP sequence number
> + */
> +struct rte_flow_action_modify_tcp_seq {
> +     rte_be32_t value; /**< Value to increase/decrease by. */
> +};
> +
> +/**
> + * @warning
> + * @b EXPERIMENTAL: this structure may change without prior notice
> + *
> + * RTE_FLOW_ACTION_TYPE_INC_TCP_ACK
> + * RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK
> + *
> + * Increase/Decrease outermost TCP acknowledgment number.
> + */
> +struct rte_flow_action_modify_tcp_ack {
> +     rte_be32_t value; /**< Value to increase/decrease by. */
> +};
> +
>  /*
>   * Definition of a single action.
>   *
> --
> 1.8.3.1


Thanks,
Acked-by: Ori Kam <or...@mellanox.com>

Reply via email to