369 uverbs_cache_init() |
369 uverbs_cache_init() |
370 { |
370 { |
371 uverbs_cache_info_t info; |
371 uverbs_cache_info_t info; |
372 int dev_num, fd, i, bufsize, hca_cnt; |
372 int dev_num, fd, i, bufsize, hca_cnt; |
373 char uverbs_devpath[MAXPATHLEN]; |
373 char uverbs_devpath[MAXPATHLEN]; |
374 #ifndef IB_USER_VERBS_V2_IN_V1 |
|
375 sol_uverbs_info_t *uverbs_infop; |
374 sol_uverbs_info_t *uverbs_infop; |
376 sol_uverbs_hca_info_t *hca_infop; |
375 sol_uverbs_hca_info_t *hca_infop; |
377 #else |
|
378 sol_uverbs_info_v2_t *uverbs_infop; |
|
379 sol_uverbs_hca_info_v2_t *hca_infop; |
|
380 #endif |
|
381 char *buf; |
376 char *buf; |
382 |
377 |
383 snprintf(uverbs_devpath, MAXPATHLEN, "%s/%s%d", |
378 snprintf(uverbs_devpath, MAXPATHLEN, "%s/%s%d", |
384 IB_OFS_DEVPATH_PREFIX, UVERBS_KERNEL_SYSFS_NAME_BASE, |
379 IB_OFS_DEVPATH_PREFIX, UVERBS_KERNEL_SYSFS_NAME_BASE, |
385 sol_uverbs_minor_dev); |
380 sol_uverbs_minor_dev); |
392 fprintf(stderr, "sol_uverbs failed to open: %s\n", |
387 fprintf(stderr, "sol_uverbs failed to open: %s\n", |
393 strerror(errno)); |
388 strerror(errno)); |
394 goto error_exit1; |
389 goto error_exit1; |
395 } |
390 } |
396 |
391 |
397 #ifndef IB_USER_VERBS_V2_IN_V1 |
|
398 bufsize = sizeof (sol_uverbs_info_t) + sizeof (sol_uverbs_hca_info_t) * |
392 bufsize = sizeof (sol_uverbs_info_t) + sizeof (sol_uverbs_hca_info_t) * |
399 MAX_HCAS; |
393 MAX_HCAS; |
400 #else |
|
401 bufsize = sizeof (sol_uverbs_info_v2_t) + |
|
402 sizeof (sol_uverbs_hca_info_v2_t) * MAX_HCAS; |
|
403 #endif |
|
404 buf = malloc(bufsize); |
394 buf = malloc(bufsize); |
405 memset(buf, 0, bufsize); |
395 memset(buf, 0, bufsize); |
406 #ifndef IB_USER_VERBS_V2_IN_V1 |
|
407 uverbs_infop = (sol_uverbs_info_t *)buf; |
396 uverbs_infop = (sol_uverbs_info_t *)buf; |
408 #else |
|
409 uverbs_infop = (sol_uverbs_info_v2_t *)buf; |
|
410 #endif |
|
411 uverbs_infop->uverbs_hca_cnt = MAX_HCAS; |
397 uverbs_infop->uverbs_hca_cnt = MAX_HCAS; |
412 |
398 |
413 if (ioctl(fd, UVERBS_IOCTL_GET_HCA_INFO, uverbs_infop) != 0) { |
399 if (ioctl(fd, UVERBS_IOCTL_GET_HCA_INFO, uverbs_infop) != 0) { |
414 fprintf(stderr, "sol_uverbs ioctl failed: %s\n", |
400 fprintf(stderr, "sol_uverbs ioctl failed: %s\n", |
415 strerror(errno)); |
401 strerror(errno)); |