Multicast join now works.
[people/xl0/gpxe.git] / src / drivers / net / mlx_ipoib / arbel.h
index cd6a48e..c4b536a 100644 (file)
@@ -33,6 +33,9 @@
 #define ARBEL_HCR_INIT2RTR_QPEE                0x001a
 #define ARBEL_HCR_RTR2RTS_QPEE         0x001b
 #define ARBEL_HCR_2RST_QPEE            0x0021
+#define ARBEL_HCR_READ_MGM             0x0025
+#define ARBEL_HCR_WRITE_MGM            0x0026
+#define ARBEL_HCR_MGID_HASH            0x0027
 
 /* Service types */
 #define ARBEL_ST_UD                    0x03
 
 #define ARBEL_INVALID_LKEY             0x00000100UL
 
+/*
+ * Datatypes that seem to be missing from the autogenerated documentation
+ *
+ */
+struct arbelprm_mgm_hash_st {
+       pseudo_bit_t reserved0[0x00020];
+/* -------------- */
+       pseudo_bit_t hash[0x00010];
+       pseudo_bit_t reserved1[0x00010];
+};
+
 /*
  * Wrapper structures for hardware datatypes
  *
@@ -53,6 +67,8 @@ struct MLX_DECLARE_STRUCT ( arbelprm_completion_with_error );
 struct MLX_DECLARE_STRUCT ( arbelprm_cq_arm_db_record );
 struct MLX_DECLARE_STRUCT ( arbelprm_cq_ci_db_record );
 struct MLX_DECLARE_STRUCT ( arbelprm_hca_command_register );
+struct MLX_DECLARE_STRUCT ( arbelprm_mgm_entry );
+struct MLX_DECLARE_STRUCT ( arbelprm_mgm_hash );
 struct MLX_DECLARE_STRUCT ( arbelprm_qp_db_record );
 struct MLX_DECLARE_STRUCT ( arbelprm_qp_ee_state_transitions );
 struct MLX_DECLARE_STRUCT ( arbelprm_query_dev_lim );
@@ -266,7 +282,8 @@ struct arbel {
 #define ARBEL_HCR_OUT_LEN( _command )  ( ( (_command) >> 21 ) & 0x7fc )
 
 /** Build HCR command from component parts */
-#define ARBEL_HCR_CMD( _opcode, _in_mbox, _in_len, _out_mbox, _out_len )     \
+#define ARBEL_HCR_INOUT_CMD( _opcode, _in_mbox, _in_len,                    \
+                            _out_mbox, _out_len )                           \
        ( (_opcode) |                                                        \
          ( (_in_mbox) ? ARBEL_HCR_IN_MBOX : 0 ) |                           \
          ( ( (_in_len) / 4 ) << 14 ) |                                      \
@@ -274,13 +291,13 @@ struct arbel {
          ( ( (_out_len) / 4 ) << 23 ) )
 
 #define ARBEL_HCR_IN_CMD( _opcode, _in_mbox, _in_len )                      \
-       ARBEL_HCR_CMD ( _opcode, _in_mbox, _in_len, 0, 0 )
+       ARBEL_HCR_INOUT_CMD ( _opcode, _in_mbox, _in_len, 0, 0 )
 
 #define ARBEL_HCR_OUT_CMD( _opcode, _out_mbox, _out_len )                   \
-       ARBEL_HCR_CMD ( _opcode, 0, 0, _out_mbox, _out_len )
+       ARBEL_HCR_INOUT_CMD ( _opcode, 0, 0, _out_mbox, _out_len )
 
 #define ARBEL_HCR_VOID_CMD( _opcode )                                       \
-       ARBEL_HCR_CMD ( _opcode, 0, 0, 0, 0 )
+       ARBEL_HCR_INOUT_CMD ( _opcode, 0, 0, 0, 0 )
 
 /*
  * Doorbell record allocation