summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
authorMichael Brown2017-03-22 09:47:46 +0100
committerMichael Brown2017-03-22 10:18:02 +0100
commit39ef530088859ccbbcf29bf6af2cf9f0307dc476 (patch)
tree1f90063aa65d6fa2065bdb7f430aebf70623856e /src/include
parent[build] Avoid confusing sparse in single-argument DBG() macros (diff)
downloadipxe-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.h18
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 );