diff options
author | Eyal Shapira <eyal@wizery.com> | 2011-12-18 09:18:20 +0200 |
---|---|---|
committer | Arik Nemtsov <arik@wizery.com> | 2012-08-02 13:03:59 +0300 |
commit | f9a7551a806135f6339cb42137849165bb360c49 (patch) | |
tree | 000120587b89e76edee305742243d2fe0bcc1a55 /src/drivers | |
parent | 474c453f3ada343260e6f46be0ebe6c4913974f4 (diff) | |
download | external_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.c | 44 |
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, }, }; |