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 9957745954; Tue, 10 Sep 2024 11:00:39 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 84A19427D7; Tue, 10 Sep 2024 10:59:57 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id 74307427D7 for ; Tue, 10 Sep 2024 10:59:56 +0200 (CEST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 48A2JEsN030961 for ; Tue, 10 Sep 2024 01:59:55 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pfpt0220; bh=W G/++B/AhpFOKCi2jgRWlHdXZGv8QPvawaGf/JChDww=; b=FIWtK8+EzQfrg+zEe vyLOO4vSfgvz8o2UFCwMEChMAML86S7teKhAFtJ4Ws2sof6RVACod/FhUZkqzkow xe5TEc2MzoNXDQvOtDXaAsgJio/mBOh8XduMqrFwnMuliOAWqAPEd2lc8dqbg1fw pyKjLJgV+FtqkqX9OMmcpZfrrf87i7xAwe10gLkchLFNS4JmTtaYdP+laZNXM3ym uzcnlQ9iiQ+DMoVVYayHQ4bx5VSgDee+tIEXBkzf1FK5hI2nh8g+JCbEqpLfRD9G IA5S0oNYOeOu9U6tHCmy1RTuwUBttk4kaARtlxfZY585OU5igY8U6bhCpIshEo33 D2x+A== Received: from dc6wp-exch02.marvell.com ([4.21.29.225]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 41gygtg1ju-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 10 Sep 2024 01:59:55 -0700 (PDT) Received: from DC6WP-EXCH02.marvell.com (10.76.176.209) by DC6WP-EXCH02.marvell.com (10.76.176.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Tue, 10 Sep 2024 01:59:54 -0700 Received: from maili.marvell.com (10.69.176.80) by DC6WP-EXCH02.marvell.com (10.76.176.209) with Microsoft SMTP Server id 15.2.1544.4 via Frontend Transport; Tue, 10 Sep 2024 01:59:54 -0700 Received: from hyd1588t430.caveonetworks.com (unknown [10.29.52.204]) by maili.marvell.com (Postfix) with ESMTP id 95D013F709E; Tue, 10 Sep 2024 01:59:51 -0700 (PDT) From: Nithin Dabilpuram To: , Nithin Dabilpuram , "Kiran Kumar K" , Sunil Kumar Kori , Satha Rao , Harman Kalra CC: , Rakesh Kudurumalla Subject: [PATCH 09/33] net/cnxk: update mbuf and rearm data for Rx inject packets Date: Tue, 10 Sep 2024 14:28:45 +0530 Message-ID: <20240910085909.1514457-10-ndabilpuram@marvell.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240910085909.1514457-1-ndabilpuram@marvell.com> References: <20240910085909.1514457-1-ndabilpuram@marvell.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Proofpoint-ORIG-GUID: -YDYgNeNPsIC0x12_ztFyQmDole4lmPD X-Proofpoint-GUID: -YDYgNeNPsIC0x12_ztFyQmDole4lmPD X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.60.29 definitions=2024-09-06_09,2024-09-06_01,2024-09-02_01 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 From: Rakesh Kudurumalla When nix receives second pass packets injected to CPT next segments of primary mbuf are accessed directly using mbuf next pointer since we do not know at what offset mbuf is available.To achieve this we do no update mbut next pointer to NULL for Rx injected packets. Signed-off-by: Rakesh Kudurumalla --- drivers/net/cnxk/cn10k_rx.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/net/cnxk/cn10k_rx.h b/drivers/net/cnxk/cn10k_rx.h index 9dde2bea57..990dfbee3e 100644 --- a/drivers/net/cnxk/cn10k_rx.h +++ b/drivers/net/cnxk/cn10k_rx.h @@ -709,6 +709,7 @@ nix_cqe_xtract_mseg(const union nix_rx_parse_u *rx, struct rte_mbuf *mbuf, uint16_t later_skip = 0; struct rte_mbuf *head; const rte_iova_t *eol; + bool rx_inj = false; uint64_t cq_w5 = 0; uint16_t ihl = 0; uint64_t fsz = 0; @@ -729,7 +730,9 @@ nix_cqe_xtract_mseg(const union nix_rx_parse_u *rx, struct rte_mbuf *mbuf, /* Rx Inject packet must have Match ID 0xFFFF and for this * wqe will get from address stored at mbuf+1 location */ - if ((flags & NIX_RX_REAS_F) && hdr->w0.match_id == 0xFFFFU) + rx_inj = ((flags & NIX_RX_REAS_F) && ((hdr->w0.match_id == 0xFFFFU) || + (hdr->w0.cookie == 0xFFFFFFFFU))); + if (rx_inj) wqe = (const uint64_t *)*((uint64_t *)(mbuf + 1)); else wqe = (const uint64_t *)(mbuf + 1); @@ -786,7 +789,8 @@ nix_cqe_xtract_mseg(const union nix_rx_parse_u *rx, struct rte_mbuf *mbuf, later_skip = (uintptr_t)mbuf->buf_addr - (uintptr_t)mbuf; while (nb_segs) { - mbuf->next = (struct rte_mbuf *)(*iova_list - later_skip); + if (!(flags & NIX_RX_REAS_F) || !rx_inj) + mbuf->next = (struct rte_mbuf *)(*iova_list - later_skip); mbuf = mbuf->next; RTE_MEMPOOL_CHECK_COOKIES(mbuf->pool, (void **)&mbuf, 1, 1); @@ -804,7 +808,8 @@ nix_cqe_xtract_mseg(const union nix_rx_parse_u *rx, struct rte_mbuf *mbuf, mbuf->data_len = sg_len; sg = sg >> 16; p = (uintptr_t)&mbuf->rearm_data; - *(uint64_t *)p = rearm & ~0xFFFF; + if (!(flags & NIX_RX_REAS_F) || !rx_inj) + *(uint64_t *)p = rearm & ~0xFFFF; nb_segs--; iova_list++; @@ -1259,7 +1264,6 @@ cn10k_nix_rx_inj_prepare_mseg(struct rte_mbuf *m, uint64_t *cmd) slist++; } m_next = m->next; - m->next = NULL; m = m_next; } while (nb_segs); -- 2.34.1