From 1e7fbc5bf389c1381ecd85dc86916091a27cf4fe Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Tue, 15 Nov 2011 00:00:19 +0000 Subject: [PATCH] [infiniband] Open device prior to creating SMI and GSI queue pairs Signed-off-by: Michael Brown --- src/net/infiniband.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/net/infiniband.c b/src/net/infiniband.c index 85084b02..d0f08885 100644 --- a/src/net/infiniband.c +++ b/src/net/infiniband.c @@ -610,6 +610,13 @@ int ib_open ( struct ib_device *ibdev ) { return 0; } + /* Open device */ + if ( ( rc = ibdev->op->open ( ibdev ) ) != 0 ) { + DBGC ( ibdev, "IBDEV %p could not open: %s\n", + ibdev, strerror ( rc ) ); + goto err_open; + } + /* Create subnet management interface */ ibdev->smi = ib_create_mi ( ibdev, IB_QPT_SMI ); if ( ! ibdev->smi ) { @@ -633,13 +640,6 @@ int ib_open ( struct ib_device *ibdev ) { goto err_create_gsi; } - /* Open device */ - if ( ( rc = ibdev->op->open ( ibdev ) ) != 0 ) { - DBGC ( ibdev, "IBDEV %p could not open: %s\n", - ibdev, strerror ( rc ) ); - goto err_open; - } - /* Add to head of open devices list */ list_add ( &ibdev->open_list, &open_ib_devices ); @@ -649,14 +649,14 @@ int ib_open ( struct ib_device *ibdev ) { assert ( ibdev->open_count == 1 ); return 0; - ibdev->op->close ( ibdev ); - err_open: ib_destroy_mi ( ibdev, ibdev->gsi ); err_create_gsi: ib_destroy_sma ( ibdev, ibdev->smi ); err_create_sma: ib_destroy_mi ( ibdev, ibdev->smi ); err_create_smi: + ibdev->op->close ( ibdev ); + err_open: assert ( ibdev->open_count == 1 ); ibdev->open_count = 0; return rc;