iwlwifi: mvm: enable L3 filtering
authorSara Sharon <sara.sharon@intel.com>
Thu, 19 Nov 2015 11:12:15 +0000 (13:12 +0200)
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Sun, 20 Dec 2015 21:27:38 +0000 (23:27 +0200)
Firmware will support filtering multicast L3 packets.
The L3 filtering is configured by the WOWLAN_CONFIG command.
All flags should be enabled by default.
Older firmware is not affected as it does not look into
this field.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/d3.c
drivers/net/wireless/intel/iwlwifi/mvm/fw-api-d3.h
drivers/net/wireless/intel/iwlwifi/mvm/ops.c

index 69fd10a2f2a3197d9299d0b52a091da1bd6eeaa2..3e6b6d626c25c7964cc380bb46e5b21959c04c1b 100644 (file)
@@ -804,6 +804,8 @@ iwl_mvm_get_wowlan_config(struct iwl_mvm *mvm,
 
        wowlan_config_cmd->is_11n_connection =
                                        ap_sta->ht_cap.ht_supported;
+       wowlan_config_cmd->flags = ENABLE_L3_FILTERING |
+               ENABLE_NBNS_FILTERING | ENABLE_DHCP_FILTERING;
 
        /* Query the last used seqno and set it */
        ret = iwl_mvm_get_last_nonqos_seq(mvm, vif);
index c36c9563f7446a90c62184ddfee85a49b3c0aa68..62b9a0a96700738ad5df1c15a8d02305804fbb0d 100644 (file)
@@ -7,6 +7,7 @@
  *
  * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved.
  * Copyright(c) 2013 - 2014 Intel Mobile Communications GmbH
+ * Copyright(c) 2015 Intel Deutschland GmbH
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of version 2 of the GNU General Public License as
@@ -245,6 +246,13 @@ enum iwl_wowlan_wakeup_filters {
        IWL_WOWLAN_WAKEUP_BCN_FILTERING                 = BIT(16),
 }; /* WOWLAN_WAKEUP_FILTER_API_E_VER_4 */
 
+enum iwl_wowlan_flags {
+       IS_11W_ASSOC            = BIT(0),
+       ENABLE_L3_FILTERING     = BIT(1),
+       ENABLE_NBNS_FILTERING   = BIT(2),
+       ENABLE_DHCP_FILTERING   = BIT(3),
+};
+
 struct iwl_wowlan_config_cmd {
        __le32 wakeup_filter;
        __le16 non_qos_seq;
@@ -252,8 +260,9 @@ struct iwl_wowlan_config_cmd {
        u8 wowlan_ba_teardown_tids;
        u8 is_11n_connection;
        u8 offloading_tid;
-       u8 reserved[3];
-} __packed; /* WOWLAN_CONFIG_API_S_VER_3 */
+       u8 flags;
+       u8 reserved[2];
+} __packed; /* WOWLAN_CONFIG_API_S_VER_4 */
 
 /*
  * WOWLAN_TSC_RSC_PARAMS
index 50b8c01fadbd5f05fb278f886e87da15a569ba39..a5e1c8e943a1d9fec8a405e4ee43a76520b88729 100644 (file)
@@ -1186,7 +1186,8 @@ static void iwl_mvm_set_wowlan_data(struct iwl_mvm *mvm,
        mvm_ap_sta = iwl_mvm_sta_from_mac80211(ap_sta);
        cmd->is_11n_connection = ap_sta->ht_cap.ht_supported;
        cmd->offloading_tid = iter_data->offloading_tid;
-
+       cmd->flags = ENABLE_L3_FILTERING | ENABLE_NBNS_FILTERING |
+               ENABLE_DHCP_FILTERING;
        /*
         * The d0i3 uCode takes care of the nonqos counters,
         * so configure only the qos seq ones.