aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/rndis_wlan.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
index bfb9861a0366..974f72497862 100644
--- a/drivers/net/wireless/rndis_wlan.c
+++ b/drivers/net/wireless/rndis_wlan.c
@@ -2530,7 +2530,8 @@ static int rndis_wlan_reset(struct usbnet *usbdev)
2530 if (retval) 2530 if (retval)
2531 devwarn(usbdev, "rndis_reset() failed: %d", retval); 2531 devwarn(usbdev, "rndis_reset() failed: %d", retval);
2532 2532
2533 /* rndis_reset cleared multicast list, so restore here. */ 2533 /* rndis_reset cleared multicast list, so restore here.
2534 (set_multicast_list() also turns on current packet filter) */
2534 set_multicast_list(usbdev); 2535 set_multicast_list(usbdev);
2535 2536
2536 queue_delayed_work(priv->workqueue, &priv->stats_work, 2537 queue_delayed_work(priv->workqueue, &priv->stats_work,
@@ -2544,6 +2545,7 @@ static int rndis_wlan_stop(struct usbnet *usbdev)
2544{ 2545{
2545 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev); 2546 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
2546 int retval; 2547 int retval;
2548 __le32 filter;
2547 2549
2548 devdbg(usbdev, "rndis_wlan_stop"); 2550 devdbg(usbdev, "rndis_wlan_stop");
2549 2551
@@ -2560,6 +2562,12 @@ static int rndis_wlan_stop(struct usbnet *usbdev)
2560 priv->scan_request = NULL; 2562 priv->scan_request = NULL;
2561 } 2563 }
2562 2564
2565 /* Set current packet filter zero to block receiving data packets from
2566 device. */
2567 filter = 0;
2568 rndis_set_oid(usbdev, OID_GEN_CURRENT_PACKET_FILTER, &filter,
2569 sizeof(filter));
2570
2563 return retval; 2571 return retval;
2564} 2572}
2565 2573