aboutsummaryrefslogtreecommitdiffstats
path: root/src/drivers/driver_nl80211.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/driver_nl80211.c')
-rw-r--r--src/drivers/driver_nl80211.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index 59d278e..86ce8bf 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -9035,6 +9035,7 @@ static int nl80211_set_wowlan_triggers(struct i802_bss *bss, int enable)
struct nl_msg *msg, *pats = NULL;
struct nlattr *wowtrig, *pat;
int i, ret = -1;
+ int filters;
bss->drv->wowlan_enabled = !!enable;
@@ -9062,12 +9063,20 @@ static int nl80211_set_wowlan_triggers(struct i802_bss *bss, int enable)
goto nla_put_failure;
}
+ /*
+ * In GB filters 0 and 1 are always set but in ICS they
+ * were completely removed. Add filter 0 (unicast) by default
+ * so unicast traffic won't be dropped in any case.
+ */
+
+ filters = bss->drv->wowlan_triggers |= 1;
+
for (i = 0; i < NR_RX_FILTERS; i++) {
struct rx_filter *rx_filter = &rx_filters[i];
int patnr = 1;
u8 *pattern;
- if (!(bss->drv->wowlan_triggers & (1 << i)))
+ if (!(filters & (1 << i)))
continue;
pattern = nl80211_rx_filter_get_pattern(rx_filter, bss);