summaryrefslogtreecommitdiffstats
path: root/src/drivers
diff options
context:
space:
mode:
authorMichael Brown2007-09-17 20:47:19 +0200
committerMichael Brown2007-09-17 20:47:19 +0200
commitf3fcb53faf14079954e0f65edac931b09819b03c (patch)
treecc96006a4a6d26f8319ab41a1526bb842e0c8384 /src/drivers
parentRemoved more hacks, and adjusted number of queue entries for likely usage. (diff)
downloadipxe-f3fcb53faf14079954e0f65edac931b09819b03c.tar.gz
ipxe-f3fcb53faf14079954e0f65edac931b09819b03c.tar.xz
ipxe-f3fcb53faf14079954e0f65edac931b09819b03c.zip
Don't use the mailboxless version of the HW2SW_CQ command; it seems to
crash the machine.
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/net/mlx_ipoib/mt25218.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/drivers/net/mlx_ipoib/mt25218.c b/src/drivers/net/mlx_ipoib/mt25218.c
index 452ae0b5..699c9a2d 100644
--- a/src/drivers/net/mlx_ipoib/mt25218.c
+++ b/src/drivers/net/mlx_ipoib/mt25218.c
@@ -225,10 +225,12 @@ arbel_cmd_sw2hw_cq ( struct arbel *arbel, unsigned long cqn,
}
static inline int
-arbel_cmd_hw2sw_cq ( struct arbel *arbel, unsigned long cqn ) {
+arbel_cmd_hw2sw_cq ( struct arbel *arbel, unsigned long cqn,
+ struct arbelprm_completion_queue_context *cqctx) {
return arbel_cmd ( arbel,
- ARBEL_HCR_VOID_CMD ( ARBEL_HCR_HW2SW_CQ ),
- 1, NULL, cqn, NULL );
+ ARBEL_HCR_OUT_CMD ( ARBEL_HCR_HW2SW_CQ,
+ 1, sizeof ( *cqctx ) ),
+ 0, NULL, cqn, cqctx );
}
static inline int
@@ -421,13 +423,14 @@ static void arbel_destroy_cq ( struct ib_device *ibdev,
struct ib_completion_queue *cq ) {
struct arbel *arbel = ibdev->dev_priv;
struct arbel_completion_queue *arbel_cq = cq->dev_priv;
+ struct arbelprm_completion_queue_context cqctx;
struct arbelprm_cq_ci_db_record *ci_db_rec;
struct arbelprm_cq_arm_db_record *arm_db_rec;
int cqn_offset;
int rc;
/* Take ownership back from hardware */
- if ( ( rc = arbel_cmd_hw2sw_cq ( arbel, cq->cqn ) ) != 0 ) {
+ if ( ( rc = arbel_cmd_hw2sw_cq ( arbel, cq->cqn, &cqctx ) ) != 0 ) {
DBGC ( arbel, "Arbel %p FATAL HW2SW_CQ failed on CQN %#lx: "
"%s\n", arbel, cq->cqn, strerror ( rc ) );
/* Leak memory and return; at least we avoid corruption */