summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorJussi Kivilinna <jussi.kivilinna@mbnet.fi>2009-07-30 19:41:42 +0300
committerJohn W. Linville <linville@tuxdriver.com>2009-08-04 16:44:16 -0400
commite5a11a822e1758b05b987e3a5041ef1029aa6cec (patch)
tree5096c1b76c151953d7161c27ff9b8376b8fd24ef /drivers/net/wireless
parent7eaab7086c3a313d76c217f98bc610c523d9bc2c (diff)
rndis_wlan: set current packet filter to zero on stop
Set current packet filter to zero to block receiving data packets from device. Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless')
-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 bfb9861a036..974f7249786 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)
if (retval)
devwarn(usbdev, "rndis_reset() failed: %d", retval);
- /* rndis_reset cleared multicast list, so restore here. */
+ /* rndis_reset cleared multicast list, so restore here.
+ (set_multicast_list() also turns on current packet filter) */
set_multicast_list(usbdev);
queue_delayed_work(priv->workqueue, &priv->stats_work,
@@ -2544,6 +2545,7 @@ static int rndis_wlan_stop(struct usbnet *usbdev)
{
struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
int retval;
+ __le32 filter;
devdbg(usbdev, "rndis_wlan_stop");
@@ -2560,6 +2562,12 @@ static int rndis_wlan_stop(struct usbnet *usbdev)
priv->scan_request = NULL;
}
+ /* Set current packet filter zero to block receiving data packets from
+ device. */
+ filter = 0;
+ rndis_set_oid(usbdev, OID_GEN_CURRENT_PACKET_FILTER, &filter,
+ sizeof(filter));
+
return retval;
}