aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/dev/ena/ena.c35
1 files changed, 16 insertions, 19 deletions
diff --git a/sys/dev/ena/ena.c b/sys/dev/ena/ena.c
index ad4fa357e595..86ac5941faad 100644
--- a/sys/dev/ena/ena.c
+++ b/sys/dev/ena/ena.c
@@ -2579,8 +2579,7 @@ ena_map_llq_mem_bar(device_t pdev, struct ena_com_dev *ena_dev)
RF_ACTIVE);
if (unlikely(adapter->memory == NULL)) {
ena_log(pdev, WARN,
- "unable to allocate LLQ bar resource. Fallback to host mode policy.\n");
- ena_dev->tx_mem_queue_type = ENA_ADMIN_PLACEMENT_POLICY_HOST;
+ "Unable to allocate LLQ bar resource. LLQ mode won't be used.\n");
return (0);
}
@@ -2765,6 +2764,7 @@ static int
ena_device_init(struct ena_adapter *adapter, device_t pdev,
struct ena_com_dev_get_features_ctx *get_feat_ctx, int *wd_active)
{
+ struct ena_llq_configurations llq_config;
struct ena_com_dev *ena_dev = adapter->ena_dev;
bool readless_supported;
uint32_t aenq_groups;
@@ -2844,6 +2844,15 @@ ena_device_init(struct ena_adapter *adapter, device_t pdev,
*wd_active = !!(aenq_groups & BIT(ENA_ADMIN_KEEP_ALIVE));
+ set_default_llq_configurations(&llq_config, &get_feat_ctx->llq);
+
+ rc = ena_set_queues_placement_policy(pdev, ena_dev, &get_feat_ctx->llq,
+ &llq_config);
+ if (unlikely(rc != 0)) {
+ ena_log(pdev, ERR, "Failed to set placement policy\n");
+ goto err_admin_init;
+ }
+
return (0);
err_admin_init:
@@ -3487,7 +3496,6 @@ static int
ena_attach(device_t pdev)
{
struct ena_com_dev_get_features_ctx get_feat_ctx;
- struct ena_llq_configurations llq_config;
struct ena_calc_queue_size_ctx calc_queue_ctx = { 0 };
static int version_printed;
struct ena_adapter *adapter;
@@ -3560,7 +3568,11 @@ ena_attach(device_t pdev)
goto err_bus_free;
}
- ena_dev->tx_mem_queue_type = ENA_ADMIN_PLACEMENT_POLICY_HOST;
+ rc = ena_map_llq_mem_bar(pdev, ena_dev);
+ if (unlikely(rc != 0)) {
+ ena_log(pdev, ERR, "Failed to map ENA mem bar");
+ goto err_bus_free;
+ }
/* Initially clear all the flags */
ENA_FLAG_ZERO(adapter);
@@ -3573,21 +3585,6 @@ ena_attach(device_t pdev)
goto err_bus_free;
}
- set_default_llq_configurations(&llq_config, &get_feat_ctx.llq);
-
- rc = ena_map_llq_mem_bar(pdev, ena_dev);
- if (unlikely(rc != 0)) {
- ena_log(pdev, ERR, "failed to map ENA mem bar");
- goto err_com_free;
- }
-
- rc = ena_set_queues_placement_policy(pdev, ena_dev, &get_feat_ctx.llq,
- &llq_config);
- if (unlikely(rc != 0)) {
- ena_log(pdev, ERR, "failed to set placement policy\n");
- goto err_com_free;
- }
-
if (ena_dev->tx_mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_DEV)
adapter->disable_meta_caching = !!(
get_feat_ctx.llq.accel_mode.u.get.supported_flags &