From patchwork Tue Mar 2 15:16:08 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Richardson X-Patchwork-Id: 88394 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 67A5CA054F; Tue, 2 Mar 2021 16:23:23 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A74E240693; Tue, 2 Mar 2021 16:16:26 +0100 (CET) Received: from mail-pg1-f170.google.com (mail-pg1-f170.google.com [209.85.215.170]) by mails.dpdk.org (Postfix) with ESMTP id F0DE040142 for ; Tue, 2 Mar 2021 16:16:24 +0100 (CET) Received: by mail-pg1-f170.google.com with SMTP id e6so14003251pgk.5 for ; Tue, 02 Mar 2021 07:16:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:mime-version; bh=w0B2fT3JCkHL+DlMlSaTW4Ti5X+ByF0rIMvyRS385jg=; b=OMWlW2h4wb+P3UnhfC80d2J6dp8f7Xkb0EHoYaZ4UehRTbTJXt5fsLb1x+AVLZKr7D jJ6mUzHm5LnXBj2i02iQX6lvJrdkvGyXjWLPj0eyHkxcCwJFd2AbHwnHOexQw4cJEUQp Eg+D/MAJRCF70hvd1oWA6g8HfUcNP8IFlGKD4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version; bh=w0B2fT3JCkHL+DlMlSaTW4Ti5X+ByF0rIMvyRS385jg=; b=rLtmC+FEnNBzfpq4O/RHNrVltRciZtCQtkJvWhiLAv3YZz4/cR/tH600uiCE6LAfvP YR/iw9gQrcZzhiAl7bmNr4sz8JxJZGL7TIbGNSQ5E8xgWdr7zIl3hGNwy1wjX7NMP7eH M7PM8pqjWgndBeSELHTAWuRORpT/id4rcfVscLTRx3/+e83AzMMpQUQwvPjVlnG7rHsa k2Gx3y1Pk7ffCRm6TQ6lYluvbim9cStXUlrzBFxdVEjKf2rC4y4JS/3DGpEi2+u317Ex ULhdArDtheRQoXi1xrz9EtWsAkprgE72acVYhqf0W+wJ7LXN+V0mMTfLCXGBlkwD5P5O +9Fg== X-Gm-Message-State: AOAM532hfXJntgfCSCEj/qDXjtLmoXSPOa89lZpvBCDnSL2KpGKZPt+O tVTolHs5VkuNTGeRHToTxbDZ2Q== X-Google-Smtp-Source: ABdhPJyAOIdPsNW8XvbAFrLmUY+GtZTf47g0ipBDZ5xSkCOICzeQ27vOE0VrsH7Su+7pdowMXnqjJQ== X-Received: by 2002:a63:4207:: with SMTP id p7mr18517111pga.406.1614698183843; Tue, 02 Mar 2021 07:16:23 -0800 (PST) Received: from localhost.localdomain ([192.19.231.250]) by smtp.gmail.com with ESMTPSA id x7sm159836pjr.7.2021.03.02.07.16.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Mar 2021 07:16:22 -0800 (PST) From: Lance Richardson To: Ajit Khaparde , Somnath Kotur , Jerin Jacob , Ruifeng Wang , Bruce Richardson , Konstantin Ananyev Cc: dev@dpdk.org Date: Tue, 2 Mar 2021 10:16:08 -0500 Message-Id: <20210302151608.537865-1-lance.richardson@broadcom.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [dpdk-dev] [PATCH] net/bnxt: don't set mbuf pointers to null in vector PMD 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 Sender: "dev" Remove code for setting consumed mbuf pointers to NULL from the vector receive functions as a minor performance optimization. Signed-off-by: Lance Richardson Reviewed-by: Ajit Kumar Khaparde Reviewed-by: Somnath Kotur --- drivers/net/bnxt/bnxt_rxq.c | 10 ++++++++++ drivers/net/bnxt/bnxt_rxtx_vec_neon.c | 17 +---------------- drivers/net/bnxt/bnxt_rxtx_vec_sse.c | 17 +---------------- 3 files changed, 12 insertions(+), 32 deletions(-) diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c index f46b10c1c5..d345c37c8d 100644 --- a/drivers/net/bnxt/bnxt_rxq.c +++ b/drivers/net/bnxt/bnxt_rxq.c @@ -212,6 +212,16 @@ void bnxt_rx_queue_release_mbufs(struct bnxt_rx_queue *rxq) sw_ring = rxq->rx_ring->rx_buf_ring; if (sw_ring) { +#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) + /* + * The vector receive burst function does not set used + * mbuf pointers to NULL, do that here to simplify + * cleanup logic. + */ + for (i = 0; i < rxq->rxrearm_nb; i++) + sw_ring[rxq->rxrearm_start + i] = NULL; + rxq->rxrearm_nb = 0; +#endif for (i = 0; i < rxq->rx_ring->rx_ring_struct->ring_size; i++) { if (sw_ring[i]) { diff --git a/drivers/net/bnxt/bnxt_rxtx_vec_neon.c b/drivers/net/bnxt/bnxt_rxtx_vec_neon.c index b0981da0f4..3d54d9d59d 100644 --- a/drivers/net/bnxt/bnxt_rxtx_vec_neon.c +++ b/drivers/net/bnxt/bnxt_rxtx_vec_neon.c @@ -274,22 +274,8 @@ bnxt_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts, num_valid = (sizeof(uint64_t) / sizeof(uint16_t)) - (__builtin_clzl(valid & desc_valid_mask) / 16); - switch (num_valid) { - case 4: - rxr->rx_buf_ring[mbcons + 3] = NULL; - /* FALLTHROUGH */ - case 3: - rxr->rx_buf_ring[mbcons + 2] = NULL; - /* FALLTHROUGH */ - case 2: - rxr->rx_buf_ring[mbcons + 1] = NULL; - /* FALLTHROUGH */ - case 1: - rxr->rx_buf_ring[mbcons + 0] = NULL; + if (num_valid == 0) break; - case 0: - goto out; - } descs_to_mbufs(rxcmp, rxcmp1, mb_init, &rx_pkts[nb_rx_pkts], rxr); @@ -299,7 +285,6 @@ bnxt_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts, break; } -out: if (nb_rx_pkts) { rxr->rx_raw_prod = RING_ADV(rxr->rx_raw_prod, nb_rx_pkts); diff --git a/drivers/net/bnxt/bnxt_rxtx_vec_sse.c b/drivers/net/bnxt/bnxt_rxtx_vec_sse.c index 7ae6f5c098..7a58434ce9 100644 --- a/drivers/net/bnxt/bnxt_rxtx_vec_sse.c +++ b/drivers/net/bnxt/bnxt_rxtx_vec_sse.c @@ -256,22 +256,8 @@ bnxt_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts, valid = _mm_cvtsi128_si64(_mm_packs_epi32(info3_v, info3_v)); num_valid = __builtin_popcountll(valid & desc_valid_mask); - switch (num_valid) { - case 4: - rxr->rx_buf_ring[mbcons + 3] = NULL; - /* FALLTHROUGH */ - case 3: - rxr->rx_buf_ring[mbcons + 2] = NULL; - /* FALLTHROUGH */ - case 2: - rxr->rx_buf_ring[mbcons + 1] = NULL; - /* FALLTHROUGH */ - case 1: - rxr->rx_buf_ring[mbcons + 0] = NULL; + if (num_valid == 0) break; - case 0: - goto out; - } descs_to_mbufs(rxcmp, rxcmp1, mbuf_init, &rx_pkts[nb_rx_pkts], rxr); @@ -281,7 +267,6 @@ bnxt_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts, break; } -out: if (nb_rx_pkts) { rxr->rx_raw_prod = RING_ADV(rxr->rx_raw_prod, nb_rx_pkts);