Commit 6f7d6f0f authored by Shannon Nelson's avatar Shannon Nelson Committed by David S. Miller

ionic: pull reset_queues into tx_timeout handler

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: default avatarShannon Nelson <snelson@pensando.io>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 101b40a0
...@@ -1406,9 +1406,14 @@ static void ionic_tx_timeout_work(struct work_struct *ws) ...@@ -1406,9 +1406,14 @@ static void ionic_tx_timeout_work(struct work_struct *ws)
netdev_info(lif->netdev, "Tx Timeout recovery\n"); netdev_info(lif->netdev, "Tx Timeout recovery\n");
rtnl_lock(); /* if we were stopped before this scheduled job was launched,
ionic_reset_queues(lif, NULL, NULL); * don't bother the queues as they are already stopped.
rtnl_unlock(); */
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) static void ionic_tx_timeout(struct net_device *netdev, unsigned int txqueue)
...@@ -2280,34 +2285,6 @@ int ionic_reconfigure_queues(struct ionic_lif *lif, ...@@ -2280,34 +2285,6 @@ int ionic_reconfigure_queues(struct ionic_lif *lif,
return err; 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) int ionic_lif_alloc(struct ionic *ionic)
{ {
struct device *dev = ionic->dev; struct device *dev = ionic->dev;
......
...@@ -259,7 +259,6 @@ int ionic_lif_rss_config(struct ionic_lif *lif, u16 types, ...@@ -259,7 +259,6 @@ int ionic_lif_rss_config(struct ionic_lif *lif, u16 types,
const u8 *key, const u32 *indir); const u8 *key, const u32 *indir);
int ionic_reconfigure_queues(struct ionic_lif *lif, int ionic_reconfigure_queues(struct ionic_lif *lif,
struct ionic_queue_params *qparam); 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) static inline void debug_stats_txq_post(struct ionic_queue *q, bool dbell)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment