mlxsw: pci: Query resources before and after issuing 'CONFIG_PROFILE' command
authorAmit Cohen <amcohen@nvidia.com>
Tue, 21 Jun 2022 08:33:42 +0000 (11:33 +0300)
committerDavid S. Miller <davem@davemloft.net>
Wed, 22 Jun 2022 11:56:58 +0000 (12:56 +0100)
Currently, as part of mlxsw_pci_init(), resources are queried from firmware
before issuing the 'CONFIG_PROFILE' command.

There are resources whose size depend on the enablement of the unified
bridge model that is performed via 'CONFIG_PROFILE' command. As a
preparation for unified bridge model, add an additional query after issuing
this command. Both queries are required as KVD sizes are read from
firmware and then are configured as part of 'CONFIG_PROFILE' command.

Signed-off-by: Amit Cohen <amcohen@nvidia.com>
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/pci.c

index 8dd2479c7937cabc7483f40d1cb10d0ac9abcb84..4687dabaaf09237ccc45beea281fbd10fb029c98 100644 (file)
@@ -1551,6 +1551,14 @@ static int mlxsw_pci_init(void *bus_priv, struct mlxsw_core *mlxsw_core,
        if (err)
                goto err_config_profile;
 
+       /* Some resources depend on unified bridge model, which is configured
+        * as part of config_profile. Query the resources again to get correct
+        * values.
+        */
+       err = mlxsw_core_resources_query(mlxsw_core, mbox, res);
+       if (err)
+               goto err_requery_resources;
+
        err = mlxsw_pci_aqs_init(mlxsw_pci, mbox);
        if (err)
                goto err_aqs_init;
@@ -1568,6 +1576,7 @@ static int mlxsw_pci_init(void *bus_priv, struct mlxsw_core *mlxsw_core,
 err_request_eq_irq:
        mlxsw_pci_aqs_fini(mlxsw_pci);
 err_aqs_init:
+err_requery_resources:
 err_config_profile:
 err_cqe_v_check:
 err_query_resources: