Browse Source

ibmvnic: Return error code if init interrupted by transport event

If device init is interrupted by a failover, set the init return
code so that it can be checked and handled appropriately by the
init routine.

Signed-off-by: Thomas Falcon <tlfalcon@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Thomas Falcon 7 years ago
parent
commit
17c8705838
1 changed files with 4 additions and 1 deletions
  1. 4 1
      drivers/net/ethernet/ibm/ibmvnic.c

+ 4 - 1
drivers/net/ethernet/ibm/ibmvnic.c

@@ -4249,7 +4249,10 @@ static void ibmvnic_handle_crq(union ibmvnic_crq *crq,
 			dev_info(dev, "Partner initialized\n");
 			dev_info(dev, "Partner initialized\n");
 			adapter->from_passive_init = true;
 			adapter->from_passive_init = true;
 			adapter->failover_pending = false;
 			adapter->failover_pending = false;
-			complete(&adapter->init_done);
+			if (!completion_done(&adapter->init_done)) {
+				complete(&adapter->init_done);
+				adapter->init_done_rc = -EIO;
+			}
 			ibmvnic_reset(adapter, VNIC_RESET_FAILOVER);
 			ibmvnic_reset(adapter, VNIC_RESET_FAILOVER);
 			break;
 			break;
 		case IBMVNIC_CRQ_INIT_COMPLETE:
 		case IBMVNIC_CRQ_INIT_COMPLETE: