diff options
author | Eyal Shapira | 2012-02-21 16:59:19 -0600 |
---|---|---|
committer | Eyal Shapira | 2012-03-15 11:42:16 -0500 |
commit | 3a53d2146b13d71ef664ab6bdfdc732594c63f18 (patch) | |
tree | 5a1d172bbfdd3c05f2775560810b6e2e52d7ba44 | |
parent | 6ff736ff8283f60def28740d01ad824fbdc552a3 (diff) | |
download | hostap-3a53d2146b13d71ef664ab6bdfdc732594c63f18.tar.gz hostap-3a53d2146b13d71ef664ab6bdfdc732594c63f18.tar.xz hostap-3a53d2146b13d71ef664ab6bdfdc732594c63f18.zip |
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.
-rw-r--r-- | src/drivers/driver_nl80211.c | 43 |
1 files changed, 37 insertions, 6 deletions
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index e4072c0a..c9ed051d 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c | |||
@@ -8777,6 +8777,7 @@ nl80211_self_filter_get_pattern_handler(u8 *buf, int buflen, void *arg) | |||
8777 | } | 8777 | } |
8778 | 8778 | ||
8779 | static struct rx_filter rx_filters[] = { | 8779 | static struct rx_filter rx_filters[] = { |
8780 | /* ID 0 */ | ||
8780 | {.name = "self", | 8781 | {.name = "self", |
8781 | .pattern = {}, | 8782 | .pattern = {}, |
8782 | .pattern_len = 6, | 8783 | .pattern_len = 6, |
@@ -8785,6 +8786,7 @@ static struct rx_filter rx_filters[] = { | |||
8785 | .get_pattern_handler = nl80211_self_filter_get_pattern_handler, | 8786 | .get_pattern_handler = nl80211_self_filter_get_pattern_handler, |
8786 | }, | 8787 | }, |
8787 | 8788 | ||
8789 | /* ID 1 */ | ||
8788 | {.name = "bcast", | 8790 | {.name = "bcast", |
8789 | .pattern = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}, | 8791 | .pattern = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}, |
8790 | .pattern_len = 6, | 8792 | .pattern_len = 6, |
@@ -8792,6 +8794,7 @@ static struct rx_filter rx_filters[] = { | |||
8792 | .mask_len = 1, | 8794 | .mask_len = 1, |
8793 | }, | 8795 | }, |
8794 | 8796 | ||
8797 | /* ID 2 */ | ||
8795 | {.name = "ipv4mc", | 8798 | {.name = "ipv4mc", |
8796 | .pattern = {0x01,0x00,0x5E}, | 8799 | .pattern = {0x01,0x00,0x5E}, |
8797 | .pattern_len = 3, | 8800 | .pattern_len = 3, |
@@ -8799,6 +8802,7 @@ static struct rx_filter rx_filters[] = { | |||
8799 | .mask_len = 1, | 8802 | .mask_len = 1, |
8800 | }, | 8803 | }, |
8801 | 8804 | ||
8805 | /* ID 3 */ | ||
8802 | {.name = "ipv6mc", | 8806 | {.name = "ipv6mc", |
8803 | .pattern = {0x33,0x33}, | 8807 | .pattern = {0x33,0x33}, |
8804 | .pattern_len = 2, | 8808 | .pattern_len = 2, |
@@ -8806,18 +8810,45 @@ static struct rx_filter rx_filters[] = { | |||
8806 | .mask_len = 1, | 8810 | .mask_len = 1, |
8807 | }, | 8811 | }, |
8808 | 8812 | ||
8813 | /* ID 4 */ | ||
8809 | {.name = "dhcp", | 8814 | {.name = "dhcp", |
8810 | .pattern = {0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , | 8815 | .pattern = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0 , 0 , |
8811 | 0 , 0 , 0 , 0 , 0 , 0 , 0x45, 0 , | 8816 | 0 , 0 , 0 , 0 , 0 , 0 , 0x45, 0 , |
8812 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0x11, | 8817 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0x11, |
8813 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , | 8818 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , |
8814 | 0 , 0 , 0 , 0 , 0x00, 0x44}, | 8819 | 0 , 0 , 0 , 0 , 0x00, 0x44}, |
8815 | .pattern_len = 38, | 8820 | .pattern_len = 38, |
8816 | .mask = { 0, /* OCTET 1 */ | 8821 | .mask = { BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(4) | BIT(5), |
8817 | BIT(6), /* OCTET 2 */ | 8822 | BIT(6), /* OCTET 2 */ |
8818 | BIT(7), /* OCTET 3 */ | 8823 | BIT(7), /* OCTET 3 */ |
8819 | 0, /* OCTET 4 */ | 8824 | 0, /* OCTET 4 */ |
8820 | BIT(4) | BIT(5) }, /* OCTET 5 */ | 8825 | BIT(4) | BIT(5) }, /* OCTET 5 */ |
8826 | .mask_len = 5, | ||
8827 | }, | ||
8828 | |||
8829 | /* ID 5 */ | ||
8830 | {.name = "arp", | ||
8831 | .pattern = {0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , | ||
8832 | 0 , 0 , 0 , 0 , 0x08, 0x06}, | ||
8833 | .pattern_len = 14, | ||
8834 | .mask = { 0, /* OCTET 1 */ | ||
8835 | BIT(4) | BIT(5) }, /* OCTET 2 */ | ||
8836 | .mask_len = 2, | ||
8837 | }, | ||
8838 | |||
8839 | /* ID 6 */ | ||
8840 | {.name = "ssdp", | ||
8841 | .pattern = {0x01, 0x00, 0x5E, 0 , 0 , 0 , 0 , 0 , | ||
8842 | 0 , 0 , 0 , 0 , 0 , 0 , 0x45, 0 , | ||
8843 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0x11, | ||
8844 | 0 , 0 , 0 , 0 , 0 , 0 , 0xEF, 0xFF, | ||
8845 | 0xFF, 0xFA, 0 , 0 , 0x07, 0x6C}, | ||
8846 | .pattern_len = 38, | ||
8847 | .mask = { BIT(0) | BIT(1) | BIT(2), /* OCTET 1 */ | ||
8848 | BIT(6), /* OCTET 2 */ | ||
8849 | BIT(7), /* OCTET 3 */ | ||
8850 | BIT(6) | BIT(7), /* OCTET 4 */ | ||
8851 | BIT(0) | BIT(1) | BIT(4) | BIT(5) }, /* OCTET 5 */ | ||
8821 | .mask_len = 5, | 8852 | .mask_len = 5, |
8822 | }, | 8853 | }, |
8823 | }; | 8854 | }; |