From: Dawid Gorecki <d...@semihalf.com>

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: sta...@dpdk.org

Signed-off-by: Dawid Gorecki <d...@semihalf.com>
Reviewed-by: Michal Krawczyk <m...@semihalf.com>
Reviewed-by: Shai Brandes <shaib...@amazon.com>
---
 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 f4be79d240..9f29cf04ac 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.25.1

Reply via email to