diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath6kl/cfg80211.c')
-rw-r--r-- | drivers/net/wireless/ath/ath6kl/cfg80211.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath6kl/cfg80211.c b/drivers/net/wireless/ath/ath6kl/cfg80211.c index d4172137499a..f4467733ff5b 100644 --- a/drivers/net/wireless/ath/ath6kl/cfg80211.c +++ b/drivers/net/wireless/ath/ath6kl/cfg80211.c | |||
@@ -2076,6 +2076,13 @@ static int ath6kl_wow_suspend(struct ath6kl *ar, struct cfg80211_wowlan *wow) | |||
2076 | if (wow && (wow->n_patterns > WOW_MAX_FILTERS_PER_LIST)) | 2076 | if (wow && (wow->n_patterns > WOW_MAX_FILTERS_PER_LIST)) |
2077 | return -EINVAL; | 2077 | return -EINVAL; |
2078 | 2078 | ||
2079 | if (!test_bit(NETDEV_MCAST_ALL_ON, &vif->flags)) { | ||
2080 | ret = ath6kl_wmi_mcast_filter_cmd(vif->ar->wmi, | ||
2081 | vif->fw_vif_idx, false); | ||
2082 | if (ret) | ||
2083 | return ret; | ||
2084 | } | ||
2085 | |||
2079 | /* Clear existing WOW patterns */ | 2086 | /* Clear existing WOW patterns */ |
2080 | for (i = 0; i < WOW_MAX_FILTERS_PER_LIST; i++) | 2087 | for (i = 0; i < WOW_MAX_FILTERS_PER_LIST; i++) |
2081 | ath6kl_wmi_del_wow_pattern_cmd(ar->wmi, vif->fw_vif_idx, | 2088 | ath6kl_wmi_del_wow_pattern_cmd(ar->wmi, vif->fw_vif_idx, |
@@ -2204,6 +2211,13 @@ static int ath6kl_wow_resume(struct ath6kl *ar) | |||
2204 | 2211 | ||
2205 | ar->state = ATH6KL_STATE_ON; | 2212 | ar->state = ATH6KL_STATE_ON; |
2206 | 2213 | ||
2214 | if (!test_bit(NETDEV_MCAST_ALL_OFF, &vif->flags)) { | ||
2215 | ret = ath6kl_wmi_mcast_filter_cmd(vif->ar->wmi, | ||
2216 | vif->fw_vif_idx, true); | ||
2217 | if (ret) | ||
2218 | return ret; | ||
2219 | } | ||
2220 | |||
2207 | netif_wake_queue(vif->ndev); | 2221 | netif_wake_queue(vif->ndev); |
2208 | 2222 | ||
2209 | return 0; | 2223 | return 0; |