ice: alloc id for RDMA using xa_array
authorMichal Swiatkowski <michal.swiatkowski@linux.intel.com>
Wed, 21 Dec 2022 11:38:14 +0000 (12:38 +0100)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Fri, 3 Feb 2023 17:54:18 +0000 (09:54 -0800)
Use xa_array instead of deprecated ida to alloc id for RDMA aux driver.

Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/ice/ice_idc.c

index 579d2a433ea12959ec7f5c93d9b4fb71969e899e..e6bc2285071e2762c1851d8cadd9a18589895a28 100644 (file)
@@ -6,7 +6,7 @@
 #include "ice_lib.h"
 #include "ice_dcb_lib.h"
 
-static DEFINE_IDA(ice_aux_ida);
+static DEFINE_XARRAY_ALLOC1(ice_aux_id);
 
 /**
  * ice_get_auxiliary_drv - retrieve iidc_auxiliary_drv struct
@@ -349,8 +349,9 @@ int ice_init_rdma(struct ice_pf *pf)
                return 0;
        }
 
-       pf->aux_idx = ida_alloc(&ice_aux_ida, GFP_KERNEL);
-       if (pf->aux_idx < 0) {
+       ret = xa_alloc(&ice_aux_id, &pf->aux_idx, NULL, XA_LIMIT(1, INT_MAX),
+                      GFP_KERNEL);
+       if (ret) {
                dev_err(dev, "Failed to allocate device ID for AUX driver\n");
                return -ENOMEM;
        }
@@ -371,7 +372,7 @@ err_plug_aux_dev:
        ice_free_rdma_qvector(pf);
 err_reserve_rdma_qvector:
        pf->adev = NULL;
-       ida_free(&ice_aux_ida, pf->aux_idx);
+       xa_erase(&ice_aux_id, pf->aux_idx);
        return ret;
 }
 
@@ -386,5 +387,5 @@ void ice_deinit_rdma(struct ice_pf *pf)
 
        ice_unplug_aux_dev(pf);
        ice_free_rdma_qvector(pf);
-       ida_free(&ice_aux_ida, pf->aux_idx);
+       xa_erase(&ice_aux_id, pf->aux_idx);
 }