aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAjay Singh <ajay.kathat@microchip.com>2019-02-05 07:15:48 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-02-07 13:31:20 +0100
commit20c888becca9c678f2c0aa24d9afec758196bd41 (patch)
treefe88e65fc8a0faa3a2b2c3ed8ab47978beda80d0
parentstaging: wilc1000: avoid use of interface names for validation (diff)
downloadlinux-dev-20c888becca9c678f2c0aa24d9afec758196bd41.tar.xz
linux-dev-20c888becca9c678f2c0aa24d9afec758196bd41.zip
staging: wilc1000: add check before performing operation on net_device
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>
-rw-r--r--drivers/staging/wilc1000/linux_wlan.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/staging/wilc1000/linux_wlan.c b/drivers/staging/wilc1000/linux_wlan.c
index 56272b3cc5f8..f096f9e6b274 100644
--- a/drivers/staging/wilc1000/linux_wlan.c
+++ b/drivers/staging/wilc1000/linux_wlan.c
@@ -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;