From 9ae7a13f8247319f63402107c8304ba57c3f4308 Mon Sep 17 00:00:00 2001 From: Dawid Gorecki Date: Wed, 23 Feb 2022 13:19:42 +0100 Subject: [PATCH] net/ena: check memory BAR before initializing LLQ The ena_com_config_dev_mode() performs many calculations related to LLQ and then performs an admin queue call to configure LLQ in the device. All of the operations performed by ena_com_config_dev_mode() are unnecessary if membar hasn't been found. Move the dev_mem_base check before ena_com_config_dev_mode() call. This prevents the unnecessary operations from being performed. Fixes: 2fca2a98c0d1 ("net/ena: support LLQv2") Cc: stable@dpdk.org Signed-off-by: Dawid Gorecki Reviewed-by: Michal Krawczyk Reviewed-by: Shai Brandes --- drivers/net/ena/ena_ethdev.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c index b471102ea9..151c688eec 100644 --- a/drivers/net/ena/ena_ethdev.c +++ b/drivers/net/ena/ena_ethdev.c @@ -1953,6 +1953,13 @@ ena_set_queues_placement_policy(struct ena_adapter *adapter, return 0; } + if (adapter->dev_mem_base == NULL) { + PMD_DRV_LOG(ERR, + "LLQ is advertised as supported, but device doesn't expose mem bar\n"); + ena_dev->tx_mem_queue_type = ENA_ADMIN_PLACEMENT_POLICY_HOST; + return 0; + } + rc = ena_com_config_dev_mode(ena_dev, llq, llq_default_configurations); if (unlikely(rc)) { PMD_INIT_LOG(WARNING, @@ -1965,13 +1972,6 @@ ena_set_queues_placement_policy(struct ena_adapter *adapter, if (ena_dev->tx_mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_HOST) return 0; - if (!adapter->dev_mem_base) { - PMD_DRV_LOG(ERR, - "Unable to access LLQ BAR resource. Fallback to host mode policy.\n"); - ena_dev->tx_mem_queue_type = ENA_ADMIN_PLACEMENT_POLICY_HOST; - return 0; - } - ena_dev->mem_bar = adapter->dev_mem_base; return 0; -- 2.39.5