From: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
To: Andrew Rybchenko <arybchenko@solarflare.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>,
Shagun Agarwal <shaguna@chelsio.com>,
Indranil Choudhury <indranil@chelsio.com>,
Nirranjan Kirubaharan <nirranjan@chelsio.com>
Subject: Re: [dpdk-dev] [RFC] ethdev: add action to swap source and destination MAC to flow API
Date: Wed, 29 Aug 2018 14:15:58 +0530 [thread overview]
Message-ID: <20180829084556.GA10453@chelsio.com> (raw)
In-Reply-To: <14727d6f-8d03-84d6-5cac-60f89c0227ec@solarflare.com>
On Tuesday, August 08/28/18, 2018 at 16:27:43 +0530, Andrew Rybchenko wrote:
> On 08/27/2018 03:54 PM, Rahul Lakkireddy wrote:
>
> From: Shagun Agrawal [1]<shaguna@chelsio.com>
>
> This action is useful for offloading loopback mode, where the hardware
> will swap source and destination MAC address before looping back the
> packet. This action can be used in conjunction with other rewrite
> actions to achieve MAC layer transparent NAT where the MAC addresses
> are swapped before either the source or destination MAC address
> is rewritten and NAT is performed.
>
> Signed-off-by: Shagun Agrawal [2]<shaguna@chelsio.com>
> Signed-off-by: Rahul Lakkireddy [3]<rahul.lakkireddy@chelsio.com>
> ---
> app/test-pmd/cmdline_flow.c | 9 +++++++++
> app/test-pmd/config.c | 1 +
> doc/guides/prog_guide/rte_flow.rst | 15 +++++++++++++++
> doc/guides/testpmd_app_ug/testpmd_funcs.rst | 2 ++
> lib/librte_ethdev/rte_flow.c | 1 +
> lib/librte_ethdev/rte_flow.h | 7 +++++++
> 6 files changed, 35 insertions(+)
>
> diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
> index f9260600e..4b83b55c4 100644
> --- a/app/test-pmd/cmdline_flow.c
> +++ b/app/test-pmd/cmdline_flow.c
> @@ -243,6 +243,7 @@ enum index {
> ACTION_VXLAN_DECAP,
> ACTION_NVGRE_ENCAP,
> ACTION_NVGRE_DECAP,
> + ACTION_MAC_SWAP,
> };
>
> /** Maximum size for pattern in struct rte_flow_item_raw. */
> @@ -816,6 +817,7 @@ static const enum index next_action[] = {
> ACTION_VXLAN_DECAP,
> ACTION_NVGRE_ENCAP,
> ACTION_NVGRE_DECAP,
> + ACTION_MAC_SWAP,
> ZERO,
> };
>
> @@ -2470,6 +2472,13 @@ static const struct token token_list[] = {
> .next = NEXT(NEXT_ENTRY(ACTION_NEXT)),
> .call = parse_vc,
> },
> + [ACTION_MAC_SWAP] = {
> + .name = "mac_swap",
> + .help = "swap source and destination mac address",
> + .priv = PRIV_ACTION(MAC_SWAP, 0),
> + .next = NEXT(NEXT_ENTRY(ACTION_NEXT)),
> + .call = parse_vc,
> + },
> };
>
> /** Remove and return last entry from argument stack. */
> diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
> index 14ccd6864..b7393967a 100644
> --- a/app/test-pmd/config.c
> +++ b/app/test-pmd/config.c
> @@ -1153,6 +1153,7 @@ static const struct {
> sizeof(struct rte_flow_action_of_pop_mpls)),
> MK_FLOW_ACTION(OF_PUSH_MPLS,
> sizeof(struct rte_flow_action_of_push_mpls)),
> + MK_FLOW_ACTION(MAC_SWAP, 0),
> };
>
> /** Compute storage space needed by action configuration and copy it. */
> diff --git a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst
> index b305a72a5..530dbc504 100644
> --- a/doc/guides/prog_guide/rte_flow.rst
> +++ b/doc/guides/prog_guide/rte_flow.rst
> @@ -2076,6 +2076,21 @@ RTE_FLOW_ERROR_TYPE_ACTION error should be returned.
>
> This action modifies the payload of matched flows.
>
> +Action: ``MAC_SWAP``
> +^^^^^^^^^^^^^^^^^^^^^^^^^
> +
> +Swap source and destination mac address.
> +
> +.. _table_rte_flow_action_mac_swap:
> +
> +.. table:: MAC_SWAP
> +
> + +---------------+
> + | Field |
> + +===============+
> + | no properties |
> + +---------------+
> +
> Negative types
> ~~~~~~~~~~~~~~
>
> diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
> index dde205a2b..4f0da4fb6 100644
> --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
> +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
> @@ -3697,6 +3697,8 @@ This section lists supported actions and their attributes, if any.
> - ``nvgre_decap``: Performs a decapsulation action by stripping all headers of
> the NVGRE tunnel network overlay from the matched flow.
>
> +- ``mac_swap``: Swap source and destination mac address.
> +
> Destroying flow rules
> ~~~~~~~~~~~~~~~~~~~~~
>
> diff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c
> index cff4b5209..04b0b40ea 100644
> --- a/lib/librte_ethdev/rte_flow.c
> +++ b/lib/librte_ethdev/rte_flow.c
> @@ -109,6 +109,7 @@ static const struct rte_flow_desc_data rte_flow_desc_action[] = {
> sizeof(struct rte_flow_action_of_pop_mpls)),
> MK_FLOW_ACTION(OF_PUSH_MPLS,
> sizeof(struct rte_flow_action_of_push_mpls)),
> + MK_FLOW_ACTION(MAC_SWAP, 0),
> };
>
> static int
> diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h
> index f8ba71cdb..e1fa17b7e 100644
> --- a/lib/librte_ethdev/rte_flow.h
> +++ b/lib/librte_ethdev/rte_flow.h
> @@ -1505,6 +1505,13 @@ enum rte_flow_action_type {
> * error.
> */
> RTE_FLOW_ACTION_TYPE_NVGRE_DECAP,
> +
> + /**
> + * swap the source and destination mac address in ethernet header
>
> Swap the source and destination MAC address in Ethernet header.
>
> May be it is useful to highlight that outermost Ethernet header is edited.
>
Makes sense. Will update in v2.
> MAC address rewrite actions require Ethernet pattern item. Is it required
> here?
>
Yes, a valid Ethernet pattern item is required here as well. Will update
in v2.
> + *
> + * No associated configuration structure.
> + */
> + RTE_FLOW_ACTION_TYPE_MAC_SWAP,
> };
>
> /**
>
> References
>
> Visible links
> 1. mailto:shaguna@chelsio.com
> 2. mailto:shaguna@chelsio.com
> 3. mailto:rahul.lakkireddy@chelsio.com
Thanks,
Rahul
next prev parent reply other threads:[~2018-08-29 8:46 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-27 12:54 Rahul Lakkireddy
2018-08-28 10:57 ` Andrew Rybchenko
2018-08-29 8:45 ` Rahul Lakkireddy [this message]
2018-08-29 9:03 ` [dpdk-dev] [RFC v2] " Rahul Lakkireddy
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=20180829084556.GA10453@chelsio.com \
--to=rahul.lakkireddy@chelsio.com \
--cc=arybchenko@solarflare.com \
--cc=dev@dpdk.org \
--cc=indranil@chelsio.com \
--cc=nirranjan@chelsio.com \
--cc=shaguna@chelsio.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 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).