From 3e8e2773de7acd47084c04205385e294c7825020 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Thu, 16 Sep 2010 03:28:41 +0100 Subject: [PATCH] [arbel] Poll for link state changes while DOWN 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 --- src/drivers/infiniband/arbel.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/drivers/infiniband/arbel.c b/src/drivers/infiniband/arbel.c index 76855327..78b2b432 100644 --- a/src/drivers/infiniband/arbel.c +++ b/src/drivers/infiniband/arbel.c @@ -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 );