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 40ABEA0C4D; Fri, 20 Aug 2021 14:48:20 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 307B641259; Fri, 20 Aug 2021 14:48:20 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id 8AE8041256 for ; Fri, 20 Aug 2021 14:48:19 +0200 (CEST) Received: by shelob.oktetlabs.ru (Postfix, from userid 122) id 48CE27F530; Fri, 20 Aug 2021 15:48:19 +0300 (MSK) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shelob.oktetlabs.ru X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=ALL_TRUSTED, DKIM_ADSP_DISCARD, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.2 Received: from aros.oktetlabs.ru (aros.oktetlabs.ru [192.168.38.17]) by shelob.oktetlabs.ru (Postfix) with ESMTP id 75C727F50A; Fri, 20 Aug 2021 15:48:15 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru 75C727F50A Authentication-Results: shelob.oktetlabs.ru/75C727F50A; dkim=none; dkim-atps=neutral From: Andrew Rybchenko To: Maxime Coquelin , Chenbo Xia Cc: dev@dpdk.org, Ivan Ilchenko Date: Fri, 20 Aug 2021 15:48:12 +0300 Message-Id: <20210820124812.3522838-1-andrew.rybchenko@oktetlabs.ru> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [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" 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; + return 0; } -- 2.30.2