All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dekel Peled <dekelp@mellanox.com>
To: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Cc: "wenzhuo.lu@intel.com" <wenzhuo.lu@intel.com>,
	"jingjing.wu@intel.com" <jingjing.wu@intel.com>,
	"bernard.iremonger@intel.com" <bernard.iremonger@intel.com>,
	Yongseok Koh <yskoh@mellanox.com>,
	Shahaf Shuler <shahafs@mellanox.com>,
	"dev@dpdk.org" <dev@dpdk.org>, Ori Kam <orika@mellanox.com>
Subject: Re: [PATCH 1/3] ethdev: add actions to modify TCP header fields
Date: Sun, 31 Mar 2019 13:09:46 +0000	[thread overview]
Message-ID: <VI1PR05MB4224DE370723C0ADC4B01342B6540@VI1PR05MB4224.eurprd05.prod.outlook.com> (raw)
In-Reply-To: <20190329135850.GH4889@6wind.com>

Thanks, PSB.

> -----Original Message-----
> From: Adrien Mazarguil <adrien.mazarguil@6wind.com>
> Sent: Friday, March 29, 2019 4:59 PM
> To: Dekel Peled <dekelp@mellanox.com>
> Cc: wenzhuo.lu@intel.com; jingjing.wu@intel.com;
> bernard.iremonger@intel.com; Yongseok Koh <yskoh@mellanox.com>;
> Shahaf Shuler <shahafs@mellanox.com>; dev@dpdk.org; Ori Kam
> <orika@mellanox.com>
> Subject: Re: [PATCH 1/3] ethdev: add actions to modify TCP header fields
> 
> Hi Derek,

It's Dekel, not Derek.

> 
> It's been a while since I last reviewed something, sorry it took so long.
> Some comments below.
> 
> On Thu, Mar 21, 2019 at 04:18:35PM +0200, Dekel Peled wrote:
> > 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.
> 
> Out of curiosity, are these upcoming/existing OpenFlow actions? If so you
> should consider prefixing them with "OF_", otherwise leave them as is.

Not related to OpenFlow.

> 
> > Original work by Xiaoyu Min.
> >
> > Signed-off-by: Dekel Peled <dekelp@mellanox.com>
> > ---
> >  doc/guides/prog_guide/rte_flow.rst | 72
> ++++++++++++++++++++++++++++++++++++++
> >  lib/librte_ethdev/rte_flow.c       |  8 +++++
> >  lib/librte_ethdev/rte_flow.h       | 60
> +++++++++++++++++++++++++++++++
> >  3 files changed, 140 insertions(+)
> >
> > diff --git a/doc/guides/prog_guide/rte_flow.rst
> > b/doc/guides/prog_guide/rte_flow.rst
> > index 0203f4f..bdb817a 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.
> > +
> > +It must be used with a valid RTE_FLOW_ITEM_TYPE_TCP flow pattern
> item.
> > +Otherwise, RTE_FLOW_ERROR_TYPE_ACTION error will be returned.
> 
> I know this is already present for various SET* actions, but please do not tie
> actions to the presence of specific pattern items at the API level. You can
> describe that the lack of a TCP header in matched *traffic* results in
> unspecified behavior though.

I accept, will change it in all relevant locations.

> 
> Then PMD documentation can describe that the lack of a TCP pattern item
> with this action results in RTE_FLOW_ERROR_TYPE_ACTION as a PMD-specific
> constraint.
> 
> > +
> > +.. _table_rte_flow_action_inc_tcp_seq:
> > +
> > +.. table:: INC_TCP_SEQ
> > +
> > +   +-----------+--------------------------------------------+
> > +   | Field     | Value                                      |
> > +
> +===========+============================================+
> > +   | ``value`` | Value to increase TCP sequence number by   |
> > +   +-----------+--------------------------------------------+
> 
> Nit: unnecessary empty space after "by".

Will remove.

> 
> > +
> > +Action: ``DEC_TCP_SEQ``
> > +^^^^^^^^^^^^^^^^^^^^^^^
> > +
> > +Decrease sequence number in the outermost TCP header.
> > +
> > +It must be used with a valid RTE_FLOW_ITEM_TYPE_TCP flow pattern
> item.
> > +Otherwise, RTE_FLOW_ERROR_TYPE_ACTION error will be returned.
> 
> Same comment as above.
> 
> > +
> > +.. _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.
> > +
> > +It must be used with a valid RTE_FLOW_ITEM_TYPE_TCP flow pattern
> item.
> > +Otherwise, RTE_FLOW_ERROR_TYPE_ACTION error will be returned.
> 
> Ditto.
> 
> > +
> > +.. _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.
> > +
> > +It must be used with a valid RTE_FLOW_ITEM_TYPE_TCP flow pattern
> item.
> > +Otherwise, RTE_FLOW_ERROR_TYPE_ACTION error will be returned.
> 
> Ditto.
> 
> > +
> > +.. _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..74cd03e 100644
> > --- a/lib/librte_ethdev/rte_flow.h
> > +++ b/lib/librte_ethdev/rte_flow.h
> > @@ -1651,6 +1651,46 @@ 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 flow pattern does not define a valid
> RTE_FLOW_ITEM_TYPE_TCP,
> > +	 * the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION error.
> 
> Ditto.
> 
> > +	 *
> > +	 * See struct rte_flow_action_modify_tcp_seq
> > +	 */
> > +	RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ,
> > +
> > +	/**
> > +	 * Decrease sequence number in the outermost TCP header.
> > +	 *
> > +	 * If flow pattern does not define a valid
> RTE_FLOW_ITEM_TYPE_TCP,
> > +	 * the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION error.
> 
> Ditto.
> 
> > +	 *
> > +	 * See struct rte_flow_action_modify_tcp_seq
> > +	 */
> > +	RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ,
> > +
> > +	/**
> > +	 * Increase acknowledgment number in the outermost TCP header.
> > +	 *
> > +	 * If flow pattern does not define a valid
> RTE_FLOW_ITEM_TYPE_TCP,
> > +	 * the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION error.
> > +	 *
> 
> Ditto.
> 
> > +	 * See struct rte_flow_action_modify_tcp_ack
> > +	 */
> > +	RTE_FLOW_ACTION_TYPE_INC_TCP_ACK,
> > +
> > +	/**
> > +	 * Decrease acknowledgment number in the outermost TCP header.
> > +	 *
> > +	 * If flow pattern does not define a valid
> RTE_FLOW_ITEM_TYPE_TCP,
> > +	 * the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION error.
> > +	 *
> 
> Ditto.
> 
> > +	 * See struct rte_flow_action_modify_tcp_ack
> > +	 */
> > +	RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK,
> >  };
> >
> >  /**
> > @@ -2122,6 +2162,26 @@ struct rte_flow_action_set_mac {
> >  	uint8_t mac_addr[ETHER_ADDR_LEN];
> >  };
> >
> > +/**
> 
> Experimental tag is missing.

Will add it here and elsewhere.

> 
> > + * RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ
> > + * RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ
> > + *
> > + * Increase/Decrease outermost TCP's sequence number
> 
> Suggestion:
> 
>  Increase/decrease outermost TCP sequence number.

Accepted, will change here and elsewhere.

> 
> > + */
> > +struct rte_flow_action_modify_tcp_seq {
> > +	rte_be32_t value;
> 
> Field documentation is mandatory, e.g.:
> 
>  rte_be32_t value; /**< Value to add/subtract. */

Will add it.

> 
> Beside, I'm not sure this value should be big endian since it's not stored as is
> in the TCP header; it's used by the host system to compute a new value.

It isn't used by the host, but sent to NIC as part of action.

> 
> Also what about having another field to specify what needs to be done with
> this value (e.g. add/sub/set - in which case big endian makes sense) to
> reduce the number of new actions? Something like:
> 
>  struct rte_flow_action_mod_tcp_seq {
>      enum rte_flow_action_mod_tcp_seq_op {
>          RTE_FLOW_ACTION_MOD_TCP_SEQ_OP_ADD,
>          RTE_FLOW_ACTION_MOD_TCP_SEQ_OP_SUB,
>          RTE_FLOW_ACTION_MOD_TCP_SEQ_OP_SET,
>      } op; /**< Operation to perform. */
>      rte_be32_t value; /**< Value to use with operation. */  };
> 
> > +};
> > +
> > +/**
> 
> Experimental tag also missing.
> 
> > + * RTE_FLOW_ACTION_TYPE_INC_TCP_ACK
> > + * RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK
> > + *
> > + * Increase/Decrease TCP's acknowledgment number.
> 
> Suggestion:
> 
>  Increase/decrease outermost TCP acknowledgment number.

Accepted, will change.

> 
> > + */
> > +struct rte_flow_action_modify_tcp_ack {
> > +	rte_be32_t value;
> 
> Field documentation also missing.
> 
> > +};
> > +
> >  /*
> >   * Definition of a single action.
> >   *
> > --
> > 1.8.3.1
> >
> 
> --
> Adrien Mazarguil
> 6WIND

  reply	other threads:[~2019-03-31 13:09 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-21 14:18 [PATCH 0/3] add actions to modify header fields Dekel Peled
2019-03-21 14:18 ` [PATCH 1/3] ethdev: add actions to modify TCP " Dekel Peled
2019-03-26  9:24   ` Dekel Peled
2019-03-29 13:58   ` Adrien Mazarguil
2019-03-31 13:09     ` Dekel Peled [this message]
2019-03-21 14:18 ` [PATCH 2/3] app/testpmd: " Dekel Peled
2019-03-29 13:58   ` Adrien Mazarguil
2019-03-31 13:10     ` Dekel Peled
2019-03-21 14:18 ` [PATCH 3/3] net/mlx5: update modify header using Direct Verbs Dekel Peled
2019-04-02 15:13 ` [PATCH v2 0/3] add actions to modify header fields Dekel Peled
2019-04-10 11:26   ` [dpdk-dev] [PATCH v3 " Dekel Peled
2019-04-10 11:26     ` [dpdk-dev] [PATCH v3 1/3] ethdev: add actions to modify TCP " Dekel Peled
2019-04-10 11:26     ` [dpdk-dev] [PATCH v3 2/3] app/testpmd: " Dekel Peled
2019-04-10 11:26     ` [dpdk-dev] [PATCH v3 3/3] net/mlx5: update modify header using Direct Verbs Dekel Peled
2019-04-10 11:50     ` [dpdk-dev] [PATCH v4 0/3] add actions to modify header fields Dekel Peled
2019-04-10 11:50       ` [dpdk-dev] [PATCH v4 1/3] ethdev: add actions to modify TCP " Dekel Peled
2019-04-18 12:30         ` Adrien Mazarguil
2019-04-22  7:15           ` Dekel Peled
2019-04-10 11:50       ` [dpdk-dev] [PATCH v4 2/3] app/testpmd: " Dekel Peled
2019-04-10 11:50       ` [dpdk-dev] [PATCH v4 3/3] net/mlx5: update modify header using Direct Verbs Dekel Peled
2019-04-22 11:22       ` [dpdk-dev] [PATCH v5 0/3] add actions to modify header fields Dekel Peled
2019-04-22 11:22         ` [dpdk-dev] [PATCH v5 1/3] ethdev: add actions to modify TCP " Dekel Peled
2019-04-22 11:22         ` [dpdk-dev] [PATCH v5 2/3] app/testpmd: " Dekel Peled
2019-04-22 11:22         ` [dpdk-dev] [PATCH v5 3/3] net/mlx5: update modify header using Direct Verbs Dekel Peled
2019-06-02  8:18         ` [dpdk-dev] [PATCH v5 0/3] add actions to modify header fields Dekel Peled
2019-06-04  5:13           ` Dekel Peled
2019-06-04  8:14             ` Dekel Peled
2019-06-17  6:12         ` [dpdk-dev] [PATCH v6 " Dekel Peled
2019-06-17  6:12           ` [dpdk-dev] [PATCH v6 1/3] ethdev: add actions to modify TCP " Dekel Peled
2019-06-17  6:12           ` [dpdk-dev] [PATCH v6 2/3] app/testpmd: " Dekel Peled
2019-06-17  6:12           ` [dpdk-dev] [PATCH v6 3/3] net/mlx5: update modify header using Direct Verbs Dekel Peled
2019-06-27 17:39           ` [dpdk-dev] [PATCH v7 0/3] add actions to modify header fields Dekel Peled
2019-06-30  7:59             ` [dpdk-dev] [PATCH v8 " Dekel Peled
2019-06-30  7:59               ` [dpdk-dev] [PATCH v8 1/3] ethdev: add actions to modify TCP " Dekel Peled
2019-07-01  8:55                 ` Adrien Mazarguil
2019-07-01  9:58                   ` Dekel Peled
2019-06-30  7:59               ` [dpdk-dev] [PATCH v8 2/3] app/testpmd: " Dekel Peled
2019-06-30  7:59               ` [dpdk-dev] [PATCH v8 3/3] net/mlx5: update modify header using Direct Verbs Dekel Peled
     [not found]           ` <cover.1561656977.git.dekelp@mellanox.com>
2019-06-27 17:39             ` [dpdk-dev] [PATCH v7 1/3] ethdev: add actions to modify TCP header fields Dekel Peled
2019-06-27 17:54               ` Andrew Rybchenko
2019-06-28 16:18                 ` Adrien Mazarguil
2019-06-27 17:39             ` [dpdk-dev] [PATCH v7 2/3] app/testpmd: " Dekel Peled
2019-06-27 17:39             ` [dpdk-dev] [PATCH v7 3/3] net/mlx5: update modify header using Direct Verbs Dekel Peled
2019-04-02 15:13 ` [PATCH v2 1/3] ethdev: add actions to modify TCP header fields Dekel Peled
2019-04-02 16:33   ` Ori Kam
2019-04-03  9:14   ` Adrien Mazarguil
2019-04-03 10:49     ` Dekel Peled
2019-04-03 12:49       ` Adrien Mazarguil
2019-04-04  9:01         ` Ori Kam
2019-04-04 13:25           ` Adrien Mazarguil
2019-04-05 11:54             ` [dpdk-dev] " Andrew Rybchenko
2019-04-08 13:36             ` Dekel Peled
2019-04-08 13:53               ` Andrew Rybchenko
2019-04-08 14:21                 ` Adrien Mazarguil
2019-04-02 15:13 ` [PATCH v2 2/3] app/testpmd: " Dekel Peled
2019-04-02 16:33   ` Ori Kam
2019-04-02 15:13 ` [PATCH v2 3/3] net/mlx5: update modify header using Direct Verbs Dekel Peled
2019-04-02 16:34   ` Ori Kam
2019-04-03  8:27   ` Shahaf Shuler
2019-07-01 15:43 ` [dpdk-dev] [PATCH v9 0/3] add actions to modify header fields Dekel Peled
2019-07-01 15:43   ` [dpdk-dev] [PATCH v9 1/3] ethdev: add actions to modify TCP " Dekel Peled
2019-07-02  8:14     ` Andrew Rybchenko
2019-07-02  9:52       ` Dekel Peled
2019-07-02 10:33         ` Adrien Mazarguil
2019-07-02 12:01           ` Dekel Peled
2019-07-01 15:43   ` [dpdk-dev] [PATCH v9 2/3] app/testpmd: " Dekel Peled
2019-07-01 15:43   ` [dpdk-dev] [PATCH v9 3/3] net/mlx5: update modify header using Direct Verbs Dekel Peled
2019-07-02 14:44 ` [dpdk-dev] [PATCH v10 0/3] add actions to modify header fields Dekel Peled
2019-07-02 14:44   ` [dpdk-dev] [PATCH v10 1/3] ethdev: add actions to modify TCP " Dekel Peled
2019-07-03  5:04     ` Slava Ovsiienko
2019-07-02 14:44   ` [dpdk-dev] [PATCH v10 2/3] app/testpmd: " Dekel Peled
2019-07-03  6:30     ` Slava Ovsiienko
2019-07-02 14:44   ` [dpdk-dev] [PATCH v10 3/3] net/mlx5: update modify header using Direct Verbs Dekel Peled
2019-07-03  6:30     ` Slava Ovsiienko
2019-07-02 15:15   ` [dpdk-dev] [PATCH v10 0/3] add actions to modify header fields Adrien Mazarguil
2019-07-03 14:59     ` Ferruh Yigit

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=VI1PR05MB4224DE370723C0ADC4B01342B6540@VI1PR05MB4224.eurprd05.prod.outlook.com \
    --to=dekelp@mellanox.com \
    --cc=adrien.mazarguil@6wind.com \
    --cc=bernard.iremonger@intel.com \
    --cc=dev@dpdk.org \
    --cc=jingjing.wu@intel.com \
    --cc=orika@mellanox.com \
    --cc=shahafs@mellanox.com \
    --cc=wenzhuo.lu@intel.com \
    --cc=yskoh@mellanox.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 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.