From c26c1fd07c51bb9c5e2c7829f77be4d6d0fcc806 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Wed, 22 Mar 2017 10:57:06 +0200 Subject: [infiniband] Return status code from ib_create_mi() Signed-off-by: Michael Brown --- src/net/infiniband/ib_mi.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'src/net/infiniband') diff --git a/src/net/infiniband/ib_mi.c b/src/net/infiniband/ib_mi.c index 149c1e4dd..781a3e2ea 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; } /** -- cgit v1.2.3-55-g7522