From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9E816A0C47; Tue, 14 Sep 2021 08:43:21 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 678C04068F; Tue, 14 Sep 2021 08:43:21 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id A05614003C for ; Tue, 14 Sep 2021 08:43:19 +0200 (CEST) Received: from [192.168.38.17] (aros.oktetlabs.ru [192.168.38.17]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by shelob.oktetlabs.ru (Postfix) with ESMTPSA id 224BC7F52A; Tue, 14 Sep 2021 09:43:19 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru 224BC7F52A DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=oktetlabs.ru; s=default; t=1631601799; bh=6vfsCrvGyDNEjZdMFC8XhEuXz1J7rP6Bi8QVz/IopuM=; h=Subject:To:Cc:References:From:Date:In-Reply-To; b=kEBZ5tHHYtg9EmfG3WIaFBLjeikqhfKq3USXoa807XFBEwU+zbbnlylmjfninQhXk CieLeLcAHNOMcfo/XNH9q4pD+zwLNYAvjeeO/hODgzBTto0DT1JUFXRHCwup/InTId itnLkCtTd/Z6irchVKcFqDj0UmLSY/uXwJMkBncY= To: Maxime Coquelin , Chenbo Xia Cc: dev@dpdk.org, Ivan Ilchenko References: <20210820124812.3522838-1-andrew.rybchenko@oktetlabs.ru> From: Andrew Rybchenko Organization: OKTET Labs Message-ID: <2c299708-fa0e-dc2b-0f6d-193c12add364@oktetlabs.ru> Date: Tue, 14 Sep 2021 09:43:18 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH] net/virtio: report max/min/align desc limits in dev info get 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" On 9/13/21 10:52 PM, Maxime Coquelin wrote: > > > On 8/20/21 2:48 PM, Andrew Rybchenko wrote: >> From: Ivan Ilchenko >> >> Report max/min/align descriptors limits in device info get callback. >> Before calling the callback, rte_eth_dev_info_get() provides >> default values of nb_min as zero and nb_max as UINT16_MAX that are >> not correct for the driver, so one can't rely on them. >> >> Signed-off-by: Ivan Ilchenko >> Signed-off-by: Andrew Rybchenko >> --- >> drivers/net/virtio/virtio_ethdev.c | 25 +++++++++++++++++++++++++ >> 1 file changed, 25 insertions(+) >> >> diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c >> index e58085a2c9..601c03e079 100644 >> --- a/drivers/net/virtio/virtio_ethdev.c >> +++ b/drivers/net/virtio/virtio_ethdev.c >> @@ -33,6 +33,7 @@ >> #include "virtio_logs.h" >> #include "virtqueue.h" >> #include "virtio_rxtx.h" >> +#include "virtio_rxtx_simple.h" >> #include "virtio_user/virtio_user_dev.h" >> >> static int virtio_dev_configure(struct rte_eth_dev *dev); >> @@ -2536,6 +2537,30 @@ virtio_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) >> if ((host_features & tso_mask) == tso_mask) >> dev_info->tx_offload_capa |= DEV_TX_OFFLOAD_TCP_TSO; >> >> + if (host_features & (1ULL << VIRTIO_F_RING_PACKED)) { >> + /* >> + * According to 2.7 Packed Virtqueues, >> + * 2.7.10.1 Structure Size and Alignment: >> + * The Queue Size value does not have to be a power of 2. >> + */ >> + dev_info->rx_desc_lim.nb_max = UINT16_MAX; >> + } else { >> + /* >> + * According to 2.6 Split Virtqueues: >> + * Queue Size value is always a power of 2. The maximum Queue >> + * Size value is 32768. >> + */ >> + dev_info->rx_desc_lim.nb_max = 32768; >> + } >> + /* >> + * Actual minimum is not the same for virtqueues of different kinds, >> + * but to avoid tangling the code with separate branches, rely on >> + * default thresholds since desc number must be at least of their size. >> + */ >> + dev_info->rx_desc_lim.nb_min = RTE_MAX(DEFAULT_RX_FREE_THRESH, >> + RTE_VIRTIO_VPMD_RX_REARM_THRESH); >> + dev_info->rx_desc_lim.nb_align = 1; >> + > > It makes sense, but shouldn't we do the same for dev_info->tx_desc_lim? Yes, you're right. We'll care about it. I suggest to add "Rx" in the summary and care about Tx in a subsequent patch. net/virtio: report max/min/align Rx desc limits in dev info OK?