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 D4541A0559 for ; Mon, 16 Mar 2020 18:24:14 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 92A9D1C08D; Mon, 16 Mar 2020 18:24:14 +0100 (CET) Received: from mail-lf1-f66.google.com (mail-lf1-f66.google.com [209.85.167.66]) by dpdk.org (Postfix) with ESMTP id 20FB01C0B8 for ; Mon, 16 Mar 2020 18:24:13 +0100 (CET) Received: by mail-lf1-f66.google.com with SMTP id b13so14762864lfb.12 for ; Mon, 16 Mar 2020 10:24:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=HdXN4t8kiQCqoIyKYeaPx9V4Cjgu/n4rUzvlXxIfAHA=; b=hBZKoa18ZOZDiubPdsF9JKjLaaZUgfH5T36VPK0ldGTfh4AmYkjgG5g59mNVFzZoH/ Dd45dC2c2FitTQ7LpmULiODmJc1bx3dJgAsXdjTrppZ6P9BYSNcO4C4Dv/wacLK2bukA dcR+CYT6jfOym/1W+FbgSh/4c5Ir/6LkemPvrBDkcCS+r9j/c4UfgvmKd9DjVrmEW9L/ H48sIxBdLPpFLXSTVfGydqtYzHrweEG1geF9x2RaLM7zoV8suaLc6JjKWbnXmnpAvXrT lZMLh7dlEaE6fC5jHdJ8ehRpXPUCxIPY/hsOumYxCSn6+iZYWrZpY21cZQ5TZ0RkPKfs g/xA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=HdXN4t8kiQCqoIyKYeaPx9V4Cjgu/n4rUzvlXxIfAHA=; b=b1ydrjBKG2QQyd0jNwpKm/kXD1ounhmOq6/weNyXz6Abr4OMPL3TGpJA+74SSRidzO 8wED+ewU5mwKDPRPuUPGbxFn7RAyk1Q8CRVfhN6GN1nph+YXaBG3l8+ynEVYfKDojSdl dsY3QGcGGpU0yUlmIRaEiGc7GOLkIMi8bSmSTg8UzEt0+rP9cVeEdCnNS3OT/9ErXdOw cJC68RJH4PrU7N1baeKhBQeQb5hY46MDHZ5nmJxCh2gEJXM9npcyGKJdjlBWawruIvo0 gCqYRtMg5Izcgf95vQj9QaeuIe/6NzO2UU+J/qhL35s/Bg/YsVNu091qKMzoSOqXrH4q 2dlA== X-Gm-Message-State: ANhLgQ3WlxlMq8Zg6mmEo7uwhPCb7tmSFelqw82oJ8z11wK1uS2+wkcW AU88JJe9CH/SD7oZC54bUfrR4uGB5P4zShWcPlvxBw== X-Google-Smtp-Source: ADFU+vv03QZZPxKL4l8tzbf8Dy1EgfE4m4RkqRT/eJKpyhR/O/4Lo8R7ZQjPqETXOECW23VPkfbkbn41sVaVKmRJE8c= X-Received: by 2002:a19:ca46:: with SMTP id h6mr282450lfj.108.1584379452611; Mon, 16 Mar 2020 10:24:12 -0700 (PDT) MIME-Version: 1.0 References: <20200313095659.19000-1-didier.pallard@6wind.com> In-Reply-To: From: Didier Pallard Date: Mon, 16 Mar 2020 18:24:00 +0100 Message-ID: To: Slava Ovsiienko Cc: "dev@dpdk.org" , "stable@dpdk.org" , Matan Azrad Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-stable] [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status returned value X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" Well, you're right, another way to fix the problem could be to set up the queue size assuming the provided number is a number of packets in queue rather than a number of mbufs in queue. But not sure it's better, it's also important for the application/user to know the number of mbufs that could fit in a rx/tx queue, whatever the number of packets that it covers, since it is very important to size the memory pools correctly to avoid any mbuf shortage during system life. Thanks Didier On Mon, Mar 16, 2020 at 5:05 PM Slava Ovsiienko wrote: > Hi, Didier > > First, thank you for the patch. > > If we have a look at the description of rte_eth_rx_queue_count(): "Get the > number of used descriptors of a rx queue". > It means the DPDK generic descriptors, not PMD specific ones. "DPDK > descriptor" means the entity which can handle one packet. > rte_eth_rx_queue_count() should return the potential number of packets > could be fetched from the Rx queue on the next rx_burst() call. > Application should know anything about PMD descriptors, it must be > isolated. So, rx_queue_count() should return the number of expected > packets not hardware entries. That's why the value being returned is > compared with elts, not with HW desctriptors. > > As for -1 - I agree, should be fixed. > > It seems we have another bug - the Rx queue is created with number of > hardware descriptors which does not correspond the requested packets > in case of multi-segment packets (requested desc is divided by > (1< > With best regards, Slava > > > -----Original Message----- > > From: dev On Behalf Of Didier Pallard > > Sent: Friday, March 13, 2020 11:57 > > To: dev@dpdk.org > > Cc: stable@dpdk.org > > Subject: [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status returned > value > > > > Two bugs in rx_queue_count function: > > - One entry may contain several segments, so 'used' must be multiplied > > by number of segments per entry to properly reflect the queue usage. > > - rx_queue_count returns the number of entries used in queue, so it > ranges > > from 0 to max number of entries in queue, not this number minus > > one. > > > > Fixes: 8788fec1f269 ("net/mlx5: implement descriptor status API") > > Cc: stable@dpdk.org > > Signed-off-by: Didier Pallard > > --- > > drivers/net/mlx5/mlx5_rxtx.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c > index > > 5ac63da8039d..17f80c25443e 100644 > > --- a/drivers/net/mlx5/mlx5_rxtx.c > > +++ b/drivers/net/mlx5/mlx5_rxtx.c > > @@ -500,7 +500,7 @@ rx_queue_count(struct mlx5_rxq_data *rxq) > > used += n; > > cqe = &(*rxq->cqes)[cq_ci & cqe_cnt]; > > } > > - used = RTE_MIN(used, (1U << rxq->elts_n) - 1); > > + used = RTE_MIN(used * (1 << rxq->sges_n), 1U << rxq->elts_n); > > return used; > > } > > > > -- > > 2.24.1 > >