From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id CEB33A04B1; Wed, 4 Nov 2020 12:05:36 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id EFA64C8D8; Wed, 4 Nov 2020 12:05:34 +0100 (CET) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by dpdk.org (Postfix) with ESMTP id 9D69AC8C8; Wed, 4 Nov 2020 12:05:30 +0100 (CET) IronPort-SDR: kci12pZ0K8adxy97X2DtFB/2KTijU7qGaXpYblVJM1KtBLaffsgsemVSwPCtqF7Q6409VCqwb+ JTcvJMgNbgeQ== X-IronPort-AV: E=McAfee;i="6000,8403,9794"; a="149051531" X-IronPort-AV: E=Sophos;i="5.77,450,1596524400"; d="scan'208";a="149051531" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Nov 2020 03:05:28 -0800 IronPort-SDR: Uzj4FcImHi0CBgxm08Dt1G58auscNmfVmM7FN6PR6jsanQ1tejhk2fefLvpSEmApmvlFESyOBS +rngA49Dsm7w== X-IronPort-AV: E=Sophos;i="5.77,450,1596524400"; d="scan'208";a="353792833" Received: from fyigit-mobl1.ger.corp.intel.com (HELO [10.213.228.199]) ([10.213.228.199]) by fmsmga004-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Nov 2020 03:05:24 -0800 To: "Wangxiaoyun (Cloud)" , dev@dpdk.org Cc: bluca@debian.org, stable@dpdk.org, luoxingyu@huawei.com, luoxianjun@huawei.com, yin.yinshi@huawei.com, zhouguoyang@huawei.com References: <39bc11d96f40e26afc0d1799def59003b697987a.1604115055.git.cloud.wangxiaoyun@huawei.com> From: Ferruh Yigit Message-ID: <7591937c-0894-7889-4199-67d38a331052@intel.com> Date: Wed, 4 Nov 2020 11:05:20 +0000 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: Re: [dpdk-dev] [PATCH v1 1/2] net/hinic: fix outer_l3_len parse error X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 11/4/2020 2:19 AM, Wangxiaoyun (Cloud) wrote: > 在 2020/11/3 1:08, Ferruh Yigit 写道: >> On 10/31/2020 3:38 AM, Xiaoyun wang wrote: >>> This patch fixes outer_l3_len parse error when >>> PKT_TX_OUTER_IP_CKSUM is not set, which does not affect >>> checksum function, just be consistent with mbuf meta >>> information description. >>> >>> Fixes: 8c8b61234ffd ("net/hinic: refactor checksum functions") >>> Cc: stable@dpdk.org >>> Signed-off-by: Xiaoyun wang >>> --- >>>   drivers/net/hinic/hinic_pmd_tx.c | 25 ++++++++++++------------- >>>   1 file changed, 12 insertions(+), 13 deletions(-) >>> >>> diff --git a/drivers/net/hinic/hinic_pmd_tx.c b/drivers/net/hinic/hinic_pmd_tx.c >>> index 2dd4fe1..125627e 100644 >>> --- a/drivers/net/hinic/hinic_pmd_tx.c >>> +++ b/drivers/net/hinic/hinic_pmd_tx.c >>> @@ -779,26 +779,25 @@ static inline void hinic_analyze_tx_info(struct >>> rte_mbuf *mbuf, >>>   { >>>       struct rte_ether_hdr *eth_hdr; >>>       struct rte_vlan_hdr *vlan_hdr; >>> -    struct rte_ipv4_hdr *ip4h; >>> -    u16 pkt_type; >>> -    u8 *hdr; >>> +    struct rte_ipv4_hdr *ipv4_hdr; >>> +    u16 eth_type; >>> -    hdr = (u8 *)rte_pktmbuf_mtod(mbuf, u8*); >>> -    eth_hdr = (struct rte_ether_hdr *)hdr; >>> -    pkt_type = rte_be_to_cpu_16(eth_hdr->ether_type); >>> +    eth_hdr = rte_pktmbuf_mtod(mbuf, struct rte_ether_hdr *); >>> +    eth_type = rte_be_to_cpu_16(eth_hdr->ether_type); >>> -    if (pkt_type == RTE_ETHER_TYPE_VLAN) { >>> +    if (eth_type == RTE_ETHER_TYPE_VLAN) { >>>           off_info->outer_l2_len = ETHER_LEN_WITH_VLAN; >>> -        vlan_hdr = (struct rte_vlan_hdr *)(hdr + 1); >>> -        pkt_type = rte_be_to_cpu_16(vlan_hdr->eth_proto); >>> +        vlan_hdr = (struct rte_vlan_hdr *)(eth_hdr + 1); >>> +        eth_type = rte_be_to_cpu_16(vlan_hdr->eth_proto); >>>       } else { >>>           off_info->outer_l2_len = ETHER_LEN_NO_VLAN; >>>       } >>> -    if (pkt_type == RTE_ETHER_TYPE_IPV4) { >>> -        ip4h = (struct rte_ipv4_hdr *)(hdr + off_info->outer_l2_len); >>> -        off_info->outer_l3_len = rte_ipv4_hdr_len(ip4h); >>> -    } else if (pkt_type == RTE_ETHER_TYPE_IPV6) { >>> +    if (eth_type == RTE_ETHER_TYPE_IPV4) { >>> +        ipv4_hdr = rte_pktmbuf_mtod_offset(mbuf, struct rte_ipv4_hdr *, >>> +                           off_info->outer_l2_len); >>> +        off_info->outer_l3_len = rte_ipv4_hdr_len(ipv4_hdr); >>> +    } else if (eth_type == RTE_ETHER_TYPE_IPV6) { >>>           /* not support ipv6 extension header */ >>>           off_info->outer_l3_len = sizeof(struct rte_ipv6_hdr); >>>       } >>> >> >> >> The actual fix is following [1] and rest is refactoring, right? >> It is hard to catch the actual fix with refactoring, can you please describe >> the actual problem and fix in the commit log to clarify it? >> >> >> >> [1] >>   @@ -789,7 +789,7 @@ static inline void hinic_analyze_tx_info(struct rte_mbuf >> *mbuf, >> >>           if (pkt_type == RTE_ETHER_TYPE_VLAN) { >>                   off_info->outer_l2_len = ETHER_LEN_WITH_VLAN; >>   -               vlan_hdr = (struct rte_vlan_hdr *)(hdr + 1); >>   +               vlan_hdr = (struct rte_vlan_hdr *)(eth_hdr + 1); >>                   pkt_type = rte_be_to_cpu_16(vlan_hdr->eth_proto); >>           } else { >>                   off_info->outer_l2_len = ETHER_LEN_NO_VLAN; >> . > Yes,the actual fix is following as this patch: > > commit 8c8b61234ffd9a283cecbf9751942cbdb87d68f6 > Author: Xiaoyun Wang > Date: Sat Jul 25 16:15:33 2020 +0800 > > net/hinic: refactor checksum functions > > Encapsulate different types of packet checksum preprocessing > into functions. > > I am not asking the original patch that introduced the problem. In this patch, the single line I put above is the only required change, right?