]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[arbel] Poll for link state changes while DOWN
authorMichael Brown <mcb30@ipxe.org>
Thu, 16 Sep 2010 02:28:41 +0000 (03:28 +0100)
committerMichael Brown <mcb30@ipxe.org>
Thu, 16 Sep 2010 02:30:45 +0000 (03:30 +0100)
No event is generated upon reaching INIT, so we must poll separately
for link state changes while we remain DOWN.

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

index 7685532707eda3aa4bd5676b62a6986bdcb1094a..78b2b4324bd785144c68d6758f4525d91aa4adf1 100644 (file)
@@ -1451,6 +1451,15 @@ static void arbel_poll_eq ( struct ib_device *ibdev ) {
        unsigned int eqe_idx_mask;
        unsigned int event_type;
 
+       /* No event is generated upon reaching INIT, so we must poll
+        * separately for link state changes while we remain DOWN.
+        */
+       if ( ib_is_open ( ibdev ) &&
+            ( ibdev->port_state == IB_PORT_STATE_DOWN ) ) {
+               ib_smc_update ( ibdev, arbel_mad );
+       }
+
+       /* Poll event queue */
        while ( 1 ) {
                /* Look for event entry */
                eqe_idx_mask = ( ARBEL_NUM_EQES - 1 );