staging: wilc1000: add check before performing operation on net_device
authorAjay Singh <ajay.kathat@microchip.com>
Tue, 5 Feb 2019 07:15:48 +0000 (07:15 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 7 Feb 2019 12:31:20 +0000 (13:31 +0100)
Before calling an operation on net_device check if that interface is
available.

Signed-off-by: Ajay Singh <ajay.kathat@microchip.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/wilc1000/linux_wlan.c

index 56272b3..f096f9e 100644 (file)
@@ -159,9 +159,11 @@ static int linux_wlan_txq_task(void *vp)
                do {
                        ret = wilc_wlan_handle_txq(dev, &txq_count);
                        if (txq_count < FLOW_CONTROL_LOWER_THRESHOLD) {
-                               if (netif_queue_stopped(wl->vif[0]->ndev))
+                               if (wl->vif[0]->mac_opened &&
+                                   netif_queue_stopped(wl->vif[0]->ndev))
                                        netif_wake_queue(wl->vif[0]->ndev);
-                               if (netif_queue_stopped(wl->vif[1]->ndev))
+                               if (wl->vif[1]->mac_opened &&
+                                   netif_queue_stopped(wl->vif[1]->ndev))
                                        netif_wake_queue(wl->vif[1]->ndev);
                        }
                } while (ret == -ENOBUFS && !wl->close);
@@ -761,8 +763,10 @@ netdev_tx_t wilc_mac_xmit(struct sk_buff *skb, struct net_device *ndev)
                                                linux_wlan_tx_complete);
 
        if (queue_count > FLOW_CONTROL_UPPER_THRESHOLD) {
-               netif_stop_queue(wilc->vif[0]->ndev);
-               netif_stop_queue(wilc->vif[1]->ndev);
+               if (wilc->vif[0]->mac_opened)
+                       netif_stop_queue(wilc->vif[0]->ndev);
+               if (wilc->vif[1]->mac_opened)
+                       netif_stop_queue(wilc->vif[1]->ndev);
        }
 
        return 0;