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 EF706A04E7; Wed, 4 Nov 2020 03:19:48 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 9ED3DBE5F; Wed, 4 Nov 2020 03:19:46 +0100 (CET) Received: from szxga03-in.huawei.com (szxga03-in.huawei.com [45.249.212.189]) by dpdk.org (Postfix) with ESMTP id EFCCABE3D; Wed, 4 Nov 2020 03:19:43 +0100 (CET) Received: from nkgeml709-chm.china.huawei.com (unknown [172.30.72.54]) by szxga03-in.huawei.com (SkyGuard) with ESMTP id 4CQr2H46qnz519b; Wed, 4 Nov 2020 10:19:35 +0800 (CST) Received: from [10.174.61.166] (10.174.61.166) by nkgeml709-chm.china.huawei.com (10.98.57.40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1913.5; Wed, 4 Nov 2020 10:19:39 +0800 To: Ferruh Yigit , CC: , , , , , References: <39bc11d96f40e26afc0d1799def59003b697987a.1604115055.git.cloud.wangxiaoyun@huawei.com> From: "Wangxiaoyun (Cloud)" Message-ID: Date: Wed, 4 Nov 2020 10:19:30 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.1.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [10.174.61.166] X-ClientProxiedBy: nkgeml704-chm.china.huawei.com (10.98.57.158) To nkgeml709-chm.china.huawei.com (10.98.57.40) X-CFilter-Loop: Reflected 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" 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. 在 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; > .