diff options
author | Michael Brown | 2017-03-22 09:57:06 +0100 |
---|---|---|
committer | Michael Brown | 2017-03-22 10:18:23 +0100 |
commit | c26c1fd07c51bb9c5e2c7829f77be4d6d0fcc806 (patch) | |
tree | e287e5f551ef41db4ab83b9eadd23fe8f967a76d /src/net/infiniband | |
parent | [infiniband] Return status code from ib_create_cq() and ib_create_qp() (diff) | |
download | ipxe-c26c1fd07c51bb9c5e2c7829f77be4d6d0fcc806.tar.gz ipxe-c26c1fd07c51bb9c5e2c7829f77be4d6d0fcc806.tar.xz ipxe-c26c1fd07c51bb9c5e2c7829f77be4d6d0fcc806.zip |
[infiniband] Return status code from ib_create_mi()
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/net/infiniband')
-rw-r--r-- | src/net/infiniband/ib_mi.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/net/infiniband/ib_mi.c b/src/net/infiniband/ib_mi.c index 149c1e4d..781a3e2e 100644 --- a/src/net/infiniband/ib_mi.c +++ b/src/net/infiniband/ib_mi.c @@ -341,18 +341,21 @@ void ib_destroy_madx ( struct ib_device *ibdev __unused, * * @v ibdev Infiniband device * @v type Queue pair type - * @ret mi Management agent, or NULL + * @v new_mi New management interface to fill in + * @ret rc Return status code */ -struct ib_mad_interface * ib_create_mi ( struct ib_device *ibdev, - enum ib_queue_pair_type type ) { +int ib_create_mi ( struct ib_device *ibdev, enum ib_queue_pair_type type, + struct ib_mad_interface **new_mi ) { struct ib_mad_interface *mi; const char *name; int rc; /* Allocate and initialise fields */ mi = zalloc ( sizeof ( *mi ) ); - if ( ! mi ) + if ( ! mi ) { + rc = -ENOMEM; goto err_alloc; + } mi->ibdev = ibdev; INIT_LIST_HEAD ( &mi->madx ); @@ -387,7 +390,8 @@ struct ib_mad_interface * ib_create_mi ( struct ib_device *ibdev, /* Fill receive ring */ ib_refill_recv ( ibdev, mi->qp ); - return mi; + *new_mi = mi; + return 0; err_modify_qp: ib_destroy_qp ( ibdev, mi->qp ); @@ -396,7 +400,7 @@ struct ib_mad_interface * ib_create_mi ( struct ib_device *ibdev, err_create_cq: free ( mi ); err_alloc: - return NULL; + return rc; } /** |