aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Allen <jallen@linux.vnet.ibm.com>2017-10-26 17:24:15 -0400
committerDavid S. Miller <davem@davemloft.net>2017-10-27 11:23:58 -0400
commit2a1bf51111975846f412f47449edefdf6fa17ee4 (patch)
tree50ef921d7833a996a9690f7f30ad7521e9a551e7
parentc26eba03e4073bd32ef6c0ea2ba2a3ff5eed11da (diff)
ibmvnic: Fix failover error path for non-fatal resets
For all non-fatal reset conditions, the hypervisor will send a failover when we attempt to initialize the crq and the vnic client is expected to handle that failover instead of the existing non-fatal reset. To handle this, we need to return from init with a return code that indicates that we have hit this case. Signed-off-by: John Allen <jallen@linux.vnet.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/ibm/ibmvnic.c4
-rw-r--r--drivers/net/ethernet/ibm/ibmvnic.h2
2 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c
index 3d0280196fdc..d0cff2807d0b 100644
--- a/drivers/net/ethernet/ibm/ibmvnic.c
+++ b/drivers/net/ethernet/ibm/ibmvnic.c
@@ -1507,7 +1507,7 @@ static int do_reset(struct ibmvnic_adapter *adapter,
1507 1507
1508 rc = ibmvnic_init(adapter); 1508 rc = ibmvnic_init(adapter);
1509 if (rc) 1509 if (rc)
1510 return 0; 1510 return IBMVNIC_INIT_FAILED;
1511 1511
1512 /* If the adapter was in PROBE state prior to the reset, 1512 /* If the adapter was in PROBE state prior to the reset,
1513 * exit here. 1513 * exit here.
@@ -1610,7 +1610,7 @@ static void __ibmvnic_reset(struct work_struct *work)
1610 while (rwi) { 1610 while (rwi) {
1611 rc = do_reset(adapter, rwi, reset_state); 1611 rc = do_reset(adapter, rwi, reset_state);
1612 kfree(rwi); 1612 kfree(rwi);
1613 if (rc) 1613 if (rc && rc != IBMVNIC_INIT_FAILED)
1614 break; 1614 break;
1615 1615
1616 rwi = get_next_rwi(adapter); 1616 rwi = get_next_rwi(adapter);
diff --git a/drivers/net/ethernet/ibm/ibmvnic.h b/drivers/net/ethernet/ibm/ibmvnic.h
index 27107f33755b..4670af80d612 100644
--- a/drivers/net/ethernet/ibm/ibmvnic.h
+++ b/drivers/net/ethernet/ibm/ibmvnic.h
@@ -30,6 +30,8 @@
30#define IBMVNIC_DRIVER_VERSION "1.0.1" 30#define IBMVNIC_DRIVER_VERSION "1.0.1"
31#define IBMVNIC_INVALID_MAP -1 31#define IBMVNIC_INVALID_MAP -1
32#define IBMVNIC_STATS_TIMEOUT 1 32#define IBMVNIC_STATS_TIMEOUT 1
33#define IBMVNIC_INIT_FAILED 2
34
33/* basic structures plus 100 2k buffers */ 35/* basic structures plus 100 2k buffers */
34#define IBMVNIC_IO_ENTITLEMENT_DEFAULT 610305 36#define IBMVNIC_IO_ENTITLEMENT_DEFAULT 610305
35 37