aboutsummaryrefslogtreecommitdiffstats
path: root/src/drivers
diff options
context:
space:
mode:
authorEyal Shapira <eyal@wizery.com>2011-12-18 09:18:20 +0200
committerArik Nemtsov <arik@wizery.com>2012-08-02 13:03:59 +0300
commitf9a7551a806135f6339cb42137849165bb360c49 (patch)
tree000120587b89e76edee305742243d2fe0bcc1a55 /src/drivers
parent474c453f3ada343260e6f46be0ebe6c4913974f4 (diff)
downloadexternal_wpa_supplicant_8_ti-f9a7551a806135f6339cb42137849165bb360c49.zip
external_wpa_supplicant_8_ti-f9a7551a806135f6339cb42137849165bb360c49.tar.gz
external_wpa_supplicant_8_ti-f9a7551a806135f6339cb42137849165bb360c49.tar.bz2
driver_nl80211: Add and align rx filters IDs
Add more patterns (SSDP, ARP, DHCP) and align IDs to a common vendor Android framework implementation. Note that ARP pattern shouldn't be used as our FW responds to ARPs by default without waking up the host. It is added only for ID alignments purposes. Signed-off-by: Eyal Shapira <eyal@wizery.com>
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/driver_nl80211.c44
1 files changed, 33 insertions, 11 deletions
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index bf67aba..59d278e 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -8952,6 +8952,7 @@ nl80211_self_filter_get_pattern_handler(u8 *buf, int buflen, void *arg)
}
static struct rx_filter rx_filters[] = {
+ /* ID 0 */
{.name = "self",
.pattern = {},
.pattern_len = 6,
@@ -8960,6 +8961,7 @@ static struct rx_filter rx_filters[] = {
.get_pattern_handler = nl80211_self_filter_get_pattern_handler,
},
+ /* ID 1 */
{.name = "bcast",
.pattern = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},
.pattern_len = 6,
@@ -8967,6 +8969,7 @@ static struct rx_filter rx_filters[] = {
.mask_len = 1,
},
+ /* ID 2 */
{.name = "ipv4mc",
.pattern = {0x01,0x00,0x5E},
.pattern_len = 3,
@@ -8974,6 +8977,7 @@ static struct rx_filter rx_filters[] = {
.mask_len = 1,
},
+ /* ID 3 */
{.name = "ipv6mc",
.pattern = {0x33,0x33},
.pattern_len = 2,
@@ -8981,27 +8985,45 @@ static struct rx_filter rx_filters[] = {
.mask_len = 1,
},
+ /* ID 4 */
+ {.name = "dhcp",
+ .pattern = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0 , 0 ,
+ 0 , 0 , 0 , 0 , 0 , 0 , 0x45, 0 ,
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0x11,
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
+ 0 , 0 , 0 , 0 , 0x00, 0x44},
+ .pattern_len = 38,
+ .mask = { BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(4) | BIT(5),
+ BIT(6), /* OCTET 2 */
+ BIT(7), /* OCTET 3 */
+ 0, /* OCTET 4 */
+ BIT(4) | BIT(5) }, /* OCTET 5 */
+ .mask_len = 5,
+ },
+
+ /* ID 5 */
{.name = "arp",
.pattern = {0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 0 , 0x08, 0x06},
.pattern_len = 14,
- .mask = { 0, /* OCTET 1 */
- BIT(4) | BIT(5) }, /* OCTET 2 */
+ .mask = { 0, /* OCTET 1 */
+ BIT(4) | BIT(5) }, /* OCTET 2 */
.mask_len = 2,
},
- {.name = "dhcp",
- .pattern = {0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
+ /* ID 6 */
+ {.name = "ssdp",
+ .pattern = {0x01, 0x00, 0x5E, 0 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0x45, 0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0x11,
- 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
- 0 , 0 , 0 , 0 , 0x00, 0x44},
+ 0 , 0 , 0 , 0 , 0 , 0 , 0xEF, 0xFF,
+ 0xFF, 0xFA, 0 , 0 , 0x07, 0x6C},
.pattern_len = 38,
- .mask = { 0, /* OCTET 1 */
- BIT(6), /* OCTET 2 */
- BIT(7), /* OCTET 3 */
- 0, /* OCTET 4 */
- BIT(4) | BIT(5) }, /* OCTET 5 */
+ .mask = { BIT(0) | BIT(1) | BIT(2), /* OCTET 1 */
+ BIT(6), /* OCTET 2 */
+ BIT(7), /* OCTET 3 */
+ BIT(6) | BIT(7), /* OCTET 4 */
+ BIT(0) | BIT(1) | BIT(4) | BIT(5) }, /* OCTET 5 */
.mask_len = 5,
},
};