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 49A7445B4C; Tue, 22 Oct 2024 21:16:38 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2E1BF40E7C; Tue, 22 Oct 2024 21:15:10 +0200 (CEST) Received: from inva020.nxp.com (inva020.nxp.com [92.121.34.13]) by mails.dpdk.org (Postfix) with ESMTP id D5E2740DF5 for ; Tue, 22 Oct 2024 21:13:12 +0200 (CEST) Received: from inva020.nxp.com (localhost [127.0.0.1]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id B336B1A11C0; Tue, 22 Oct 2024 21:13:12 +0200 (CEST) Received: from aprdc01srsp001v.ap-rdc01.nxp.com (aprdc01srsp001v.ap-rdc01.nxp.com [165.114.16.16]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id 697671A050D; Tue, 22 Oct 2024 21:13:12 +0200 (CEST) Received: from lsv03379.swis.in-blr01.nxp.com (lsv03379.swis.in-blr01.nxp.com [92.120.147.188]) by aprdc01srsp001v.ap-rdc01.nxp.com (Postfix) with ESMTP id CC482183DC03; Wed, 23 Oct 2024 03:13:11 +0800 (+08) From: vanshika.shukla@nxp.com To: dev@dpdk.org, Hemant Agrawal , Sachin Saxena Cc: Gagandeep Singh Subject: [v4 35/42] net/dpaa2: support software taildrop Date: Wed, 23 Oct 2024 00:42:48 +0530 Message-Id: <20241022191256.516818-36-vanshika.shukla@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241022191256.516818-1-vanshika.shukla@nxp.com> References: <20241014120126.170790-1-vanshika.shukla@nxp.com> <20241022191256.516818-1-vanshika.shukla@nxp.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Virus-Scanned: ClamAV using ClamSMTP 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: Gagandeep Singh Add software based taildrop support. Signed-off-by: Gagandeep Singh --- drivers/bus/fslmc/portal/dpaa2_hw_pvt.h | 2 +- drivers/net/dpaa2/dpaa2_rxtx.c | 24 +++++++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h index 74a1a8b2fa..b6cd1f00c4 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h +++ b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h @@ -179,7 +179,7 @@ struct __rte_cache_aligned dpaa2_queue { struct dpaa2_queue *tx_conf_queue; int32_t eventfd; /*!< Event Fd of this queue */ uint16_t nb_desc; - uint16_t resv; + uint16_t tm_sw_td; /*!< TM software taildrop */ uint64_t offloads; uint64_t lpbk_cntx; uint8_t data_stashing_off; diff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.c index 71b2b4a427..fd07a75a40 100644 --- a/drivers/net/dpaa2/dpaa2_rxtx.c +++ b/drivers/net/dpaa2/dpaa2_rxtx.c @@ -1297,8 +1297,11 @@ dpaa2_dev_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) while (qbman_result_SCN_state(dpaa2_q->cscn)) { retry_count++; /* Retry for some time before giving up */ - if (retry_count > CONG_RETRY_COUNT) + if (retry_count > CONG_RETRY_COUNT) { + if (dpaa2_q->tm_sw_td) + goto sw_td; goto skip_tx; + } } frames_to_send = (nb_pkts > dpaa2_eqcr_size) ? @@ -1490,6 +1493,25 @@ dpaa2_dev_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) rte_pktmbuf_free_seg(buf_to_free[loop].seg); } + return num_tx; +sw_td: + loop = 0; + while (loop < num_tx) { + if (unlikely(RTE_MBUF_HAS_EXTBUF(*bufs))) + rte_pktmbuf_free(*bufs); + bufs++; + loop++; + } + + /* free the pending buffers */ + while (nb_pkts) { + rte_pktmbuf_free(*bufs); + bufs++; + nb_pkts--; + num_tx++; + } + dpaa2_q->tx_pkts += num_tx; + return num_tx; } -- 2.25.1