mlxsw: spectrum_router: Call RIF setup before obtaining FID
authorPetr Machata <petrm@nvidia.com>
Mon, 20 Nov 2023 18:25:31 +0000 (19:25 +0100)
committerJakub Kicinski <kuba@kernel.org>
Tue, 21 Nov 2023 22:53:09 +0000 (14:53 -0800)
For subport RIFs, the setup initializes, among other things, RIF port and
LAG numbers. Those are important to determine where in the PGT the RIF FID
will be stored. Therefore, call the RIF setup before fid_get.

Signed-off-by: Petr Machata <petrm@nvidia.com>
Reviewed-by: Amit Cohen <amcohen@nvidia.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Link: https://lore.kernel.org/r/f24d8cad7e4748b8e8e0e16894ca6a20704dea32.1700503644.git.petrm@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c

index a358ceb4e1d0deb11a020b944da83c515bbfee98..2c255ed9b8a9483da266c27cf8e9ddd8d85d2546 100644 (file)
@@ -8419,6 +8419,9 @@ mlxsw_sp_rif_create(struct mlxsw_sp *mlxsw_sp,
        rif->ops = ops;
        rif->rif_entries = rif_entries;
 
+       if (ops->setup)
+               ops->setup(rif, params);
+
        if (ops->fid_get) {
                fid = ops->fid_get(rif, params, extack);
                if (IS_ERR(fid)) {
@@ -8428,9 +8431,6 @@ mlxsw_sp_rif_create(struct mlxsw_sp *mlxsw_sp,
                rif->fid = fid;
        }
 
-       if (ops->setup)
-               ops->setup(rif, params);
-
        err = ops->configure(rif, extack);
        if (err)
                goto err_configure;