From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5498AA04C7; Wed, 16 Sep 2020 06:32:44 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 391221C216; Wed, 16 Sep 2020 06:29:45 +0200 (CEST) Received: from mail-pl1-f225.google.com (mail-pl1-f225.google.com [209.85.214.225]) by dpdk.org (Postfix) with ESMTP id 2B5951C19F for ; Wed, 16 Sep 2020 06:29:20 +0200 (CEST) Received: by mail-pl1-f225.google.com with SMTP id c3so2498900plz.5 for ; Tue, 15 Sep 2020 21:29:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/J/f5Cx0kyUDka1l0B28/NbKJzR/7QfBlFJX/SJK5ro=; b=Mh3Pgt01tabs8YYrq7dnoucOC6dIpzBepDQLqDx2f41ykiOOa98PINxFeyZG3gd3e7 KPNqCsSf2q3d6nxoQWysTDIdYPLyfvh6tBGXa4Z20aYaGk/5zOho3ilGVsvD9iBAby32 sRQ4g0iVYA3Wn4iXgOxqvjuIKt+qpLOZBvhjE= 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=/J/f5Cx0kyUDka1l0B28/NbKJzR/7QfBlFJX/SJK5ro=; b=qapxAithTeChE6TpLZngGhIKWOc76DrcdbBgAcnQrw16G8wC57lQqszJ1bP/4c1BMK FnEmQzVxwDBHLhASW0mf8SU/3o4oBOWQdho+WqQ/J3qiOuQNAlx99IHlk17JZj3O21Ma iqBnZp54Wrt8TK2q/uLlxRSn0jSlU0v98wckSc0QLq2en3U5j10BHqR+beEpMo5E0EIl zF1brelLaSiH3QF+8wfwgz61orjaFszP23Z7Q+sYreVnqh/rqvOP4lnhcS1tSJa0Y6YA kIfnLQo5wZfAUkJFauOh2QSAUoO+yA/MEks6zKOvAfB2b/q3uBqwJtTl8rt38vqumPY9 Z03Q== X-Gm-Message-State: AOAM53180WXEQtFJphc8sTVzDKfd/r8CXujWFMFJj16a3yJ/3PfQmcSr UknFzvZ7BZRTFN/KNRRpkGk2w87uICWDG2GQYpzKMPlVa6tvWiIVBLpRcn0XkufvIwAjwi5zMos k0NhOjtQCKtTFxYkdFCPxk53k9RcoO5qoQXXFVEJ2N3IMMCQUJgDq/WaZ7GEblUtNgATT/YolFR IHqw== X-Google-Smtp-Source: ABdhPJwyUFRgZFpJ/RLhin/j8MJBfNAWZrUPD/gSYZ7/iYwTNWapO6ZNJ/73F+D+q5aMX5ktrYTuQ9s6Tmgw X-Received: by 2002:a17:90a:9503:: with SMTP id t3mr2316552pjo.171.1600230559111; Tue, 15 Sep 2020 21:29:19 -0700 (PDT) Received: from localhost.localdomain ([192.19.223.252]) by smtp-relay.gmail.com with ESMTPS id hk6sm132636pjb.6.2020.09.15.21.29.18 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 15 Sep 2020 21:29:19 -0700 (PDT) X-Relaying-Domain: broadcom.com From: Ajit Khaparde To: dev@dpdk.org Cc: Somnath Kotur , Sriharsha Basavapatna , Venkat Duvvuru Date: Tue, 15 Sep 2020 21:28:48 -0700 Message-Id: <20200916042851.32914-23-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20200916042851.32914-1-ajit.khaparde@broadcom.com> References: <20200911015603.88359-1-ajit.khaparde@broadcom.com> <20200916042851.32914-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH v2 22/25] net/bnxt: fix bugs in representor data path 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Somnath Kotur 1.Representor Rx ring producer index was not getting reset in the ring full case. Fix it by incrementing only in success case. 2.Instead of calling the mbuf specific routine to free the mbuf when representor ring is full rte_free was being called leading to 'invalid memory' errors being logged. 3. Do not account the pkt meant for the representor in the parent Rx ring's array that is returned to the application. Fixes: 6dc83230b43b ("net/bnxt: support port representor data path") Signed-off-by: Somnath Kotur Reviewed-by: Sriharsha Basavapatna Reviewed-by: Venkat Duvvuru Reviewed-by: Ajit Khaparde --- drivers/net/bnxt/bnxt_reps.c | 6 ++++-- drivers/net/bnxt/bnxt_rxr.c | 27 +++++++++++++-------------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/drivers/net/bnxt/bnxt_reps.c b/drivers/net/bnxt/bnxt_reps.c index 7350c0967..17010f1ee 100644 --- a/drivers/net/bnxt/bnxt_reps.c +++ b/drivers/net/bnxt/bnxt_reps.c @@ -55,15 +55,17 @@ bnxt_vfr_recv(uint16_t port_id, uint16_t queue_id, struct rte_mbuf *mbuf) mask = rep_rxr->rx_ring_struct->ring_mask; /* Put this mbuf on the RxQ of the Representor */ - prod_rx_buf = &rep_rxr->rx_buf_ring[rep_rxr->rx_prod++ & mask]; + prod_rx_buf = &rep_rxr->rx_buf_ring[rep_rxr->rx_prod & mask]; if (!*prod_rx_buf) { *prod_rx_buf = mbuf; vfr_bp->rx_bytes[que] += mbuf->pkt_len; vfr_bp->rx_pkts[que]++; + rep_rxr->rx_prod++; } else { + /* Representor Rx ring full, drop pkt */ vfr_bp->rx_drop_bytes[que] += mbuf->pkt_len; vfr_bp->rx_drop_pkts[que]++; - rte_pktmbuf_free(mbuf); /* Representor Rx ring full, drop pkt */ + rte_pktmbuf_free(mbuf); } return 0; diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c index ca3e0a521..039217fa6 100644 --- a/drivers/net/bnxt/bnxt_rxr.c +++ b/drivers/net/bnxt/bnxt_rxr.c @@ -795,6 +795,19 @@ static int bnxt_rx_pkt(struct rte_mbuf **rx_pkt, goto rx; } rxr->rx_prod = prod; + + if (BNXT_TRUFLOW_EN(bp) && (BNXT_VF_IS_TRUSTED(bp) || BNXT_PF(bp)) && + vfr_flag) { + bnxt_vfr_recv(mark_id, rxq->queue_id, mbuf); + /* Now return an error so that nb_rx_pkts is not + * incremented. + * This packet was meant to be given to the representor. + * So no need to account the packet and give it to + * parent Rx burst function. + */ + rc = -ENODEV; + goto next_rx; + } /* * All MBUFs are allocated with the same size under DPDK, * no optimization for rx_copy_thresh @@ -802,20 +815,6 @@ static int bnxt_rx_pkt(struct rte_mbuf **rx_pkt, rx: *rx_pkt = mbuf; - if (BNXT_TRUFLOW_EN(bp) && - (BNXT_VF_IS_TRUSTED(bp) || BNXT_PF(bp)) && - vfr_flag) { - if (!bnxt_vfr_recv(mark_id, rxq->queue_id, mbuf)) { - /* Now return an error so that nb_rx_pkts is not - * incremented. - * This packet was meant to be given to the representor. - * So no need to account the packet and give it to - * parent Rx burst function. - */ - rc = -ENODEV; - } - } - next_rx: *raw_cons = tmp_raw_cons; -- 2.21.1 (Apple Git-122.3)