|
@@ -1173,6 +1173,18 @@ static int mlx5_load_one(struct mlx5_core_dev *dev, struct mlx5_priv *priv,
|
|
|
goto err_affinity_hints;
|
|
|
}
|
|
|
|
|
|
+ err = mlx5_fpga_device_start(dev);
|
|
|
+ if (err) {
|
|
|
+ dev_err(&pdev->dev, "fpga device start failed %d\n", err);
|
|
|
+ goto err_fpga_start;
|
|
|
+ }
|
|
|
+
|
|
|
+ err = mlx5_accel_ipsec_init(dev);
|
|
|
+ if (err) {
|
|
|
+ dev_err(&pdev->dev, "IPSec device start failed %d\n", err);
|
|
|
+ goto err_ipsec_start;
|
|
|
+ }
|
|
|
+
|
|
|
err = mlx5_init_fs(dev);
|
|
|
if (err) {
|
|
|
dev_err(&pdev->dev, "Failed to init flow steering\n");
|
|
@@ -1191,17 +1203,6 @@ static int mlx5_load_one(struct mlx5_core_dev *dev, struct mlx5_priv *priv,
|
|
|
goto err_sriov;
|
|
|
}
|
|
|
|
|
|
- err = mlx5_fpga_device_start(dev);
|
|
|
- if (err) {
|
|
|
- dev_err(&pdev->dev, "fpga device start failed %d\n", err);
|
|
|
- goto err_fpga_start;
|
|
|
- }
|
|
|
- err = mlx5_accel_ipsec_init(dev);
|
|
|
- if (err) {
|
|
|
- dev_err(&pdev->dev, "IPSec device start failed %d\n", err);
|
|
|
- goto err_ipsec_start;
|
|
|
- }
|
|
|
-
|
|
|
if (mlx5_device_registered(dev)) {
|
|
|
mlx5_attach_device(dev);
|
|
|
} else {
|
|
@@ -1219,17 +1220,18 @@ out:
|
|
|
return 0;
|
|
|
|
|
|
err_reg_dev:
|
|
|
- mlx5_accel_ipsec_cleanup(dev);
|
|
|
-err_ipsec_start:
|
|
|
- mlx5_fpga_device_stop(dev);
|
|
|
-
|
|
|
-err_fpga_start:
|
|
|
mlx5_sriov_detach(dev);
|
|
|
|
|
|
err_sriov:
|
|
|
mlx5_cleanup_fs(dev);
|
|
|
|
|
|
err_fs:
|
|
|
+ mlx5_accel_ipsec_cleanup(dev);
|
|
|
+
|
|
|
+err_ipsec_start:
|
|
|
+ mlx5_fpga_device_stop(dev);
|
|
|
+
|
|
|
+err_fpga_start:
|
|
|
mlx5_irq_clear_affinity_hints(dev);
|
|
|
|
|
|
err_affinity_hints:
|
|
@@ -1296,11 +1298,10 @@ static int mlx5_unload_one(struct mlx5_core_dev *dev, struct mlx5_priv *priv,
|
|
|
if (mlx5_device_registered(dev))
|
|
|
mlx5_detach_device(dev);
|
|
|
|
|
|
- mlx5_accel_ipsec_cleanup(dev);
|
|
|
- mlx5_fpga_device_stop(dev);
|
|
|
-
|
|
|
mlx5_sriov_detach(dev);
|
|
|
mlx5_cleanup_fs(dev);
|
|
|
+ mlx5_accel_ipsec_cleanup(dev);
|
|
|
+ mlx5_fpga_device_stop(dev);
|
|
|
mlx5_irq_clear_affinity_hints(dev);
|
|
|
free_comp_eqs(dev);
|
|
|
mlx5_stop_eqs(dev);
|