net: wireless: bcmdhd: Add constant mDNS filter
authorDmitry Shmidt <dimitrysh@google.com>
Tue, 20 Mar 2012 20:38:06 +0000 (13:38 -0700)
committerDmitry Shmidt <dimitrysh@google.com>
Wed, 21 Mar 2012 00:30:42 +0000 (17:30 -0700)
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
drivers/net/wireless/bcmdhd/dhd.h
drivers/net/wireless/bcmdhd/dhd_linux.c

index 2150f0212ddcbf756d1ed16bfc5842da0fe329ea..3e37e991456cf61953adb6c091acb4783c091601 100644 (file)
@@ -446,6 +446,7 @@ extern int dhd_dev_get_pno_status(struct net_device *dev);
 #define DHD_BROADCAST_FILTER_NUM       1
 #define DHD_MULTICAST4_FILTER_NUM      2
 #define DHD_MULTICAST6_FILTER_NUM      3
+#define DHD_MDNS_FILTER_NUM            4
 extern int net_os_set_packet_filter(struct net_device *dev, int val);
 extern int net_os_rxfilter_add_remove(struct net_device *dev, int val, int num);
 
index 14d3660affcf764663a67e601bf0da6d73856ae9..ad30958cb7c3e615e721817f72596780d43678cb 100644 (file)
@@ -3216,12 +3216,13 @@ dhd_preinit_ioctls(dhd_pub_t *dhd)
 
 #ifdef PKT_FILTER_SUPPORT
        /* Setup defintions for pktfilter , enable in suspend */
-       dhd->pktfilter_count = 4;
+       dhd->pktfilter_count = 5;
        /* Setup filter to allow only unicast */
        dhd->pktfilter[0] = "100 0 0 0 0x01 0x00";
        dhd->pktfilter[1] = NULL;
        dhd->pktfilter[2] = NULL;
        dhd->pktfilter[3] = NULL;
+       dhd->pktfilter[4] = "104 0 0 0 0xFFFFFFFFFFFF 0x01005E0000FB";
 #if defined(SOFTAP)
        if (ap_fw_loaded) {
                int i;
@@ -4320,7 +4321,8 @@ int net_os_rxfilter_add_remove(struct net_device *dev, int add_remove, int num)
        char *filterp = NULL;
        int ret = 0;
 
-       if (!dhd || (num == DHD_UNICAST_FILTER_NUM))
+       if (!dhd || (num == DHD_UNICAST_FILTER_NUM) ||
+           (num == DHD_MDNS_FILTER_NUM))
                return ret;
        if (num >= dhd->pub.pktfilter_count)
                return -EINVAL;