mirror of https://github.com/ipxe/ipxe.git
[infiniband] Return status code from ib_create_mi()
Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/58/merge
parent
39ef530088
commit
c26c1fd07c
|
@ -127,8 +127,9 @@ ib_create_madx ( struct ib_device *ibdev, struct ib_mad_interface *mi,
|
||||||
extern void ib_destroy_madx ( struct ib_device *ibdev,
|
extern void ib_destroy_madx ( struct ib_device *ibdev,
|
||||||
struct ib_mad_interface *mi,
|
struct ib_mad_interface *mi,
|
||||||
struct ib_mad_transaction *madx );
|
struct ib_mad_transaction *madx );
|
||||||
extern struct ib_mad_interface * ib_create_mi ( struct ib_device *ibdev,
|
extern int ib_create_mi ( struct ib_device *ibdev,
|
||||||
enum ib_queue_pair_type type );
|
enum ib_queue_pair_type type,
|
||||||
|
struct ib_mad_interface **new_mi );
|
||||||
extern void ib_destroy_mi ( struct ib_device *ibdev,
|
extern void ib_destroy_mi ( struct ib_device *ibdev,
|
||||||
struct ib_mad_interface *mi );
|
struct ib_mad_interface *mi );
|
||||||
|
|
||||||
|
|
|
@ -666,10 +666,9 @@ int ib_open ( struct ib_device *ibdev ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create subnet management interface */
|
/* Create subnet management interface */
|
||||||
ibdev->smi = ib_create_mi ( ibdev, IB_QPT_SMI );
|
if ( ( rc = ib_create_mi ( ibdev, IB_QPT_SMI, &ibdev->smi ) ) != 0 ) {
|
||||||
if ( ! ibdev->smi ) {
|
DBGC ( ibdev, "IBDEV %s could not create SMI: %s\n",
|
||||||
DBGC ( ibdev, "IBDEV %s could not create SMI\n", ibdev->name );
|
ibdev->name, strerror ( rc ) );
|
||||||
rc = -ENOMEM;
|
|
||||||
goto err_create_smi;
|
goto err_create_smi;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -681,10 +680,9 @@ int ib_open ( struct ib_device *ibdev ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create general services interface */
|
/* Create general services interface */
|
||||||
ibdev->gsi = ib_create_mi ( ibdev, IB_QPT_GSI );
|
if ( ( rc = ib_create_mi ( ibdev, IB_QPT_GSI, &ibdev->gsi ) ) != 0 ) {
|
||||||
if ( ! ibdev->gsi ) {
|
DBGC ( ibdev, "IBDEV %s could not create GSI: %s\n",
|
||||||
DBGC ( ibdev, "IBDEV %s could not create GSI\n", ibdev->name );
|
ibdev->name, strerror ( rc ) );
|
||||||
rc = -ENOMEM;
|
|
||||||
goto err_create_gsi;
|
goto err_create_gsi;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -341,18 +341,21 @@ void ib_destroy_madx ( struct ib_device *ibdev __unused,
|
||||||
*
|
*
|
||||||
* @v ibdev Infiniband device
|
* @v ibdev Infiniband device
|
||||||
* @v type Queue pair type
|
* @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,
|
int ib_create_mi ( struct ib_device *ibdev, enum ib_queue_pair_type type,
|
||||||
enum ib_queue_pair_type type ) {
|
struct ib_mad_interface **new_mi ) {
|
||||||
struct ib_mad_interface *mi;
|
struct ib_mad_interface *mi;
|
||||||
const char *name;
|
const char *name;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
/* Allocate and initialise fields */
|
/* Allocate and initialise fields */
|
||||||
mi = zalloc ( sizeof ( *mi ) );
|
mi = zalloc ( sizeof ( *mi ) );
|
||||||
if ( ! mi )
|
if ( ! mi ) {
|
||||||
|
rc = -ENOMEM;
|
||||||
goto err_alloc;
|
goto err_alloc;
|
||||||
|
}
|
||||||
mi->ibdev = ibdev;
|
mi->ibdev = ibdev;
|
||||||
INIT_LIST_HEAD ( &mi->madx );
|
INIT_LIST_HEAD ( &mi->madx );
|
||||||
|
|
||||||
|
@ -387,7 +390,8 @@ struct ib_mad_interface * ib_create_mi ( struct ib_device *ibdev,
|
||||||
|
|
||||||
/* Fill receive ring */
|
/* Fill receive ring */
|
||||||
ib_refill_recv ( ibdev, mi->qp );
|
ib_refill_recv ( ibdev, mi->qp );
|
||||||
return mi;
|
*new_mi = mi;
|
||||||
|
return 0;
|
||||||
|
|
||||||
err_modify_qp:
|
err_modify_qp:
|
||||||
ib_destroy_qp ( ibdev, mi->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:
|
err_create_cq:
|
||||||
free ( mi );
|
free ( mi );
|
||||||
err_alloc:
|
err_alloc:
|
||||||
return NULL;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue