rndis_host: Fix rndis packet filter flags.
authorJussi Kivilinna <jussi.kivilinna@mbnet.fi>
Fri, 25 Jan 2008 22:51:01 +0000 (00:51 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 1 Feb 2008 03:26:55 +0000 (19:26 -0800)
RNDIS packet filter flags are not exactly the same as CDC flags
so we cannot reuse them.

Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
Signed-off-by: Bjorge Dijkstra <bjd@jooz.net>
Acked-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/usb/rndis_host.c

index c6860250521bf9eb86626e7b2ff3b163fa26cab9..12daf9cfb77b7b2acf34fbe6b85ef2d6b23b145b 100644 (file)
@@ -256,6 +256,27 @@ struct rndis_keepalive_c { /* IN (optionally OUT) */
 #define OID_GEN_MAXIMUM_FRAME_SIZE     ccpu2(0x00010106)
 #define OID_GEN_CURRENT_PACKET_FILTER  ccpu2(0x0001010e)
 
+/* packet filter bits used by OID_GEN_CURRENT_PACKET_FILTER */
+#define RNDIS_PACKET_TYPE_DIRECTED             ccpu2(0x00000001)
+#define RNDIS_PACKET_TYPE_MULTICAST            ccpu2(0x00000002)
+#define RNDIS_PACKET_TYPE_ALL_MULTICAST                ccpu2(0x00000004)
+#define RNDIS_PACKET_TYPE_BROADCAST            ccpu2(0x00000008)
+#define RNDIS_PACKET_TYPE_SOURCE_ROUTING       ccpu2(0x00000010)
+#define RNDIS_PACKET_TYPE_PROMISCUOUS          ccpu2(0x00000020)
+#define RNDIS_PACKET_TYPE_SMT                  ccpu2(0x00000040)
+#define RNDIS_PACKET_TYPE_ALL_LOCAL            ccpu2(0x00000080)
+#define RNDIS_PACKET_TYPE_GROUP                        ccpu2(0x00001000)
+#define RNDIS_PACKET_TYPE_ALL_FUNCTIONAL       ccpu2(0x00002000)
+#define RNDIS_PACKET_TYPE_FUNCTIONAL           ccpu2(0x00004000)
+#define RNDIS_PACKET_TYPE_MAC_FRAME            ccpu2(0x00008000)
+
+/* default filter used with RNDIS devices */
+#define RNDIS_DEFAULT_FILTER ( \
+       RNDIS_PACKET_TYPE_DIRECTED | \
+       RNDIS_PACKET_TYPE_BROADCAST | \
+       RNDIS_PACKET_TYPE_ALL_MULTICAST | \
+       RNDIS_PACKET_TYPE_PROMISCUOUS)
+
 /*
  * RNDIS notifications from device: command completion; "reverse"
  * keepalives; etc
@@ -551,7 +572,7 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf)
        u.set->oid = OID_GEN_CURRENT_PACKET_FILTER;
        u.set->len = ccpu2(4);
        u.set->offset = ccpu2((sizeof *u.set) - 8);
-       *(__le32 *)(u.buf + sizeof *u.set) = ccpu2(DEFAULT_FILTER);
+       *(__le32 *)(u.buf + sizeof *u.set) = RNDIS_DEFAULT_FILTER;
 
        retval = rndis_command(dev, u.header);
        if (unlikely(retval < 0)) {