diff options
author | Michael Brown | 2017-03-22 09:47:46 +0100 |
---|---|---|
committer | Michael Brown | 2017-03-22 10:18:02 +0100 |
commit | 39ef530088859ccbbcf29bf6af2cf9f0307dc476 (patch) | |
tree | 1f90063aa65d6fa2065bdb7f430aebf70623856e /src/include | |
parent | [build] Avoid confusing sparse in single-argument DBG() macros (diff) | |
download | ipxe-39ef530088859ccbbcf29bf6af2cf9f0307dc476.tar.gz ipxe-39ef530088859ccbbcf29bf6af2cf9f0307dc476.tar.xz ipxe-39ef530088859ccbbcf29bf6af2cf9f0307dc476.zip |
[infiniband] Return status code from ib_create_cq() and ib_create_qp()
Any underlying errors arising during ib_create_cq() or ib_create_qp()
are lost since the functions simply return NULL on error. This makes
debugging harder, since a debug-enabled build is required to discover
the root cause of the error.
Fix by returning a status code from these functions, thereby allowing
any underlying errors to be propagated.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/ipxe/infiniband.h | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/include/ipxe/infiniband.h b/src/include/ipxe/infiniband.h index d7ecd162..6f4951f1 100644 --- a/src/include/ipxe/infiniband.h +++ b/src/include/ipxe/infiniband.h @@ -493,18 +493,20 @@ struct ib_driver { /** Declare an Infiniband driver */ #define __ib_driver __table_entry ( IB_DRIVERS, 01 ) -extern struct ib_completion_queue * -ib_create_cq ( struct ib_device *ibdev, unsigned int num_cqes, - struct ib_completion_queue_operations *op ); +extern int ib_create_cq ( struct ib_device *ibdev, unsigned int num_cqes, + struct ib_completion_queue_operations *op, + struct ib_completion_queue **new_cq ); extern void ib_destroy_cq ( struct ib_device *ibdev, struct ib_completion_queue *cq ); extern void ib_poll_cq ( struct ib_device *ibdev, struct ib_completion_queue *cq ); -extern struct ib_queue_pair * -ib_create_qp ( struct ib_device *ibdev, enum ib_queue_pair_type type, - unsigned int num_send_wqes, struct ib_completion_queue *send_cq, - unsigned int num_recv_wqes, struct ib_completion_queue *recv_cq, - struct ib_queue_pair_operations *op, const char *name ); +extern int ib_create_qp ( struct ib_device *ibdev, enum ib_queue_pair_type type, + unsigned int num_send_wqes, + struct ib_completion_queue *send_cq, + unsigned int num_recv_wqes, + struct ib_completion_queue *recv_cq, + struct ib_queue_pair_operations *op, + const char *name, struct ib_queue_pair **new_qp ); extern int ib_modify_qp ( struct ib_device *ibdev, struct ib_queue_pair *qp ); extern void ib_destroy_qp ( struct ib_device *ibdev, struct ib_queue_pair *qp ); |