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 8B746A0559; Mon, 16 Mar 2020 18:24:16 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D0D4A1C0BF; Mon, 16 Mar 2020 18:24:14 +0100 (CET) Received: from mail-lf1-f65.google.com (mail-lf1-f65.google.com [209.85.167.65]) by dpdk.org (Postfix) with ESMTP id 19F751C08D for ; Mon, 16 Mar 2020 18:24:13 +0100 (CET) Received: by mail-lf1-f65.google.com with SMTP id n20so11429477lfl.10 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=YpknWL08nWITXkpdEIp7bLetgOrDKguvGjpf3qIDaqC6eJCYAZ5InqMu5JyBKqDDGV CUSJuA1EqzATmmLQcB3+nuHONIPsCpdiX8tLogTtLZwxBLP4nFdXEt9X07yrLMo41OXu Egg794ez5HB0sEjzftES+UeWY+JQSRpcygoq8+4ZAMRRj8PM1/JZNryfuEt0KMp3cIOf aGcpul0vLhaqcQu66v07BaRAqF61FKmc5iwX4TPQn5Koqy1uxh/ZbhqwGqMGxUCoaEuV BhlJkN4EO7UnrhWxEgKHWTeR8fXIusXRzRB4gEwrwNoaQsyH1K1yEWKWlKwGC7jgzam5 ergg== X-Gm-Message-State: ANhLgQ0FfOhmUj4riRRjXW7ZmYLbC8AsFLn5Pvjt6UmIcLRreccBM0q+ trKFwswMujgfLyAudXkuvJQ4r/OBlMuPoq+eh624vg== 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-dev] [PATCH] net/mlx5: fix Rx descriptor status returned value 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" 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 > >