From: Matan Azrad <matan@mellanox.com>
To: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Cc: Keith Wiles <keith.wiles@intel.com>,
Ophir Munk <ophirmu@mellanox.com>, "dev@dpdk.org" <dev@dpdk.org>,
"stable@dpdk.org" <stable@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH] net/tap: fix zeroed flow mask configurations
Date: Mon, 6 Aug 2018 09:58:55 +0000 [thread overview]
Message-ID: <AM0PR0502MB40194E1173B87A66DCB95882D2200@AM0PR0502MB4019.eurprd05.prod.outlook.com> (raw)
In-Reply-To: <20180806094053.GS5211@6wind.com>
Hi Adrien
From: Adrien Mazarguil
> On Sun, Aug 05, 2018 at 06:10:55AM +0000, Matan Azrad wrote:
> > Hi Adrien
> >
> > From: Adrien Mazarguil
> > > Hi Matan,
> > >
> > > On Thu, Aug 02, 2018 at 05:52:18PM +0000, Matan Azrad wrote:
> > > > Hi Adrien
> > > >
> > > > From: Adrien Mazarguil
> > > > > On Thu, Aug 02, 2018 at 10:33:00AM +0000, Matan Azrad wrote:
> > > > > > The rte_flow meaning of zero flow mask configuration is to
> > > > > > match all the range of the item value.
> > > > > > For example, the flow eth / ipv4 dst spec 1.2.3.4 dst mask
> > > > > > 0.0.0.0 should much all the ipv4 traffic from the rte_flow API
> perspective.
> > > > > >
> > > > > > From some kernel perspectives the above rule means to ignore
> > > > > > all the
> > > > > > ipv4 traffic (e.g. Ubuntu 16.04, 4.15.10).
> > > > > >
> > > > > > Due to the fact that the tap PMD should provide the rte_flow
> > > > > > meaning, it is necessary to ignore the spec in case the mask
> > > > > > is zero when it forwards such like flows to the kernel.
> > > > > > So, the above rule should be translated to eth / ipv4 to get
> > > > > > the correct meaning.
> > > > > >
> > > > > > Ignore spec configurations when the mask is zero.
> > > > >
> > > > > I would go further, one should be able to match IP address
> > > > > 0.0.0.0 for
> > > instance.
> > > > > The PMD should only trust the mask on all fields without looking at
> spec.
> > > >
> > > > The PMD should convert the RTE flow API to the device
> > > > configuration, So I can think on scenarios that the PMD should look on
> spec.
> > >
> > > Obviously the PMD needs to take spec into account. What I meant is
> > > that for each field, spec must be taken into account according to mask
> only.
> > >
> > > For any given field, when mask is empty, don't look at spec, it's like a
> wildcard.
> > > When mask is full, take spec as is, even if spec only contains zeroed bits.
> > >
> > > User intent in that case is to match a zero value exactly, so it
> > > must not result in a wildcard match. If supported, when mask is
> > > partial, masked bits are also matched exactly, even if these turn
> > > out to be a zero value. Unmasked bits are considered wildcards.
> > >
> >
> > Yes I understand your point Adrien, but I mean that maybe sometimes
> some spec values should be converted to another spec values to get the
> correct translation of rte_flow for a special device.
> >
> > Here, maybe IP_spec=0.0.0.0 is a special case that should be taken into
> account, so we must validate what's happen in Tap for this case to apply your
> suggestion too, Maybe there was some intentions for spec=0 cases from the
> current code author.
>
> I understand that's a lot of maybes :)
>
> I've checked the code and I'am sure it's a mistake made by the original
> author. See tap_flow_create_eth() for instance:
>
> if (!is_zero_ether_addr(&spec->dst)) {
>
> Followed by:
>
> if (!is_zero_ether_addr(&mask->src))
>
> This lack of consistency doesn't make any sense, it cannot be on purpose.
>
> To my credentials I wrote a very similar code which uses TC flower in mlx5
> and relies on mask (only) in order to retrieve spec. Have a look at
> drivers/net/mlx5/mlx5_nl_flow.c. I validated that traffic where addresses
> were all zeroes could be successfully matched.
>
I will check the spec zero cases and will update.
Thanks Adrien!
next prev parent reply other threads:[~2018-08-06 9:58 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-02 10:33 Matan Azrad
2018-08-02 12:03 ` Wiles, Keith
2018-08-02 14:27 ` Adrien Mazarguil
2018-08-02 17:52 ` Matan Azrad
2018-08-03 8:20 ` Adrien Mazarguil
2018-08-05 6:10 ` Matan Azrad
2018-08-06 9:40 ` Adrien Mazarguil
2018-08-06 9:58 ` Matan Azrad [this message]
2018-08-06 10:58 ` [dpdk-dev] [PATCH v2] " Matan Azrad
2018-08-06 13:16 ` Adrien Mazarguil
2018-08-07 14:01 ` [dpdk-dev] [dpdk-stable] " Thomas Monjalon
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=AM0PR0502MB40194E1173B87A66DCB95882D2200@AM0PR0502MB4019.eurprd05.prod.outlook.com \
--to=matan@mellanox.com \
--cc=adrien.mazarguil@6wind.com \
--cc=dev@dpdk.org \
--cc=keith.wiles@intel.com \
--cc=ophirmu@mellanox.com \
--cc=stable@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 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).