ibmvnic: add some debugs
authorSukadev Bhattiprolu <sukadev@linux.ibm.com>
Sat, 5 Dec 2020 02:22:35 +0000 (18:22 -0800)
committerJakub Kicinski <kuba@kernel.org>
Tue, 8 Dec 2020 01:13:08 +0000 (17:13 -0800)
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: Sukadev Bhattiprolu <sukadev@linux.ibm.com>
Link: https://lore.kernel.org/r/20201205022235.2414110-1-sukadev@linux.ibm.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/ibm/ibmvnic.c

index cf55c5ea07cb1c4d1012865b53316d2cbd43d822..cb701a6c07120a5d9f7bf4e2a55c8c8d25ba2e7c 100644 (file)
@@ -419,6 +419,8 @@ static void replenish_pools(struct ibmvnic_adapter *adapter)
                if (adapter->rx_pool[i].active)
                        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)
@@ -927,6 +929,7 @@ static int ibmvnic_login(struct net_device *netdev)
 
        __ibmvnic_set_mac(netdev, adapter->mac_addr);
 
+       netdev_dbg(netdev, "[S:%d] Login succeeded\n", adapter->state);
        return 0;
 }
 
@@ -1358,6 +1361,10 @@ static int ibmvnic_close(struct net_device *netdev)
        struct ibmvnic_adapter *adapter = netdev_priv(netdev);
        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.
         * Device operation will be handled by reset routine.
         */
@@ -2013,8 +2020,10 @@ static int do_reset(struct ibmvnic_adapter *adapter,
        struct net_device *netdev = adapter->netdev;
        int i, rc;
 
-       netdev_dbg(adapter->netdev, "Re-setting driver (%d)\n",
-                  rwi->reset_reason);
+       netdev_dbg(adapter->netdev,
+                  "[S:%d FOP:%d] Reset reason %d, reset_state %d\n",
+                  adapter->state, adapter->failover_pending,
+                  rwi->reset_reason, reset_state);
 
        rtnl_lock();
        /*
@@ -2173,6 +2182,8 @@ out:
                adapter->state = reset_state;
        rtnl_unlock();
 
+       netdev_dbg(adapter->netdev, "[S:%d FOP:%d] Reset done, rc %d\n",
+                  adapter->state, adapter->failover_pending, rc);
        return rc;
 }
 
@@ -2242,6 +2253,8 @@ out:
        /* restore adapter state if reset failed */
        if (rc)
                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;
 }
 
@@ -2352,6 +2365,11 @@ static void __ibmvnic_reset(struct work_struct *work)
        }
 
        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)
@@ -2397,7 +2415,8 @@ static int ibmvnic_reset(struct ibmvnic_adapter *adapter,
        list_for_each(entry, &adapter->rwi_list) {
                tmp = list_entry(entry, struct ibmvnic_rwi, list);
                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);
                        ret = EBUSY;
                        goto err;