From: "Yigit, Ferruh" <ferruh.yigit@linux.intel.com>
To: Ferruh Yigit <ferruh.yigit@intel.com>,
Saleh Alsouqi <salehals@mellanox.com>,
"roszenrami@gmail.com" <roszenrami@gmail.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>,
"dev@dpdk.org" <dev@dpdk.org>, Ori Kam <orika@mellanox.com>,
"stable@dpdk.org" <stable@dpdk.org>,
"olivier.matz@6wind.com" <olivier.matz@6wind.com>
Subject: Re: [dpdk-stable] [dpdk-dev] [PATCH v2] app/testpmd: fix mpls encap ipv4 version and ihl
Date: Tue, 2 Jul 2019 14:33:42 +0100 [thread overview]
Message-ID: <93c74631-d869-9d66-5670-0d8a40fcd546@linux.intel.com> (raw)
In-Reply-To: <3d694042-dbe9-7560-5912-d865da048c7c@intel.com>
On 4/16/2019 11:02 AM, Ferruh Yigit wrote:
> On 4/16/2019 10:59 AM, Ferruh Yigit wrote:
>> On 3/25/2019 1:30 PM, Ferruh Yigit wrote:
>>> On 3/25/2019 1:01 PM, Saleh Alsouqi wrote:
>>>> According to ietf rfc791 (see [1])
>>>>
>>>> "The Version field indicates the format of the
>>>> internet header."
>>>>
>>>> "Internet Header Length (ihl) is the length of the
>>>> internet header in 32 bit words, and thus points
>>>> to the beginning of the data. Note that
>>>> the minimum value for a correct header is 5."
>>>>
>>>> Having version and ihl set to 0 would result in a
>>>> corrupted/incorrect encapsulating packet for MPLS,
>>>> this commit sets these fields to 4 and 5 respectively
>>>> as a default value.
>>>>
>>>> [1] https://tools.ietf.org/html/rfc791
>>>>
>>>> Fixes: 3e77031be855 ("app/testpmd: add MPLSoGRE encapsulation")
>>>> Fixes: a1191d39cb57 ("app/testpmd: add MPLSoUDP encapsulation")
>>>> Cc: stable@dpdk.org
>>>>
>>>> Signed-off-by: Saleh Alsouqi <salehals@mellanox.com>
>>>> ---
>>>> v2:
>>>> - Include netinet/ip.h in librte_net/rte_ip.h
>>>> to use existing definitions instead of defining
>>>> our own.
>>>>
>>>> - Move definitions from testpmd.h to librte_net/rte_ip.h
>>>> ---
>>>> app/test-pmd/cmdline_flow.c | 6 ++++++
>>>> lib/librte_net/rte_ip.h | 5 +++++
>>>> 2 files changed, 11 insertions(+)
>>>>
>>>> diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
>>>> index 36659a64a..f536307c9 100644
>>>> --- a/app/test-pmd/cmdline_flow.c
>>>> +++ b/app/test-pmd/cmdline_flow.c
>>>> @@ -3767,11 +3767,14 @@ parse_vc_action_mplsogre_encap(struct context *ctx, const struct token *token,
>>>> .src_addr = mplsogre_encap_conf.ipv4_src,
>>>> .dst_addr = mplsogre_encap_conf.ipv4_dst,
>>>> .next_proto_id = IPPROTO_GRE,
>>>> + .version_ihl = IPV4_VHL_DEF,
>>>> + .time_to_live = IPDEFTTL,
>>>> },
>>>> };
>>>> struct rte_flow_item_ipv6 ipv6 = {
>>>> .hdr = {
>>>> .proto = IPPROTO_GRE,
>>>> + .hop_limits = IPDEFTTL,
>>>> },
>>>> };
>>>> struct rte_flow_item_gre gre = {
>>>> @@ -3955,11 +3958,14 @@ parse_vc_action_mplsoudp_encap(struct context *ctx, const struct token *token,
>>>> .src_addr = mplsoudp_encap_conf.ipv4_src,
>>>> .dst_addr = mplsoudp_encap_conf.ipv4_dst,
>>>> .next_proto_id = IPPROTO_UDP,
>>>> + .version_ihl = IPV4_VHL_DEF,
>>>> + .time_to_live = IPDEFTTL,
>>>> },
>>>> };
>>>> struct rte_flow_item_ipv6 ipv6 = {
>>>> .hdr = {
>>>> .proto = IPPROTO_UDP,
>>>> + .hop_limits = IPDEFTTL,
>>>> },
>>>> };
>>>> struct rte_flow_item_udp udp = {
>>>> diff --git a/lib/librte_net/rte_ip.h b/lib/librte_net/rte_ip.h
>>>> index f9b909090..499a2f79c 100644
>>>> --- a/lib/librte_net/rte_ip.h
>>>> +++ b/lib/librte_net/rte_ip.h
>>>> @@ -17,6 +17,7 @@
>>>>
>>>> #include <stdint.h>
>>>> #include <netinet/in.h>
>>>> +#include <netinet/ip.h>
>>>>
>>>> #include <rte_byteorder.h>
>>>> #include <rte_mbuf.h>
>>>> @@ -89,6 +90,10 @@ struct ipv4_hdr {
>>>> #define IS_IPV4_MCAST(x) \
>>>> ((x) >= IPV4_MIN_MCAST && (x) <= IPV4_MAX_MCAST) /**< check if IPv4 address is multicast */
>>>>
>>>> +/* IPv4 default fields values */
>>>> +#define IPV4_MIN_IHL (0x5)
>>>> +#define IPV4_VHL_DEF (IPVERSION | IPV4_MIN_IHL)
>>>
>>> There are existing defines for this [1], since we have one in public header, can
>>> you please replace them too,
>>> perhaps in two patches, first one introduces this define and replaces old ones,
>>> second one fixes the mpls issue?
>>>
>>> [1]
>>> $ git grep VHL | grep define
>>> app/test-pmd/csumonly.c:#define IP_VHL_DEF (IP_VERSION | IP_HDRLEN)
>>> app/test-pmd/flowgen.c:#define IP_VHL_DEF (IP_VERSION | IP_HDRLEN)
>>> app/test-pmd/txonly.c:#define IP_VHL_DEF (IP_VERSION | IP_HDRLEN)
>>> app/test/packet_burst_generator.c:#define IP_VHL_DEF (IP_VERSION | IP_HDRLEN)
>>> examples/tep_termination/vxlan_setup.c:#define IP_VHL_DEF (IP_VERSION | IP_HDRLEN)
>>
>> Let me get this as it is, and I will send another patch to update existing defines.
>>
>> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
>>
>
> Ahh, this seems causing build errors in FreeBSD:
> http://mails.dpdk.org/archives/test-report/2019-March/077811.html
>
It seems it is easy to fix the BSD with following change:
+#include <sys/types.h>
And now with the recent changes DPDK define should have RTE_ prefix, so new
defines "IPV4_MIN_IHL" && "IPV4_VHL_DEF" should have RTE_ prefix.
Can you able to send a new version with these changes, please let us know if you
can't, perhaps we take care of this since changes looks trivial.
next prev parent reply other threads:[~2019-07-02 13:33 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-18 12:36 [dpdk-stable] [PATCH] " Saleh Alsouqi
2018-12-25 19:29 ` [dpdk-stable] [dpdk-dev] " Rami Rosen
2019-01-08 14:38 ` Ferruh Yigit
2019-03-25 13:01 ` [dpdk-stable] [PATCH v2] " Saleh Alsouqi
2019-03-25 13:30 ` Ferruh Yigit
2019-04-16 9:59 ` Ferruh Yigit
2019-04-16 10:02 ` [dpdk-stable] [dpdk-dev] " Ferruh Yigit
2019-07-02 13:33 ` Yigit, Ferruh [this message]
2019-07-04 7:33 ` [dpdk-stable] [PATCH v3 0/2] define ipv4 ihl and vhl Saleh Alsouqi
2019-07-04 7:33 ` [dpdk-stable] [PATCH v3 1/2] librte_net/rte_ip: " Saleh Alsouqi
2019-07-04 7:33 ` [dpdk-stable] [PATCH v3 2/2] app/testpmd: fix mpls ipv4 encap fields Saleh Alsouqi
2019-07-04 16:19 ` [dpdk-stable] [PATCH v3 0/2] define ipv4 ihl and vhl 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=93c74631-d869-9d66-5670-0d8a40fcd546@linux.intel.com \
--to=ferruh.yigit@linux.intel.com \
--cc=bernard.iremonger@intel.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@intel.com \
--cc=jingjing.wu@intel.com \
--cc=olivier.matz@6wind.com \
--cc=orika@mellanox.com \
--cc=roszenrami@gmail.com \
--cc=salehals@mellanox.com \
--cc=stable@dpdk.org \
--cc=wenzhuo.lu@intel.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).