git: e47a6525e71d - main - Add missing init of new fields after new UAR API was introduced by f8f5b459d21e in mlx5ib.

Hans Petter Selasky hselasky at FreeBSD.org
Thu Jan 14 10:47:15 UTC 2021


The branch main has been updated by hselasky:

URL: https://cgit.FreeBSD.org/src/commit/?id=e47a6525e71d48fd3dd49aac61cbe211ceec34f2

commit e47a6525e71d48fd3dd49aac61cbe211ceec34f2
Author:     Hans Petter Selasky <hselasky at FreeBSD.org>
AuthorDate: 2021-01-14 10:42:31 +0000
Commit:     Hans Petter Selasky <hselasky at FreeBSD.org>
CommitDate: 2021-01-14 10:44:54 +0000

    Add missing init of new fields after new UAR API was introduced
    by f8f5b459d21e in mlx5ib.
    
    MFC after: 1 week
    Sponsored by: Mellanox Technologies // NVIDIA Networking
---
 sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c | 42 +++++++++++++++++++++++++++++++++++--
 1 file changed, 40 insertions(+), 2 deletions(-)

diff --git a/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c b/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
index 58f9379e867b..f2485d13d791 100644
--- a/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
+++ b/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2013-2015, Mellanox Technologies, Ltd.  All rights reserved.
+ * Copyright (c) 2013-2021, Mellanox Technologies, Ltd.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -3226,6 +3226,36 @@ free:
 	return ARRAY_SIZE(names);
 }
 
+static int mlx5_ib_stage_bfreg_init(struct mlx5_ib_dev *dev)
+{
+	int err;
+
+	err = mlx5_alloc_bfreg(dev->mdev, &dev->bfreg, false, false);
+	if (err)
+		return err;
+
+	err = mlx5_alloc_bfreg(dev->mdev, &dev->fp_bfreg, false, true);
+	if (err) {
+		mlx5_free_bfreg(dev->mdev, &dev->bfreg);
+		return err;
+	}
+
+	err = mlx5_alloc_bfreg(dev->mdev, &dev->wc_bfreg, true, false);
+	if (err) {
+		mlx5_free_bfreg(dev->mdev, &dev->fp_bfreg);
+		mlx5_free_bfreg(dev->mdev, &dev->bfreg);
+	}
+
+	return err;
+}
+
+static void mlx5_ib_stage_bfreg_cleanup(struct mlx5_ib_dev *dev)
+{
+	mlx5_free_bfreg(dev->mdev, &dev->wc_bfreg);
+	mlx5_free_bfreg(dev->mdev, &dev->fp_bfreg);
+	mlx5_free_bfreg(dev->mdev, &dev->bfreg);
+}
+
 static void *mlx5_ib_add(struct mlx5_core_dev *mdev)
 {
 	struct mlx5_ib_dev *dev;
@@ -3430,10 +3460,14 @@ static void *mlx5_ib_add(struct mlx5_core_dev *mdev)
 	if (err)
 		goto err_odp;
 
-	err = ib_register_device(&dev->ib_dev, NULL);
+	err = mlx5_ib_stage_bfreg_init(dev);
 	if (err)
 		goto err_q_cnt;
 
+	err = ib_register_device(&dev->ib_dev, NULL);
+	if (err)
+		goto err_bfreg;
+
 	err = create_umr_res(dev);
 	if (err)
 		goto err_dev;
@@ -3459,6 +3493,9 @@ err_umrc:
 err_dev:
 	ib_unregister_device(&dev->ib_dev);
 
+err_bfreg:
+	mlx5_ib_stage_bfreg_cleanup(dev);
+
 err_q_cnt:
 	mlx5_ib_dealloc_q_counters(dev);
 
@@ -3491,6 +3528,7 @@ static void mlx5_ib_remove(struct mlx5_core_dev *mdev, void *context)
 	mlx5_ib_cleanup_congestion(dev);
 	mlx5_remove_roce_notifier(dev);
 	ib_unregister_device(&dev->ib_dev);
+	mlx5_ib_stage_bfreg_cleanup(dev);
 	mlx5_ib_dealloc_q_counters(dev);
 	destroy_umrc_res(dev);
 	mlx5_ib_odp_remove_one(dev);


More information about the dev-commits-src-all mailing list