|
@@ -689,6 +689,23 @@ ibmvnic_open_fail:
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
|
|
|
+static void disable_sub_crqs(struct ibmvnic_adapter *adapter)
|
|
|
+{
|
|
|
+ int i;
|
|
|
+
|
|
|
+ if (adapter->tx_scrq) {
|
|
|
+ for (i = 0; i < adapter->req_tx_queues; i++)
|
|
|
+ if (adapter->tx_scrq[i])
|
|
|
+ disable_irq(adapter->tx_scrq[i]->irq);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (adapter->rx_scrq) {
|
|
|
+ for (i = 0; i < adapter->req_rx_queues; i++)
|
|
|
+ if (adapter->rx_scrq[i])
|
|
|
+ disable_irq(adapter->rx_scrq[i]->irq);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
static int ibmvnic_close(struct net_device *netdev)
|
|
|
{
|
|
|
struct ibmvnic_adapter *adapter = netdev_priv(netdev);
|
|
@@ -696,6 +713,7 @@ static int ibmvnic_close(struct net_device *netdev)
|
|
|
int i;
|
|
|
|
|
|
adapter->closing = true;
|
|
|
+ disable_sub_crqs(adapter);
|
|
|
|
|
|
for (i = 0; i < adapter->req_rx_queues; i++)
|
|
|
napi_disable(&adapter->napi[i]);
|