|
@@ -140,6 +140,12 @@ static void rds_ib_add_one(struct ib_device *device)
|
|
|
rds_ibdev->max_wrs = device->attrs.max_qp_wr;
|
|
|
rds_ibdev->max_sge = min(device->attrs.max_sge, RDS_IB_MAX_SGE);
|
|
|
|
|
|
+ rds_ibdev->has_fr = (device->attrs.device_cap_flags &
|
|
|
+ IB_DEVICE_MEM_MGT_EXTENSIONS);
|
|
|
+ rds_ibdev->has_fmr = (device->alloc_fmr && device->dealloc_fmr &&
|
|
|
+ device->map_phys_fmr && device->unmap_fmr);
|
|
|
+ rds_ibdev->use_fastreg = (rds_ibdev->has_fr && !rds_ibdev->has_fmr);
|
|
|
+
|
|
|
rds_ibdev->fmr_max_remaps = device->attrs.max_map_per_fmr?: 32;
|
|
|
rds_ibdev->max_1m_mrs = device->attrs.max_mr ?
|
|
|
min_t(unsigned int, (device->attrs.max_mr / 2),
|
|
@@ -178,6 +184,10 @@ static void rds_ib_add_one(struct ib_device *device)
|
|
|
rds_ibdev->fmr_max_remaps, rds_ibdev->max_1m_mrs,
|
|
|
rds_ibdev->max_8k_mrs);
|
|
|
|
|
|
+ pr_info("RDS/IB: %s: %s supported and preferred\n",
|
|
|
+ device->name,
|
|
|
+ rds_ibdev->use_fastreg ? "FRMR" : "FMR");
|
|
|
+
|
|
|
INIT_LIST_HEAD(&rds_ibdev->ipaddr_list);
|
|
|
INIT_LIST_HEAD(&rds_ibdev->conn_list);
|
|
|
|