summaryrefslogtreecommitdiffstats
path: root/src/drivers/infiniband/arbel.h
diff options
context:
space:
mode:
authorMichael Brown2010-09-17 23:43:45 +0200
committerMichael Brown2011-10-24 16:29:38 +0200
commit7a84cc593a901374a2a611270ad8e9bf83220e81 (patch)
tree7022a0ff48065c3bf35e09f4df3b16010375480e /src/drivers/infiniband/arbel.h
parent[ath9k] Add ath9k driver (diff)
downloadipxe-7a84cc593a901374a2a611270ad8e9bf83220e81.tar.gz
ipxe-7a84cc593a901374a2a611270ad8e9bf83220e81.tar.xz
ipxe-7a84cc593a901374a2a611270ad8e9bf83220e81.zip
[arbel] Add (not-yet-functional) support for RC queue pairs
Arbel seems to crash the system as soon as the first send WQE completes on an RC queue pair. (NOPs complete successfully, so this is a problem specific to the work queue rather than the completion queue.) The cause of this problem has remained unknown for over a year. Check in the non-functioning code to avoid bit-rot, and in the hope that someone will find the fix. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/drivers/infiniband/arbel.h')
-rw-r--r--src/drivers/infiniband/arbel.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/drivers/infiniband/arbel.h b/src/drivers/infiniband/arbel.h
index 534115729..40a749a0a 100644
--- a/src/drivers/infiniband/arbel.h
+++ b/src/drivers/infiniband/arbel.h
@@ -81,6 +81,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
#define ARBEL_HCR_MAP_FA 0x0fff
/* Service types */
+#define ARBEL_ST_RC 0x00
#define ARBEL_ST_UD 0x03
#define ARBEL_ST_MLX 0x07
@@ -111,6 +112,8 @@ FILE_LICENCE ( GPL2_OR_LATER );
#define ARBEL_PM_STATE_REARM 0x01
#define ARBEL_PM_STATE_MIGRATED 0x03
+#define ARBEL_RETRY_MAX 0x07
+
/*
* Datatypes that seem to be missing from the autogenerated documentation
*
@@ -223,6 +226,12 @@ struct arbelprm_mlx_send_wqe {
uint8_t headers[IB_MAX_HEADER_SIZE];
} __attribute__ (( packed ));
+struct arbelprm_rc_send_wqe {
+ struct arbelprm_wqe_segment_next next;
+ struct arbelprm_wqe_segment_ctrl_send ctrl;
+ struct arbelprm_wqe_segment_data_ptr data[ARBEL_MAX_GATHER];
+} __attribute__ (( packed ));
+
#define ARBEL_MAX_SCATTER 1
struct arbelprm_recv_wqe {
@@ -324,6 +333,7 @@ union arbel_send_wqe {
struct arbelprm_wqe_segment_next next;
struct arbelprm_ud_send_wqe ud;
struct arbelprm_mlx_send_wqe mlx;
+ struct arbelprm_rc_send_wqe rc;
uint8_t force_align[ARBEL_SEND_WQE_ALIGN];
} __attribute__ (( packed ));