OSDN Git Service

ionic: pull reset_queues into tx_timeout handler
authorShannon Nelson <snelson@pensando.io>
Thu, 27 Aug 2020 23:00:30 +0000 (16:00 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 28 Aug 2020 15:01:30 +0000 (08:01 -0700)
Convert tx_timeout handler to not do the full reset.  As this was
the last user of ionic_reset_queues(), we can drop it.

Signed-off-by: Shannon Nelson <snelson@pensando.io>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/pensando/ionic/ionic_lif.c
drivers/net/ethernet/pensando/ionic/ionic_lif.h

index 4b16dbf..eeaa736 100644 (file)
@@ -1406,9 +1406,14 @@ static void ionic_tx_timeout_work(struct work_struct *ws)
 
        netdev_info(lif->netdev, "Tx Timeout recovery\n");
 
-       rtnl_lock();
-       ionic_reset_queues(lif, NULL, NULL);
-       rtnl_unlock();
+       /* if we were stopped before this scheduled job was launched,
+        * don't bother the queues as they are already stopped.
+        */
+       if (!netif_running(lif->netdev))
+               return;
+
+       ionic_stop_queues_reconfig(lif);
+       ionic_start_queues_reconfig(lif);
 }
 
 static void ionic_tx_timeout(struct net_device *netdev, unsigned int txqueue)
@@ -2280,34 +2285,6 @@ err_out:
        return err;
 }
 
-int ionic_reset_queues(struct ionic_lif *lif, ionic_reset_cb cb, void *arg)
-{
-       bool running;
-       int err = 0;
-
-       mutex_lock(&lif->queue_lock);
-       running = netif_running(lif->netdev);
-       if (running) {
-               netif_device_detach(lif->netdev);
-               err = ionic_stop(lif->netdev);
-               if (err)
-                       goto reset_out;
-       }
-
-       if (cb)
-               cb(lif, arg);
-
-       if (running) {
-               err = ionic_open(lif->netdev);
-               netif_device_attach(lif->netdev);
-       }
-
-reset_out:
-       mutex_unlock(&lif->queue_lock);
-
-       return err;
-}
-
 int ionic_lif_alloc(struct ionic *ionic)
 {
        struct device *dev = ionic->dev;
index 1df3e1e..e1e6ff1 100644 (file)
@@ -259,7 +259,6 @@ int ionic_lif_rss_config(struct ionic_lif *lif, u16 types,
                         const u8 *key, const u32 *indir);
 int ionic_reconfigure_queues(struct ionic_lif *lif,
                             struct ionic_queue_params *qparam);
-int ionic_reset_queues(struct ionic_lif *lif, ionic_reset_cb cb, void *arg);
 
 static inline void debug_stats_txq_post(struct ionic_queue *q, bool dbell)
 {