ibmvnic: define flush_reset_queue helper
authorSukadev Bhattiprolu <sukadev@linux.ibm.com>
Fri, 25 Feb 2022 06:23:53 +0000 (22:23 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 25 Feb 2022 10:57:47 +0000 (10:57 +0000)
Define and use a helper to flush the reset queue.

Fixes: 2770a7984db5 ("ibmvnic: Introduce hard reset recovery")
Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/ibm/ibmvnic.c

index c73c699..42c3ac9 100644 (file)
@@ -2735,12 +2735,23 @@ static void __ibmvnic_delayed_reset(struct work_struct *work)
        __ibmvnic_reset(&adapter->ibmvnic_reset);
 }
 
+static void flush_reset_queue(struct ibmvnic_adapter *adapter)
+{
+       struct list_head *entry, *tmp_entry;
+
+       if (!list_empty(&adapter->rwi_list)) {
+               list_for_each_safe(entry, tmp_entry, &adapter->rwi_list) {
+                       list_del(entry);
+                       kfree(list_entry(entry, struct ibmvnic_rwi, list));
+               }
+       }
+}
+
 static int ibmvnic_reset(struct ibmvnic_adapter *adapter,
                         enum ibmvnic_reset_reason reason)
 {
-       struct list_head *entry, *tmp_entry;
-       struct ibmvnic_rwi *rwi, *tmp;
        struct net_device *netdev = adapter->netdev;
+       struct ibmvnic_rwi *rwi, *tmp;
        unsigned long flags;
        int ret;
 
@@ -2783,12 +2794,9 @@ static int ibmvnic_reset(struct ibmvnic_adapter *adapter,
        /* if we just received a transport event,
         * flush reset queue and process this reset
         */
-       if (adapter->force_reset_recovery && !list_empty(&adapter->rwi_list)) {
-               list_for_each_safe(entry, tmp_entry, &adapter->rwi_list) {
-                       list_del(entry);
-                       kfree(list_entry(entry, struct ibmvnic_rwi, list));
-               }
-       }
+       if (adapter->force_reset_recovery)
+               flush_reset_queue(adapter);
+
        rwi->reset_reason = reason;
        list_add_tail(&rwi->list, &adapter->rwi_list);
        netdev_dbg(adapter->netdev, "Scheduling reset (reason %s)\n",