diff options
Diffstat (limited to 'src/drivers/driver_nl80211.c')
-rw-r--r-- | src/drivers/driver_nl80211.c | 11 |
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); |