|
@@ -104,6 +104,7 @@ static int lbs_dev_open(struct net_device *dev)
|
|
|
lbs_deb_enter(LBS_DEB_NET);
|
|
|
|
|
|
spin_lock_irq(&priv->driver_lock);
|
|
|
+ priv->stopping = false;
|
|
|
|
|
|
if (priv->connect_status == LBS_CONNECTED)
|
|
|
netif_carrier_on(dev);
|
|
@@ -131,10 +132,16 @@ static int lbs_eth_stop(struct net_device *dev)
|
|
|
lbs_deb_enter(LBS_DEB_NET);
|
|
|
|
|
|
spin_lock_irq(&priv->driver_lock);
|
|
|
+ priv->stopping = true;
|
|
|
netif_stop_queue(dev);
|
|
|
spin_unlock_irq(&priv->driver_lock);
|
|
|
|
|
|
schedule_work(&priv->mcast_work);
|
|
|
+ cancel_delayed_work_sync(&priv->scan_work);
|
|
|
+ if (priv->scan_req) {
|
|
|
+ cfg80211_scan_done(priv->scan_req, false);
|
|
|
+ priv->scan_req = NULL;
|
|
|
+ }
|
|
|
|
|
|
lbs_deb_leave(LBS_DEB_NET);
|
|
|
return 0;
|