]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[hermon] Map all event types to our event queue
authorMichael Brown <mcb30@ipxe.org>
Thu, 16 Sep 2010 21:06:20 +0000 (22:06 +0100)
committerMichael Brown <mcb30@ipxe.org>
Thu, 16 Sep 2010 21:06:20 +0000 (22:06 +0100)
Only port state change events are currently mapped to our event queue,
since those are the only events we are prepared to handle.  This
ignores a potentially useful source of diagnostic information in the
case of unexpected failures.

Fix by mapping all events to the event queue; a build with debugging
enabled will therefore at least dump the raw content of the unexpected
events.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/drivers/infiniband/hermon.c
src/drivers/infiniband/hermon.h

index 06255c3a8954be3389a9071af3a89a6280b804cd..cebfb178e94e4ae7f1935a8e89fbe5ee5eb41075 100644 (file)
@@ -1727,9 +1727,8 @@ static int hermon_create_eq ( struct hermon *hermon ) {
                goto err_sw2hw_eq;
        }
 
-       /* Map events to this event queue */
-       memset ( &mask, 0, sizeof ( mask ) );
-       MLX_FILL_1 ( &mask, 1, port_state_change, 1 );
+       /* Map all events to this event queue */
+       memset ( &mask, 0xff, sizeof ( mask ) );
        if ( ( rc = hermon_cmd_map_eq ( hermon,
                                        ( HERMON_MAP_EQ | hermon_eq->eqn ),
                                        &mask ) ) != 0 ) {
index e29e50b91ecef33fd0a7ccfe1562b19c348933d4..e09c56a509c3c76dd51e249496141186987bd9f3 100644 (file)
@@ -161,9 +161,26 @@ struct hermonprm_event_mask_st {
        pseudo_bit_t reserved0[0x00020];
 /* -------------- */
        pseudo_bit_t completion[0x00001];
-       pseudo_bit_t reserved1[0x0008];
+       pseudo_bit_t path_migration_succeeded[0x00001];
+       pseudo_bit_t communication_established[0x00001];
+       pseudo_bit_t send_queue_drained[0x00001];
+       pseudo_bit_t cq_error[0x00001];
+       pseudo_bit_t wq_catastrophe[0x00001];
+       pseudo_bit_t qpc_catastrophe[0x00001];
+       pseudo_bit_t path_migration_failed[0x00001];
+       pseudo_bit_t internal_error[0x00001];
        pseudo_bit_t port_state_change[0x00001];
-       pseudo_bit_t reserved2[0x00016];
+       pseudo_bit_t command_done[0x00001];
+       pseudo_bit_t fexch_error[0x00001];
+       pseudo_bit_t reserved1[0x00004];
+       pseudo_bit_t wq_invalid_request[0x00001];
+       pseudo_bit_t wq_access_violation[0x00001];
+       pseudo_bit_t srq_catastrophe[0x00001];
+       pseudo_bit_t srq_last_wqe[0x00001];
+       pseudo_bit_t srq_rq_limit[0x00001];
+       pseudo_bit_t gpio[0x00001];
+       pseudo_bit_t clientreregister[0x00001];
+       pseudo_bit_t reserved2[0x00009];
 } __attribute__ (( packed ));
 
 struct hermonprm_port_state_change_event_st {