提交 e81a8068 编写于 作者: S Sukadev Bhattiprolu 提交者: Zheng Zengkai

ibmvnic: add some debugs

stable inclusion
from stable-5.10.26
commit f8ba6913c40af93930d854da75a739f95c8b1fda
bugzilla: 51363

--------------------------------

[ Upstream commit 38bd5cec ]

We sometimes run into situations where a soft/hard reset of the adapter
takes a long time or fails to complete. Having additional messages that
include important adapter state info will hopefully help understand what
is happening, reduce the guess work and minimize requests to reproduce
problems with debug patches.
Signed-off-by: NSukadev Bhattiprolu <sukadev@linux.ibm.com>
Link: https://lore.kernel.org/r/20201205022235.2414110-1-sukadev@linux.ibm.comSigned-off-by: NJakub Kicinski <kuba@kernel.org>
Signed-off-by: NSasha Levin <sashal@kernel.org>
Signed-off-by: NChen Jun <chenjun102@huawei.com>
Acked-by: N  Weilong Chen <chenweilong@huawei.com>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 1e772200
...@@ -409,6 +409,8 @@ static void replenish_pools(struct ibmvnic_adapter *adapter) ...@@ -409,6 +409,8 @@ static void replenish_pools(struct ibmvnic_adapter *adapter)
if (adapter->rx_pool[i].active) if (adapter->rx_pool[i].active)
replenish_rx_pool(adapter, &adapter->rx_pool[i]); replenish_rx_pool(adapter, &adapter->rx_pool[i]);
} }
netdev_dbg(adapter->netdev, "Replenished %d pools\n", i);
} }
static void release_stats_buffers(struct ibmvnic_adapter *adapter) static void release_stats_buffers(struct ibmvnic_adapter *adapter)
...@@ -914,6 +916,7 @@ static int ibmvnic_login(struct net_device *netdev) ...@@ -914,6 +916,7 @@ static int ibmvnic_login(struct net_device *netdev)
__ibmvnic_set_mac(netdev, adapter->mac_addr); __ibmvnic_set_mac(netdev, adapter->mac_addr);
netdev_dbg(netdev, "[S:%d] Login succeeded\n", adapter->state);
return 0; return 0;
} }
...@@ -1343,6 +1346,10 @@ static int ibmvnic_close(struct net_device *netdev) ...@@ -1343,6 +1346,10 @@ static int ibmvnic_close(struct net_device *netdev)
struct ibmvnic_adapter *adapter = netdev_priv(netdev); struct ibmvnic_adapter *adapter = netdev_priv(netdev);
int rc; int rc;
netdev_dbg(netdev, "[S:%d FOP:%d FRR:%d] Closing\n",
adapter->state, adapter->failover_pending,
adapter->force_reset_recovery);
/* If device failover is pending, just set device state and return. /* If device failover is pending, just set device state and return.
* Device operation will be handled by reset routine. * Device operation will be handled by reset routine.
*/ */
...@@ -1937,8 +1944,10 @@ static int do_reset(struct ibmvnic_adapter *adapter, ...@@ -1937,8 +1944,10 @@ static int do_reset(struct ibmvnic_adapter *adapter,
struct net_device *netdev = adapter->netdev; struct net_device *netdev = adapter->netdev;
int i, rc; int i, rc;
netdev_dbg(adapter->netdev, "Re-setting driver (%d)\n", netdev_dbg(adapter->netdev,
rwi->reset_reason); "[S:%d FOP:%d] Reset reason %d, reset_state %d\n",
adapter->state, adapter->failover_pending,
rwi->reset_reason, reset_state);
rtnl_lock(); rtnl_lock();
/* /*
...@@ -2097,6 +2106,8 @@ static int do_reset(struct ibmvnic_adapter *adapter, ...@@ -2097,6 +2106,8 @@ static int do_reset(struct ibmvnic_adapter *adapter,
adapter->state = reset_state; adapter->state = reset_state;
rtnl_unlock(); rtnl_unlock();
netdev_dbg(adapter->netdev, "[S:%d FOP:%d] Reset done, rc %d\n",
adapter->state, adapter->failover_pending, rc);
return rc; return rc;
} }
...@@ -2166,6 +2177,8 @@ static int do_hard_reset(struct ibmvnic_adapter *adapter, ...@@ -2166,6 +2177,8 @@ static int do_hard_reset(struct ibmvnic_adapter *adapter,
/* restore adapter state if reset failed */ /* restore adapter state if reset failed */
if (rc) if (rc)
adapter->state = reset_state; adapter->state = reset_state;
netdev_dbg(adapter->netdev, "[S:%d FOP:%d] Hard reset done, rc %d\n",
adapter->state, adapter->failover_pending, rc);
return rc; return rc;
} }
...@@ -2275,6 +2288,11 @@ static void __ibmvnic_reset(struct work_struct *work) ...@@ -2275,6 +2288,11 @@ static void __ibmvnic_reset(struct work_struct *work)
} }
clear_bit_unlock(0, &adapter->resetting); clear_bit_unlock(0, &adapter->resetting);
netdev_dbg(adapter->netdev,
"[S:%d FRR:%d WFR:%d] Done processing resets\n",
adapter->state, adapter->force_reset_recovery,
adapter->wait_for_reset);
} }
static void __ibmvnic_delayed_reset(struct work_struct *work) static void __ibmvnic_delayed_reset(struct work_struct *work)
...@@ -2320,7 +2338,8 @@ static int ibmvnic_reset(struct ibmvnic_adapter *adapter, ...@@ -2320,7 +2338,8 @@ static int ibmvnic_reset(struct ibmvnic_adapter *adapter,
list_for_each(entry, &adapter->rwi_list) { list_for_each(entry, &adapter->rwi_list) {
tmp = list_entry(entry, struct ibmvnic_rwi, list); tmp = list_entry(entry, struct ibmvnic_rwi, list);
if (tmp->reset_reason == reason) { if (tmp->reset_reason == reason) {
netdev_dbg(netdev, "Skipping matching reset\n"); netdev_dbg(netdev, "Skipping matching reset, reason=%d\n",
reason);
spin_unlock_irqrestore(&adapter->rwi_lock, flags); spin_unlock_irqrestore(&adapter->rwi_lock, flags);
ret = EBUSY; ret = EBUSY;
goto err; goto err;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册