From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4A7E142409; Wed, 18 Jan 2023 07:04:32 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9310A42D4E; Wed, 18 Jan 2023 07:04:18 +0100 (CET) Received: from smtpbgsg2.qq.com (smtpbgsg2.qq.com [54.254.200.128]) by mails.dpdk.org (Postfix) with ESMTP id 0093242D35; Wed, 18 Jan 2023 07:04:15 +0100 (CET) X-QQ-mid: bizesmtp69t1674021852t6wg7v1l Received: from wxdbg.localdomain.com ( [183.129.236.74]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 18 Jan 2023 14:04:11 +0800 (CST) X-QQ-SSF: 01400000000000H0X000B00A0000000 X-QQ-FEAT: 0laiA9+vjABOz2ECRTmjyjlbW838IdP1OOks+Z/GkQ8pfuDVF9O80UccJgXC4 hc5IqFJcbyGB+LEJvZv1KfjF7xeXU2lGlAO9DTnbyMoEe97EX8UvfiIFbFJhQdTIVFRhvsQ EhhJUMp1HKE/BLGCoXRUbL4SRBFweqaX1MXUq0uYga3NA0+/RtheDxGytqTA6/pXA/xB4xh 3hs6zB/OazelUnck9WpQdBjYgm4tUegc+R2NlrLgM5lZpsRxImOMQw7+F/VbxuY0pujBOu4 MAXD78yAGGEzbyBfZhUWtQH2o9I2KJPwlObsoX86ISumQOtarrbFIWLpT7Zrppex7EXRr53 98AlUTcVoZhtaz3W4rreXrlMWokL0Cf2q1yizUz6LwDhtzgP8sybBsj57DYTUIcAcv4FCg8 X-QQ-GoodBg: 2 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 3/8] net/txgbe: fix packet type to parse from offload flags Date: Wed, 18 Jan 2023 14:00:34 +0800 Message-Id: <20230118060039.3074016-4-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230118060039.3074016-1-jiawenwu@trustnetic.com> References: <20230118060039.3074016-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvr:qybglogicsvr5 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org In some external applications, developers may fill in wrong packet_type in rte_mbuf for transmission. It will result in Tx ring hang when Tx checksum offload is on. So change it to parse from ol_flags. Fixes: ca46fcd753b1 ("net/txgbe: support Tx with hardware offload") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/txgbe/txgbe_rxtx.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/drivers/net/txgbe/txgbe_rxtx.c b/drivers/net/txgbe/txgbe_rxtx.c index ae70ca3beb..e91aaf60ef 100644 --- a/drivers/net/txgbe/txgbe_rxtx.c +++ b/drivers/net/txgbe/txgbe_rxtx.c @@ -516,20 +516,21 @@ tx_desc_ol_flags_to_cmdtype(uint64_t ol_flags) return cmdtype; } -static inline uint8_t -tx_desc_ol_flags_to_ptid(uint64_t oflags, uint32_t ptype) +static inline uint32_t +tx_desc_ol_flags_to_ptype(uint64_t oflags) { + uint32_t ptype; bool tun; - if (ptype) - return txgbe_encode_ptype(ptype); - /* Only support flags in TXGBE_TX_OFFLOAD_MASK */ tun = !!(oflags & RTE_MBUF_F_TX_TUNNEL_MASK); /* L2 level */ ptype = RTE_PTYPE_L2_ETHER; if (oflags & RTE_MBUF_F_TX_VLAN) + ptype |= (tun ? RTE_PTYPE_INNER_L2_ETHER_VLAN : RTE_PTYPE_L2_ETHER_VLAN); + + if (oflags & RTE_MBUF_F_TX_QINQ) //tun + qinq is not supported ptype |= RTE_PTYPE_L2_ETHER_VLAN; /* L3 level */ @@ -587,6 +588,14 @@ tx_desc_ol_flags_to_ptid(uint64_t oflags, uint32_t ptype) break; } + return ptype; +} + +static inline uint8_t +tx_desc_ol_flags_to_ptid(uint64_t oflags, uint32_t ptype) +{ + ptype = tx_desc_ol_flags_to_ptype(oflags); + return txgbe_encode_ptype(ptype); } -- 2.27.0