diff options
| author | Michael Brown | 2010-09-17 23:43:45 +0200 |
|---|---|---|
| committer | Michael Brown | 2011-10-24 16:29:38 +0200 |
| commit | 7a84cc593a901374a2a611270ad8e9bf83220e81 (patch) | |
| tree | 7022a0ff48065c3bf35e09f4df3b16010375480e /src/drivers/infiniband/arbel.h | |
| parent | [ath9k] Add ath9k driver (diff) | |
| download | ipxe-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.h | 10 |
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 )); |
