if (err)
                mlx5_core_err(mdev, "TLS initialization failed, %d\n", err);
        mlx5e_build_nic_netdev(netdev);
+       err = mlx5e_devlink_port_register(priv);
+       if (err)
+               mlx5_core_err(mdev, "mlx5e_devlink_port_register failed, %d\n", err);
        mlx5e_health_create_reporters(priv);
 
        return 0;
 static void mlx5e_nic_cleanup(struct mlx5e_priv *priv)
 {
        mlx5e_health_destroy_reporters(priv);
+       mlx5e_devlink_port_unregister(priv);
        mlx5e_tls_cleanup(priv);
        mlx5e_ipsec_cleanup(priv);
        mlx5e_netdev_cleanup(priv->netdev, priv);
                goto err_destroy_netdev;
        }
 
-       err = mlx5e_devlink_port_register(priv);
-       if (err) {
-               mlx5_core_err(mdev, "mlx5e_devlink_port_register failed, %d\n", err);
-               goto err_detach;
-       }
-
        err = register_netdev(netdev);
        if (err) {
                mlx5_core_err(mdev, "register_netdev failed, %d\n", err);
-               goto err_devlink_port_unregister;
+               goto err_detach;
        }
 
        mlx5e_devlink_port_type_eth_set(priv);
        mlx5e_dcbnl_init_app(priv);
        return priv;
 
-err_devlink_port_unregister:
-       mlx5e_devlink_port_unregister(priv);
 err_detach:
        mlx5e_detach(mdev, priv);
 err_destroy_netdev:
        priv = vpriv;
        mlx5e_dcbnl_delete_app(priv);
        unregister_netdev(priv->netdev);
-       mlx5e_devlink_port_unregister(priv);
        mlx5e_detach(mdev, vpriv);
        mlx5e_destroy_netdev(priv);
 }