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 92F0FA04B5; Fri, 11 Sep 2020 04:00:06 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id BFEF41C1BA; Fri, 11 Sep 2020 03:57:40 +0200 (CEST) Received: from mail-pf1-f225.google.com (mail-pf1-f225.google.com [209.85.210.225]) by dpdk.org (Postfix) with ESMTP id A09BA1C1D2 for ; Fri, 11 Sep 2020 03:57:39 +0200 (CEST) Received: by mail-pf1-f225.google.com with SMTP id o20so6004919pfp.11 for ; Thu, 10 Sep 2020 18:57:39 -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=Y6jn6qdFXNXbGXHTrLoT7DcD+TeJblOMO3h0UY15PaM=; b=cLY0GFuUpxQDcMK4gnj2ljttsNHZXyK48lfV+9N31X/xoAvGJIKGDUAjIkjsQG2T3g XBCwQOntwardT8xiy3xW9SubPPWiJe44XTEiNs354c/2AVtjbSE7qtbuOX0clyeFIEcP ctdh06FoM8JDNI7tn4tvlOFt7OM/Jz5DcW5tY= 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=Y6jn6qdFXNXbGXHTrLoT7DcD+TeJblOMO3h0UY15PaM=; b=VCPZXidwuLiHWe32lJL94T/iZt62tLJhxfT7XtqXpz2U5dG+Ma3uU3Ck1k0uebh3EN FHcFGUBiUTPKrHgDn8VSrnmPxwq3F1JLBdMVzN9D/nMIhJ4NKY7FzVeoN6ON5YGoPpmB TgyrQ7gYuUB1SPFuvu+i1XkODPkvLEib9X194m7sSjfRe+aDv5mv66BxAsSGUqn4EoMK RL2UhmJEhumssENFX7amfHdANcI1JBJ8CgIf7h2nj0Px9yvFKqCHMBTR6qkaRw4axEGL UU0ZGzH4/1uqeksCPb7av12VLRwFZ2zCeNO/jKA2FfzOs8KmgHZl9hqtv2XD/1m2+Qk2 271w== X-Gm-Message-State: AOAM532pSASWg0Nrp30G47TG4fa0sqXv54r9sUZeVTgOGhutXz/Ez2Om A00BotmFp7iH7v8jFLj34yk4tk1unB8hL+aBnyJJQVlTaaC3Tf6aG87rudd5mYEd1Z6ueCzvVDY 3w4YHP2JIIddiYAdPpvs3XipmMuIPAe8tSp/u4W9LiaRxJKUi77dbYit5ClRrckWkITXGlBGglT U6Tg== X-Google-Smtp-Source: ABdhPJyZvdNnQ6fJiZ4krqh1fkv/klCKAlPWxrY92fqF7HT3zCIZeP4fDfF+hW3EuPd/c+we/iRy+NG1mi+e X-Received: by 2002:a17:902:6945:: with SMTP id k5mr8156060plt.131.1599789458666; Thu, 10 Sep 2020 18:57:38 -0700 (PDT) Received: from localhost.localdomain ([192.19.223.252]) by smtp-relay.gmail.com with ESMTPS id cl6sm80986pjb.15.2020.09.10.18.57.36 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 10 Sep 2020 18:57:38 -0700 (PDT) X-Relaying-Domain: broadcom.com From: Ajit Khaparde To: dev@dpdk.org Cc: Somnath Kotur , Sriharsha Basavapatna , Venkat Duvvuru Date: Thu, 10 Sep 2020 18:56:00 -0700 Message-Id: <20200911015603.88359-23-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20200911015603.88359-1-ajit.khaparde@broadcom.com> References: <20200911015603.88359-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH 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 --- drivers/net/bnxt/bnxt_reps.c | 7 ++++--- drivers/net/bnxt/bnxt_rxr.c | 27 +++++++++++++-------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/drivers/net/bnxt/bnxt_reps.c b/drivers/net/bnxt/bnxt_reps.c index 9d5fa7394..fd111bec5 100644 --- a/drivers/net/bnxt/bnxt_reps.c +++ b/drivers/net/bnxt/bnxt_reps.c @@ -55,16 +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->mbuf) { prod_rx_buf->mbuf = 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 b08689814..5bfe62a2a 100644 --- a/drivers/net/bnxt/bnxt_rxr.c +++ b/drivers/net/bnxt/bnxt_rxr.c @@ -733,6 +733,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 @@ -740,20 +753,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)