From a0a99f21dd8a3edfe7d8e35831793930d2c0172e Mon Sep 17 00:00:00 2001 From: Andrew Boyer Date: Wed, 16 Dec 2020 13:12:57 -0800 Subject: [PATCH] net/ionic: stop queues when LIF is stopped Otherwise they cannot be restarted, because the FW will reject INIT or ENA commands on queues which are already running. Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_lif.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/net/ionic/ionic_lif.c b/drivers/net/ionic/ionic_lif.c index c1a95ca7c2..3e643d1455 100644 --- a/drivers/net/ionic/ionic_lif.c +++ b/drivers/net/ionic/ionic_lif.c @@ -66,9 +66,23 @@ ionic_qcq_disable(struct ionic_qcq *qcq) void ionic_lif_stop(struct ionic_lif *lif) { + uint32_t i; + IONIC_PRINT_CALL(); lif->state &= ~IONIC_LIF_F_UP; + + for (i = 0; i < lif->nrxqcqs; i++) { + struct ionic_qcq *rxq = lif->rxqcqs[i]; + if (rxq->flags & IONIC_QCQ_F_INITED) + (void)ionic_dev_rx_queue_stop(lif->eth_dev, i); + } + + for (i = 0; i < lif->ntxqcqs; i++) { + struct ionic_qcq *txq = lif->txqcqs[i]; + if (txq->flags & IONIC_QCQ_F_INITED) + (void)ionic_dev_tx_queue_stop(lif->eth_dev, i); + } } void -- 2.20.1