Michal Suchanek 7ca133
From 7d3a7b9ea59ddb223aec59b45fa1713c633aaed4 Mon Sep 17 00:00:00 2001
Michal Suchanek 7ca133
From: Lijun Pan <ljp@linux.ibm.com>
Michal Suchanek 7ca133
Date: Fri, 12 Feb 2021 20:49:00 -0600
Michal Suchanek 7ca133
Subject: [PATCH] ibmvnic: skip send_request_unmap for timeout reset
Michal Suchanek 7ca133
Michal Suchanek 7ca133
References: bsc#1184114 ltc#192237 bsc#1182485 ltc#191591
Michal Suchanek 7ca133
Patch-mainline: v5.12-rc1
Michal Suchanek 7ca133
Git-commit: 7d3a7b9ea59ddb223aec59b45fa1713c633aaed4
Michal Suchanek 7ca133
Michal Suchanek 7ca133
Timeout reset will trigger the VIOS to unmap it automatically,
Michal Suchanek 7ca133
similarly as FAILVOER and MOBILITY events. If we unmap it
Michal Suchanek 7ca133
in the linux side, we will see errors like
Michal Suchanek 7ca133
"30000003: Error 4 in REQUEST_UNMAP_RSP".
Michal Suchanek 7ca133
So, don't call send_request_unmap for timeout reset.
Michal Suchanek 7ca133
Michal Suchanek 7ca133
Fixes: ed651a10875f ("ibmvnic: Updated reset handling")
Michal Suchanek 7ca133
Signed-off-by: Lijun Pan <ljp@linux.ibm.com>
Michal Suchanek 7ca133
Signed-off-by: David S. Miller <davem@davemloft.net>
Michal Suchanek 7ca133
Acked-by: Michal Suchanek <msuchanek@suse.de>
Michal Suchanek 7ca133
---
Michal Suchanek 7ca133
 drivers/net/ethernet/ibm/ibmvnic.c | 7 ++++++-
Michal Suchanek 7ca133
 1 file changed, 6 insertions(+), 1 deletion(-)
Michal Suchanek 7ca133
Michal Suchanek 7ca133
diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c
Michal Suchanek 7ca133
index f6402a20ba32..cd201f89ce6c 100644
Michal Suchanek 7ca133
--- a/drivers/net/ethernet/ibm/ibmvnic.c
Michal Suchanek 7ca133
+++ b/drivers/net/ethernet/ibm/ibmvnic.c
Michal Suchanek 7ca133
@@ -247,8 +247,13 @@ static void free_long_term_buff(struct ibmvnic_adapter *adapter,
Michal Suchanek 7ca133
 	if (!ltb->buff)
Michal Suchanek 7ca133
 		return;
Michal Suchanek 7ca133
 
Michal Suchanek 7ca133
+	/* VIOS automatically unmaps the long term buffer at remote
Michal Suchanek 7ca133
+	 * end for the following resets:
Michal Suchanek 7ca133
+	 * FAILOVER, MOBILITY, TIMEOUT.
Michal Suchanek 7ca133
+	 */
Michal Suchanek 7ca133
 	if (adapter->reset_reason != VNIC_RESET_FAILOVER &&
Michal Suchanek 7ca133
-	    adapter->reset_reason != VNIC_RESET_MOBILITY)
Michal Suchanek 7ca133
+	    adapter->reset_reason != VNIC_RESET_MOBILITY &&
Michal Suchanek 7ca133
+	    adapter->reset_reason != VNIC_RESET_TIMEOUT)
Michal Suchanek 7ca133
 		send_request_unmap(adapter, ltb->map_id);
Michal Suchanek 7ca133
 	dma_free_coherent(dev, ltb->size, ltb->buff, ltb->addr);
Michal Suchanek 7ca133
 }
Michal Suchanek 7ca133
-- 
Michal Suchanek 7ca133
2.26.2
Michal Suchanek 7ca133