From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0085.outbound.protection.outlook.com [104.47.38.85]) by dpdk.org (Postfix) with ESMTP id 18B521B1B6; Sat, 27 Jan 2018 22:16:29 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=IKZ/NyZ4pGTWOBcRC+IYFAB5We/06i6J4nuc+UFirCU=; b=X16OiMHUp0FjTBok8uxQEvMDFo/Z6In38qy7qr6YODug77Kq2tRGa5H/6Tl5G5aSXJlDWygq433qXtUhS40r85NQA6GpBz+xJ15IErxKau5tCH5xQHZ+t1sxFmlypbRbtNQ2Bjcb8m0G/tqLJstwSdcUFifOyu0jpkCUlfzlIWE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Rasesh.Mody@cavium.com; Received: from cavium.com (198.186.0.2) by DM5PR0701MB3669.namprd07.prod.outlook.com (2603:10b6:4:7e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.444.14; Sat, 27 Jan 2018 21:16:27 +0000 From: Rasesh Mody To: dev@dpdk.org Cc: Harish Patil , ferruh.yigit@intel.com, Dept-EngDPDKDev@cavium.com, stable@dpdk.org Date: Sat, 27 Jan 2018 13:15:28 -0800 Message-Id: <1517087735-16191-5-git-send-email-rasesh.mody@cavium.com> X-Mailer: git-send-email 1.7.10.3 In-Reply-To: <1517087735-16191-1-git-send-email-rasesh.mody@cavium.com> References: <1517087735-16191-1-git-send-email-rasesh.mody@cavium.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [198.186.0.2] X-ClientProxiedBy: BN6PR16CA0001.namprd16.prod.outlook.com (2603:10b6:404:f5::11) To DM5PR0701MB3669.namprd07.prod.outlook.com (2603:10b6:4:7e::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4680a2c5-4b92-41df-7a47-08d565cb3a97 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM5PR0701MB3669; X-Microsoft-Exchange-Diagnostics: 1; DM5PR0701MB3669; 3:4puDU3xtzdfRq5gxUviLMRWpPfhg1E7xX9OspCXKT693vJbsJZq7qeJCamqu7jgNajWPLZhIN4ySHzfkbb58mGH+4lBCMZeUs37yEy72Hp3piuvCWqhNYLIunsjkbyieRYuoFqyCqtbE+l+b7WX39e2xUzNhwIcFUUfz0Yt/VuG5E6FbMmpM/i9OViMq2a+WJQUMX3O8uLSTeeDN70/hcCTIwU43rW5wE34yIW0LcyKd8cOvkJggvj0b4T4LAj9n; 25:GAbkzzdpHF9JeFQ8qjCPcKcE0B/D0PFpKb2ZvQMUBGUqvw+Y78zd9+4knWr6HXuTfl5qfwMU4HymxiJCmUjm8rYMGDNl0Xxa+tjmdSL6aWIXLMl27D2cLbul1cTDQYDbEOkQm2elWGAhDDRVZn0opMRgLzgPaVY5xMWg2okJp8qHPNb43BSkB3y6KZXdD3HmrLvoJzrkyhm4lTNwPqtRN4CsE1dZ/C3CEeFA3POAKh1OmQWJqe1y5g6NLDf4QCaynPbA1T6bq08kHRDWaosn2nSAXCPTsxpq5G62SkCu2I+mGmV9yo14ekYRwxBv4AEzdMV5469gj0NqtAfaUAM59g==; 31:bUnMkjuF+0awqKAfenbj1W7bABTLF0Tx/G2IZuN/nH47MsBLCgiJ9cLnbKLHoFL7u/JcRWya06dfW5hjd2AHaiaa4bKQNPqz/Cym7QdeQV3FttUSUiE57wfhEzVpnNT1VGQrwBC7vzsmVb+vTfLPc2nuy8HtHvfaBSYgsPUI055ghLjeJ/m5bqjQt9bN2HGIzHbDyD7jy4Rd8WWYp/ZiMOB42FUEkH3a26r30NgdSYY= X-MS-TrafficTypeDiagnostic: DM5PR0701MB3669: X-Microsoft-Exchange-Diagnostics: 1; DM5PR0701MB3669; 20:HKll++qWwDTHmCxpgCVCkHTZDVaA19w0K5fSG/T6fFRJzmo9+ljugdjQvLplLmI1w3xsxAN4WZAQV7Nkd3Mf1gCaTPS/eOB6eOPxEd7Hk65DzbRWd5ln7vYjrK1eJfe9zcEv8av6I3Rlm8O2FJSGLc5KIn+seM9yK5OW44rTHs5uDZNF9QSQ21qJ83z5L/Y6U5yINF8myNyxQcvPfDNzwe3BrIytojf6wRdGQZtJ4GZgMAdjOLeVOZ6JZK2KbxbbgMwCX99Jwk/oMxFUA2X6rHywjnWucw7x1b2+2RslgYphq3xgzaIHMRlW13NloSvvMivMAgn5pD/IgPdLDKqxg0PEN5KAAONLdva7WJ0m9i0uKuo42JSth1Rf8K7Ygzy73IbNjzoyMk6ZGOptP41vXt48J8PkDwNCiPxkmwXSIB999agTlxfRocsY6GfG4tnQbfRYiM4vNFc+RudDolU3tHL05UJg6AVf4QOokap2/NlIwNtldKYUwa26Xtev1Lis; 4:4+Iz3fc7rHY5/AkAjssstyduXv9pmxisgM+nwi/cJIHFuvjhR4LIojDeiwVoTlsOSoSmYg9qvFcEfTJreI510ry9ZGe7YkiEbbvio7YjcQGlfa2ZrNviLn5mh/wuAIqBd8QeyfUTi0Upx9A+bFhaXrmwVazjPOCG6Zzh/lan4dnheOuzLPl/bIg79Uh3L0TkQB0l7Tma5hAElMvEj+GXlnKmulAIC2M/UFO5DubG5lyBMRu+MYhJKy0UeDVOpzQJr8z465SPlkbL0gDYrzoR4g== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(5005006)(8121501046)(10201501046)(3002001)(3231092)(2400081)(944501161)(93006095)(93001095)(6041288)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123558120)(6072148)(201708071742011); SRVR:DM5PR0701MB3669; BCL:0; PCL:0; RULEID:; SRVR:DM5PR0701MB3669; X-Forefront-PRVS: 056544FBEE X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(39850400004)(376002)(366004)(346002)(39380400002)(199004)(189003)(50226002)(386003)(68736007)(4326008)(50466002)(6916009)(5660300001)(2361001)(106356001)(478600001)(48376002)(4720700003)(2351001)(16586007)(21086003)(305945005)(59450400001)(72206003)(51416003)(7696005)(52116002)(7736002)(316002)(76176011)(2950100002)(53936002)(69596002)(97736004)(66066001)(16526019)(2906002)(36756003)(81166006)(26005)(86362001)(25786009)(47776003)(81156014)(8936002)(8676002)(3846002)(55016002)(105586002)(6116002)(186003); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR0701MB3669; H:cavium.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR0701MB3669; 23:88np7EDUj83G2ksGdq71UWxK9v2X6Zxx5S8yZjH?= =?us-ascii?Q?Fp0aiptJHZW73a0+aW9ebxxnoK/M7yWKrCy6zmau+ne1KvaaI8oL71aaQV22?= =?us-ascii?Q?2sc66w2G844YH7dFzp2WWyQeVUfa7dKn2sYawCMmDc9cgDBCy+AvonzEK4YG?= =?us-ascii?Q?cwm8cU60whfKscIHwAOXhbp6Kf/ewyofayatNAZbujkKY5q22f0zgNOTvouI?= =?us-ascii?Q?CwJzVDX5Aq5Cb1p9j6ZSBHeHbh8cpxnE+M/wN7YGRFmMjN208LkifYr+AfvR?= =?us-ascii?Q?qDy/glkGqvuEOJjAKxiRVox8Wh4LmXAdblbTAS+j3KVBxHqlepsxXl3Unjp8?= =?us-ascii?Q?Bt/nvX9JDjP6KtK5o0HYD/i2KTdPFCGbfEohysXAnkGHuTXth7LdJjSt4zGU?= =?us-ascii?Q?3723AK9c/V+Ayj1b1YU2Fi+zDqRzVHfEHGm5o6FIiQz3G6lRh6ZdBBHAJg60?= =?us-ascii?Q?xHak2weOxELhrClJtJTzcrJL2s2rkpSunJbjQHg9JtZjTvkc6msCrIHsD/8n?= =?us-ascii?Q?zmQPYDI8zd2tTpt5QTNPD7bBQUqier3eWOVfuFJNltLVHZXfVTbfGHnBulrl?= =?us-ascii?Q?4gCmzwk4LRhM4Is7AoT2J/m9CFOnPctj/gIjllVSS+rmKiD11bTRa3VesEhs?= =?us-ascii?Q?r/J5Th4H0Un+zileAnoA4Ua8XMMkb6eMUFJgSx7axYO61OlKMLQQno8XiQEt?= =?us-ascii?Q?senINHVlWdbtHhBBXVX+csPcFJXCq0wQtqb8JvqlSCp9ymNShDVbIlhAXo3U?= =?us-ascii?Q?yLBK83/itxmO4kGr2XLF76c7zwps+gZjMLpEOFzDNWjR+uIu3oKgvN/KIZt+?= =?us-ascii?Q?hDcj31MtNyq31Fea6rwoZP7Eqv3TZI38KLClf0AL5AQL5r83DnWAbXNmUcR5?= =?us-ascii?Q?jMT4/btbctRD8aHXTM/SaJ5crrfaZTDS/m0QwGzdX6aC9Cf8t0mvSVa6pgQt?= =?us-ascii?Q?dJK5Rc5dBhA+dO2ICTS611eWzGpDAN/SiLGwphO607xrhEKlJOsQbAcGNNP0?= =?us-ascii?Q?bTwJGFHiW9oFQf3lvtzJ6DZAgXAFXzGydqQQa1bhr4R1MSvej+aZh61ymr0o?= =?us-ascii?Q?3l8zZSxYnD8OpNtRHrkZkLN8teIHXCrQXIiP3giKTPlOTTgycLY9+fHek06u?= =?us-ascii?Q?rCjygEzt8ke8er7vv0GHwlueHlJ24QDnA5csvKt0cY8Q7C2WnLHlcEQN0GcD?= =?us-ascii?Q?WSFAnkUEloaRLWosN6OV85SVK7ufCxr6e6mSp5MMsgI4dt+gs5A4X4Y4TLA?= =?us-ascii?Q?=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM5PR0701MB3669; 6:ia3kUEKzcKLXaeWMu6s4qUIoTQXJcDEVpMUyr1o6xYgzGR5UQDZDNpxvv335ad9zrAtyJLQf+W4NcbOhPBd91ZJ7uoSTTyoyfG/fciafGeER9kFfO5yDJLc4g8GxTpN7pCdp+JLRXogdJJAoM9IY8g2ZltAjNV3oEm7/QYkVgHU4p37grHwMmLnpHK6r5UyCKZKuj2rxOLAW9BihsKUTqpPtBzIWTFanU0wB199aiM2CsFQ5g2jzIOiBW1oqR63vRVVpBBObra/yTQseMoTzyeiQsYERXgMigWMOtycijrFmxBvKyvspEJxK9vry+OyQZVmcKFUFz9sXG24cNJ6SRQHiSUgEvDd8eNX0rhH3lMo=; 5:ixCbWc6vtwGJTpmta5PkuWDTQsAvaGoHB0WbUGff8jwJrmIINrFORoqW3wmcEkKoRqOyKhmJD0mQ8fCT2SR6zZ+YnJCLiCmS+TegB9olyQN6QdEKXXjPPCKtU16vfrGoPWeP0SDh/PNr5NbH8NHuLfmSrKklQW35tWDMT/a0C2Y=; 24:wW9muHIYRTHwV174yy4YA0HCGqejgQqUSqh4V4IXYEU+lHOvRHl5k1NxM+ZIkW2LnIqFmFP+P9h4Lhrz02l2nWYfKDh6Ko/RjJzG7Tk6D9I=; 7:kiFQuNxGUlnQbR1KpItxL0fO5QXStPBC9/krfKAGzKm9ywRzTbsGF6oTwliKMbiWOcKc4p4ZDzqIGHTegyt58SQvokIKiIBDzicd+1ELGxVDhK0j9KFCuQbfcI+WJMJICqIR19nCkh+TxW+sXLWRUtmEZQ6Nw2CkftHBFOXqvC5JBXBL9ro6/G1biv5EIpSuPhTO5597ih6t8l2sxySiEQeNCsyPmt56rARSVCxnnS0zTYSUxp08Wr/doBkvDUVG SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2018 21:16:27.1065 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4680a2c5-4b92-41df-7a47-08d565cb3a97 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR0701MB3669 Subject: [dpdk-dev] [PATCH 04/11] net/qede: fix tunnel header size in Tx BD configuration 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: , X-List-Received-Date: Sat, 27 Jan 2018 21:16:29 -0000 From: Harish Patil - Fix incorrect header size. In the tunnel case, the outer L2/L3 lengths should be included to calculate tunnel header_size. - In TSO case, skip manipulating TX BD1 and TX BD2 data buffer fields since those fields are already updated with header and payload lengths respectively. - Update TX BD debug data collection. Fixes: 3d4bb4411683 ("net/qede: add fastpath support for VXLAN tunneling") Cc: stable@dpdk.org Signed-off-by: Harish Patil --- drivers/net/qede/qede_rxtx.c | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/drivers/net/qede/qede_rxtx.c b/drivers/net/qede/qede_rxtx.c index 2af1bfc..df248cf 100644 --- a/drivers/net/qede/qede_rxtx.c +++ b/drivers/net/qede/qede_rxtx.c @@ -1588,7 +1588,8 @@ static inline uint32_t qede_rx_cqe_to_tunn_pkt_type(uint16_t flags) /* Populate scatter gather buffer descriptor fields */ static inline uint16_t qede_encode_sg_bd(struct qede_tx_queue *p_txq, struct rte_mbuf *m_seg, - struct eth_tx_2nd_bd **bd2, struct eth_tx_3rd_bd **bd3) + struct eth_tx_2nd_bd **bd2, struct eth_tx_3rd_bd **bd3, + uint16_t start_seg) { struct qede_tx_queue *txq = p_txq; struct eth_tx_bd *tx_bd = NULL; @@ -1597,7 +1598,7 @@ static inline uint32_t qede_rx_cqe_to_tunn_pkt_type(uint16_t flags) /* Check for scattered buffers */ while (m_seg) { - if (nb_segs == 0) { + if (start_seg == 0) { if (!*bd2) { *bd2 = (struct eth_tx_2nd_bd *) ecore_chain_produce(&txq->tx_pbl); @@ -1607,7 +1608,7 @@ static inline uint32_t qede_rx_cqe_to_tunn_pkt_type(uint16_t flags) mapping = rte_mbuf_data_iova(m_seg); QEDE_BD_SET_ADDR_LEN(*bd2, mapping, m_seg->data_len); PMD_TX_LOG(DEBUG, txq, "BD2 len %04x", m_seg->data_len); - } else if (nb_segs == 1) { + } else if (start_seg == 1) { if (!*bd3) { *bd3 = (struct eth_tx_3rd_bd *) ecore_chain_produce(&txq->tx_pbl); @@ -1645,20 +1646,24 @@ static inline uint32_t qede_rx_cqe_to_tunn_pkt_type(uint16_t flags) if (bd1) PMD_TX_LOG(INFO, txq, - "BD1: nbytes=%u nbds=%u bd_flags=%04x bf=%04x", - rte_cpu_to_le_16(bd1->nbytes), bd1->data.nbds, - bd1->data.bd_flags.bitfields, - rte_cpu_to_le_16(bd1->data.bitfields)); + "BD1: nbytes=0x%04x nbds=0x%04x bd_flags=0x%04x bf=0x%04x", + rte_cpu_to_le_16(bd1->nbytes), bd1->data.nbds, + bd1->data.bd_flags.bitfields, + rte_cpu_to_le_16(bd1->data.bitfields)); if (bd2) PMD_TX_LOG(INFO, txq, - "BD2: nbytes=%u bf=%04x\n", - rte_cpu_to_le_16(bd2->nbytes), bd2->data.bitfields1); + "BD2: nbytes=0x%04x bf1=0x%04x bf2=0x%04x tunn_ip=0x%04x\n", + rte_cpu_to_le_16(bd2->nbytes), bd2->data.bitfields1, + bd2->data.bitfields2, bd2->data.tunn_ip_size); if (bd3) PMD_TX_LOG(INFO, txq, - "BD3: nbytes=%u bf=%04x mss=%u\n", - rte_cpu_to_le_16(bd3->nbytes), - rte_cpu_to_le_16(bd3->data.bitfields), - rte_cpu_to_le_16(bd3->data.lso_mss)); + "BD3: nbytes=0x%04x bf=0x%04x MSS=0x%04x " + "tunn_l4_hdr_start_offset_w=0x%04x tunn_hdr_size=0x%04x\n", + rte_cpu_to_le_16(bd3->nbytes), + rte_cpu_to_le_16(bd3->data.bitfields), + rte_cpu_to_le_16(bd3->data.lso_mss), + bd3->data.tunn_l4_hdr_start_offset_w, + bd3->data.tunn_hdr_size_w); rte_get_tx_ol_flag_list(tx_ol_flags, ol_buf, sizeof(ol_buf)); PMD_TX_LOG(INFO, txq, "TX offloads = %s\n", ol_buf); @@ -1938,6 +1943,10 @@ static inline uint32_t qede_rx_cqe_to_tunn_pkt_type(uint16_t flags) * and BD2 onwards for data. */ hdr_size = mbuf->l2_len + mbuf->l3_len + mbuf->l4_len; + if (tunn_flg) + hdr_size += mbuf->outer_l2_len + + mbuf->outer_l3_len; + bd1_bd_flags_bf |= 1 << ETH_TX_1ST_BD_FLAGS_LSO_SHIFT; bd1_bd_flags_bf |= 1 << ETH_TX_1ST_BD_FLAGS_IP_CSUM_SHIFT; @@ -2054,9 +2063,11 @@ static inline uint32_t qede_rx_cqe_to_tunn_pkt_type(uint16_t flags) /* Handle fragmented MBUF */ m_seg = mbuf->next; + /* Encode scatter gather buffer descriptors if required */ - nb_frags = qede_encode_sg_bd(txq, m_seg, &bd2, &bd3); + nb_frags = qede_encode_sg_bd(txq, m_seg, &bd2, &bd3, nbds - 1); bd1->data.nbds = nbds + nb_frags; + txq->nb_tx_avail -= bd1->data.nbds; txq->sw_tx_prod++; rte_prefetch0(txq->sw_tx_ring[TX_PROD(txq)].mbuf); @@ -2064,7 +2075,6 @@ static inline uint32_t qede_rx_cqe_to_tunn_pkt_type(uint16_t flags) rte_cpu_to_le_16(ecore_chain_get_prod_idx(&txq->tx_pbl)); #ifdef RTE_LIBRTE_QEDE_DEBUG_TX print_tx_bd_info(txq, bd1, bd2, bd3, tx_ol_flags); - PMD_TX_LOG(INFO, txq, "lso=%d tunn=%d", lso_flg, tunn_flg); #endif nb_pkt_sent++; txq->xmit_pkts++; -- 1.7.10.3