diff options
author | Luca Coelho <luciano.coelho@intel.com> | 2016-09-12 09:03:30 -0400 |
---|---|---|
committer | Luca Coelho <luciano.coelho@intel.com> | 2016-09-26 16:15:14 -0400 |
commit | 4b87e5af638b6056bd6c20b0954d09a5a58633be (patch) | |
tree | 2baa984915add41770a7087e68ba266413f02706 | |
parent | 7f66ea03644e197a29af5a00a6e26ff120d8edd0 (diff) |
iwlwifi: remove support for fw older than -17 and -22
FW versions older than -17 for 3160 and 7260 and older than -22 for
newer NICs are not supported anymore. Don't load these versions
and remove code that handles them.
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/iwl-7000.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/iwl-8000.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/iwl-9000.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/iwl-fw-file.h | 24 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c | 3 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/fw-api-power.h | 21 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/fw-api-tx.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 10 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 24 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/mvm.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/ops.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/power.c | 15 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/scan.c | 27 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/tt.c | 10 |
14 files changed, 36 insertions, 118 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-7000.c b/drivers/net/wireless/intel/iwlwifi/iwl-7000.c index aa575fb9dea0..d4b73dedf89b 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-7000.c +++ b/drivers/net/wireless/intel/iwlwifi/iwl-7000.c | |||
@@ -77,9 +77,9 @@ | |||
77 | #define IWL3168_UCODE_API_MAX 26 | 77 | #define IWL3168_UCODE_API_MAX 26 |
78 | 78 | ||
79 | /* Lowest firmware API version supported */ | 79 | /* Lowest firmware API version supported */ |
80 | #define IWL7260_UCODE_API_MIN 16 | 80 | #define IWL7260_UCODE_API_MIN 17 |
81 | #define IWL7265_UCODE_API_MIN 16 | 81 | #define IWL7265_UCODE_API_MIN 17 |
82 | #define IWL7265D_UCODE_API_MIN 16 | 82 | #define IWL7265D_UCODE_API_MIN 17 |
83 | #define IWL3168_UCODE_API_MIN 20 | 83 | #define IWL3168_UCODE_API_MIN 20 |
84 | 84 | ||
85 | /* NVM versions */ | 85 | /* NVM versions */ |
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-8000.c b/drivers/net/wireless/intel/iwlwifi/iwl-8000.c index 990cf2b17517..d02ca1491d16 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-8000.c +++ b/drivers/net/wireless/intel/iwlwifi/iwl-8000.c | |||
@@ -74,7 +74,7 @@ | |||
74 | #define IWL8265_UCODE_API_MAX 26 | 74 | #define IWL8265_UCODE_API_MAX 26 |
75 | 75 | ||
76 | /* Lowest firmware API version supported */ | 76 | /* Lowest firmware API version supported */ |
77 | #define IWL8000_UCODE_API_MIN 16 | 77 | #define IWL8000_UCODE_API_MIN 17 |
78 | #define IWL8265_UCODE_API_MIN 20 | 78 | #define IWL8265_UCODE_API_MIN 20 |
79 | 79 | ||
80 | /* NVM versions */ | 80 | /* NVM versions */ |
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-9000.c b/drivers/net/wireless/intel/iwlwifi/iwl-9000.c index a2c7946c12c9..ff850410d897 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-9000.c +++ b/drivers/net/wireless/intel/iwlwifi/iwl-9000.c | |||
@@ -58,7 +58,7 @@ | |||
58 | #define IWL9000_UCODE_API_MAX 26 | 58 | #define IWL9000_UCODE_API_MAX 26 |
59 | 59 | ||
60 | /* Lowest firmware API version supported */ | 60 | /* Lowest firmware API version supported */ |
61 | #define IWL9000_UCODE_API_MIN 16 | 61 | #define IWL9000_UCODE_API_MIN 17 |
62 | 62 | ||
63 | /* NVM versions */ | 63 | /* NVM versions */ |
64 | #define IWL9000_NVM_VERSION 0x0a1d | 64 | #define IWL9000_NVM_VERSION 0x0a1d |
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-fw-file.h b/drivers/net/wireless/intel/iwlwifi/iwl-fw-file.h index 94423f04320b..ceec5ca2b1ab 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-fw-file.h +++ b/drivers/net/wireless/intel/iwlwifi/iwl-fw-file.h | |||
@@ -199,8 +199,6 @@ struct iwl_ucode_capa { | |||
199 | * @IWL_UCODE_TLV_FLAGS_NEWSCAN: new uCode scan behavior on hidden SSID, | 199 | * @IWL_UCODE_TLV_FLAGS_NEWSCAN: new uCode scan behavior on hidden SSID, |
200 | * treats good CRC threshold as a boolean | 200 | * treats good CRC threshold as a boolean |
201 | * @IWL_UCODE_TLV_FLAGS_MFP: This uCode image supports MFP (802.11w). | 201 | * @IWL_UCODE_TLV_FLAGS_MFP: This uCode image supports MFP (802.11w). |
202 | * @IWL_UCODE_TLV_FLAGS_P2P: This uCode image supports P2P. | ||
203 | * @IWL_UCODE_TLV_FLAGS_DW_BC_TABLE: The SCD byte count table is in DWORDS | ||
204 | * @IWL_UCODE_TLV_FLAGS_UAPSD_SUPPORT: This uCode image supports uAPSD | 202 | * @IWL_UCODE_TLV_FLAGS_UAPSD_SUPPORT: This uCode image supports uAPSD |
205 | * @IWL_UCODE_TLV_FLAGS_SHORT_BL: 16 entries of black list instead of 64 in scan | 203 | * @IWL_UCODE_TLV_FLAGS_SHORT_BL: 16 entries of black list instead of 64 in scan |
206 | * offload profile config command. | 204 | * offload profile config command. |
@@ -210,36 +208,24 @@ struct iwl_ucode_capa { | |||
210 | * from the probe request template. | 208 | * from the probe request template. |
211 | * @IWL_UCODE_TLV_FLAGS_NEW_NSOFFL_SMALL: new NS offload (small version) | 209 | * @IWL_UCODE_TLV_FLAGS_NEW_NSOFFL_SMALL: new NS offload (small version) |
212 | * @IWL_UCODE_TLV_FLAGS_NEW_NSOFFL_LARGE: new NS offload (large version) | 210 | * @IWL_UCODE_TLV_FLAGS_NEW_NSOFFL_LARGE: new NS offload (large version) |
213 | * @IWL_UCODE_TLV_FLAGS_P2P_PM: P2P client supports PM as a stand alone MAC | ||
214 | * @IWL_UCODE_TLV_FLAGS_P2P_BSS_PS_DCM: support power save on BSS station and | ||
215 | * P2P client interfaces simultaneously if they are in different bindings. | ||
216 | * @IWL_UCODE_TLV_FLAGS_P2P_BSS_PS_SCM: support power save on BSS station and | ||
217 | * P2P client interfaces simultaneously if they are in same bindings. | ||
218 | * @IWL_UCODE_TLV_FLAGS_UAPSD_SUPPORT: General support for uAPSD | 211 | * @IWL_UCODE_TLV_FLAGS_UAPSD_SUPPORT: General support for uAPSD |
219 | * @IWL_UCODE_TLV_FLAGS_P2P_PS_UAPSD: P2P client supports uAPSD power save | 212 | * @IWL_UCODE_TLV_FLAGS_P2P_PS_UAPSD: P2P client supports uAPSD power save |
220 | * @IWL_UCODE_TLV_FLAGS_BCAST_FILTERING: uCode supports broadcast filtering. | 213 | * @IWL_UCODE_TLV_FLAGS_BCAST_FILTERING: uCode supports broadcast filtering. |
221 | * @IWL_UCODE_TLV_FLAGS_GO_UAPSD: AP/GO interfaces support uAPSD clients | ||
222 | * @IWL_UCODE_TLV_FLAGS_EBS_SUPPORT: this uCode image supports EBS. | 214 | * @IWL_UCODE_TLV_FLAGS_EBS_SUPPORT: this uCode image supports EBS. |
223 | */ | 215 | */ |
224 | enum iwl_ucode_tlv_flag { | 216 | enum iwl_ucode_tlv_flag { |
225 | IWL_UCODE_TLV_FLAGS_PAN = BIT(0), | 217 | IWL_UCODE_TLV_FLAGS_PAN = BIT(0), |
226 | IWL_UCODE_TLV_FLAGS_NEWSCAN = BIT(1), | 218 | IWL_UCODE_TLV_FLAGS_NEWSCAN = BIT(1), |
227 | IWL_UCODE_TLV_FLAGS_MFP = BIT(2), | 219 | IWL_UCODE_TLV_FLAGS_MFP = BIT(2), |
228 | IWL_UCODE_TLV_FLAGS_P2P = BIT(3), | ||
229 | IWL_UCODE_TLV_FLAGS_DW_BC_TABLE = BIT(4), | ||
230 | IWL_UCODE_TLV_FLAGS_SHORT_BL = BIT(7), | 220 | IWL_UCODE_TLV_FLAGS_SHORT_BL = BIT(7), |
231 | IWL_UCODE_TLV_FLAGS_D3_6_IPV6_ADDRS = BIT(10), | 221 | IWL_UCODE_TLV_FLAGS_D3_6_IPV6_ADDRS = BIT(10), |
232 | IWL_UCODE_TLV_FLAGS_NO_BASIC_SSID = BIT(12), | 222 | IWL_UCODE_TLV_FLAGS_NO_BASIC_SSID = BIT(12), |
233 | IWL_UCODE_TLV_FLAGS_NEW_NSOFFL_SMALL = BIT(15), | 223 | IWL_UCODE_TLV_FLAGS_NEW_NSOFFL_SMALL = BIT(15), |
234 | IWL_UCODE_TLV_FLAGS_NEW_NSOFFL_LARGE = BIT(16), | 224 | IWL_UCODE_TLV_FLAGS_NEW_NSOFFL_LARGE = BIT(16), |
235 | IWL_UCODE_TLV_FLAGS_P2P_PM = BIT(21), | ||
236 | IWL_UCODE_TLV_FLAGS_BSS_P2P_PS_DCM = BIT(22), | ||
237 | IWL_UCODE_TLV_FLAGS_BSS_P2P_PS_SCM = BIT(23), | ||
238 | IWL_UCODE_TLV_FLAGS_UAPSD_SUPPORT = BIT(24), | 225 | IWL_UCODE_TLV_FLAGS_UAPSD_SUPPORT = BIT(24), |
239 | IWL_UCODE_TLV_FLAGS_EBS_SUPPORT = BIT(25), | 226 | IWL_UCODE_TLV_FLAGS_EBS_SUPPORT = BIT(25), |
240 | IWL_UCODE_TLV_FLAGS_P2P_PS_UAPSD = BIT(26), | 227 | IWL_UCODE_TLV_FLAGS_P2P_PS_UAPSD = BIT(26), |
241 | IWL_UCODE_TLV_FLAGS_BCAST_FILTERING = BIT(29), | 228 | IWL_UCODE_TLV_FLAGS_BCAST_FILTERING = BIT(29), |
242 | IWL_UCODE_TLV_FLAGS_GO_UAPSD = BIT(30), | ||
243 | }; | 229 | }; |
244 | 230 | ||
245 | typedef unsigned int __bitwise__ iwl_ucode_tlv_api_t; | 231 | typedef unsigned int __bitwise__ iwl_ucode_tlv_api_t; |
@@ -249,13 +235,8 @@ typedef unsigned int __bitwise__ iwl_ucode_tlv_api_t; | |||
249 | * @IWL_UCODE_TLV_API_FRAGMENTED_SCAN: This ucode supports active dwell time | 235 | * @IWL_UCODE_TLV_API_FRAGMENTED_SCAN: This ucode supports active dwell time |
250 | * longer than the passive one, which is essential for fragmented scan. | 236 | * longer than the passive one, which is essential for fragmented scan. |
251 | * @IWL_UCODE_TLV_API_WIFI_MCC_UPDATE: ucode supports MCC updates with source. | 237 | * @IWL_UCODE_TLV_API_WIFI_MCC_UPDATE: ucode supports MCC updates with source. |
252 | * @IWL_UCODE_TLV_API_WIDE_CMD_HDR: ucode supports wide command header | ||
253 | * @IWL_UCODE_TLV_API_LQ_SS_PARAMS: Configure STBC/BFER via LQ CMD ss_params | 238 | * @IWL_UCODE_TLV_API_LQ_SS_PARAMS: Configure STBC/BFER via LQ CMD ss_params |
254 | * @IWL_UCODE_TLV_API_NEW_VERSION: new versioning format | 239 | * @IWL_UCODE_TLV_API_NEW_VERSION: new versioning format |
255 | * @IWL_UCODE_TLV_API_EXT_SCAN_PRIORITY: scan APIs use 8-level priority | ||
256 | * instead of 3. | ||
257 | * @IWL_UCODE_TLV_API_TX_POWER_CHAIN: TX power API has larger command size | ||
258 | * (command version 3) that supports per-chain limits | ||
259 | * @IWL_UCODE_TLV_API_SCAN_TSF_REPORT: Scan start time reported in scan | 240 | * @IWL_UCODE_TLV_API_SCAN_TSF_REPORT: Scan start time reported in scan |
260 | * iteration complete notification, and the timestamp reported for RX | 241 | * iteration complete notification, and the timestamp reported for RX |
261 | * received during scan, are reported in TSF of the mac specified in the | 242 | * received during scan, are reported in TSF of the mac specified in the |
@@ -266,11 +247,8 @@ typedef unsigned int __bitwise__ iwl_ucode_tlv_api_t; | |||
266 | enum iwl_ucode_tlv_api { | 247 | enum iwl_ucode_tlv_api { |
267 | IWL_UCODE_TLV_API_FRAGMENTED_SCAN = (__force iwl_ucode_tlv_api_t)8, | 248 | IWL_UCODE_TLV_API_FRAGMENTED_SCAN = (__force iwl_ucode_tlv_api_t)8, |
268 | IWL_UCODE_TLV_API_WIFI_MCC_UPDATE = (__force iwl_ucode_tlv_api_t)9, | 249 | IWL_UCODE_TLV_API_WIFI_MCC_UPDATE = (__force iwl_ucode_tlv_api_t)9, |
269 | IWL_UCODE_TLV_API_WIDE_CMD_HDR = (__force iwl_ucode_tlv_api_t)14, | ||
270 | IWL_UCODE_TLV_API_LQ_SS_PARAMS = (__force iwl_ucode_tlv_api_t)18, | 250 | IWL_UCODE_TLV_API_LQ_SS_PARAMS = (__force iwl_ucode_tlv_api_t)18, |
271 | IWL_UCODE_TLV_API_NEW_VERSION = (__force iwl_ucode_tlv_api_t)20, | 251 | IWL_UCODE_TLV_API_NEW_VERSION = (__force iwl_ucode_tlv_api_t)20, |
272 | IWL_UCODE_TLV_API_EXT_SCAN_PRIORITY = (__force iwl_ucode_tlv_api_t)24, | ||
273 | IWL_UCODE_TLV_API_TX_POWER_CHAIN = (__force iwl_ucode_tlv_api_t)27, | ||
274 | IWL_UCODE_TLV_API_SCAN_TSF_REPORT = (__force iwl_ucode_tlv_api_t)28, | 252 | IWL_UCODE_TLV_API_SCAN_TSF_REPORT = (__force iwl_ucode_tlv_api_t)28, |
275 | 253 | ||
276 | NUM_IWL_UCODE_TLV_API | 254 | NUM_IWL_UCODE_TLV_API |
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c b/drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c index 8ff19210ef1e..2d6f44fbaf62 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c | |||
@@ -1578,8 +1578,7 @@ void iwl_mvm_vif_dbgfs_register(struct iwl_mvm *mvm, struct ieee80211_vif *vif) | |||
1578 | 1578 | ||
1579 | if (iwlmvm_mod_params.power_scheme != IWL_POWER_SCHEME_CAM && | 1579 | if (iwlmvm_mod_params.power_scheme != IWL_POWER_SCHEME_CAM && |
1580 | ((vif->type == NL80211_IFTYPE_STATION && !vif->p2p) || | 1580 | ((vif->type == NL80211_IFTYPE_STATION && !vif->p2p) || |
1581 | (vif->type == NL80211_IFTYPE_STATION && vif->p2p && | 1581 | (vif->type == NL80211_IFTYPE_STATION && vif->p2p))) |
1582 | mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_BSS_P2P_PS_DCM))) | ||
1583 | MVM_DEBUGFS_ADD_FILE_VIF(pm_params, mvmvif->dbgfs_dir, S_IWUSR | | 1582 | MVM_DEBUGFS_ADD_FILE_VIF(pm_params, mvmvif->dbgfs_dir, S_IWUSR | |
1584 | S_IRUSR); | 1583 | S_IRUSR); |
1585 | 1584 | ||
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw-api-power.h b/drivers/net/wireless/intel/iwlwifi/mvm/fw-api-power.h index 404b0de9e2dc..3fa43d1348a2 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/fw-api-power.h +++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw-api-power.h | |||
@@ -313,35 +313,26 @@ enum iwl_dev_tx_power_cmd_mode { | |||
313 | IWL_TX_POWER_MODE_SET_ACK = 3, | 313 | IWL_TX_POWER_MODE_SET_ACK = 3, |
314 | }; /* TX_POWER_REDUCED_FLAGS_TYPE_API_E_VER_4 */; | 314 | }; /* TX_POWER_REDUCED_FLAGS_TYPE_API_E_VER_4 */; |
315 | 315 | ||
316 | #define IWL_NUM_CHAIN_LIMITS 2 | ||
317 | #define IWL_NUM_SUB_BANDS 5 | ||
318 | |||
316 | /** | 319 | /** |
317 | * struct iwl_dev_tx_power_cmd_v2 - TX power reduction command | 320 | * struct iwl_dev_tx_power_cmd - TX power reduction command |
318 | * @set_mode: see &enum iwl_dev_tx_power_cmd_mode | 321 | * @set_mode: see &enum iwl_dev_tx_power_cmd_mode |
319 | * @mac_context_id: id of the mac ctx for which we are reducing TX power. | 322 | * @mac_context_id: id of the mac ctx for which we are reducing TX power. |
320 | * @pwr_restriction: TX power restriction in 1/8 dBms. | 323 | * @pwr_restriction: TX power restriction in 1/8 dBms. |
321 | * @dev_24: device TX power restriction in 1/8 dBms | 324 | * @dev_24: device TX power restriction in 1/8 dBms |
322 | * @dev_52_low: device TX power restriction upper band - low | 325 | * @dev_52_low: device TX power restriction upper band - low |
323 | * @dev_52_high: device TX power restriction upper band - high | 326 | * @dev_52_high: device TX power restriction upper band - high |
327 | * @per_chain_restriction: per chain restrictions | ||
324 | */ | 328 | */ |
325 | struct iwl_dev_tx_power_cmd_v2 { | 329 | struct iwl_dev_tx_power_cmd_v3 { |
326 | __le32 set_mode; | 330 | __le32 set_mode; |
327 | __le32 mac_context_id; | 331 | __le32 mac_context_id; |
328 | __le16 pwr_restriction; | 332 | __le16 pwr_restriction; |
329 | __le16 dev_24; | 333 | __le16 dev_24; |
330 | __le16 dev_52_low; | 334 | __le16 dev_52_low; |
331 | __le16 dev_52_high; | 335 | __le16 dev_52_high; |
332 | } __packed; /* TX_REDUCED_POWER_API_S_VER_2 */ | ||
333 | |||
334 | #define IWL_NUM_CHAIN_LIMITS 2 | ||
335 | #define IWL_NUM_SUB_BANDS 5 | ||
336 | |||
337 | /** | ||
338 | * struct iwl_dev_tx_power_cmd - TX power reduction command | ||
339 | * @v2: version 2 of the command, embedded here for easier software handling | ||
340 | * @per_chain_restriction: per chain restrictions | ||
341 | */ | ||
342 | struct iwl_dev_tx_power_cmd_v3 { | ||
343 | /* v3 is just an extension of v2 - keep this here */ | ||
344 | struct iwl_dev_tx_power_cmd_v2 v2; | ||
345 | __le16 per_chain_restriction[IWL_NUM_CHAIN_LIMITS][IWL_NUM_SUB_BANDS]; | 336 | __le16 per_chain_restriction[IWL_NUM_CHAIN_LIMITS][IWL_NUM_SUB_BANDS]; |
346 | } __packed; /* TX_REDUCED_POWER_API_S_VER_3 */ | 337 | } __packed; /* TX_REDUCED_POWER_API_S_VER_3 */ |
347 | 338 | ||
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw-api-tx.h b/drivers/net/wireless/intel/iwlwifi/mvm/fw-api-tx.h index 0055a960238b..57d29a1b7b8d 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/fw-api-tx.h +++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw-api-tx.h | |||
@@ -89,7 +89,6 @@ | |||
89 | * @TX_CMD_FLG_MH_PAD: driver inserted 2 byte padding after MAC header. | 89 | * @TX_CMD_FLG_MH_PAD: driver inserted 2 byte padding after MAC header. |
90 | * Should be set for 26/30 length MAC headers | 90 | * Should be set for 26/30 length MAC headers |
91 | * @TX_CMD_FLG_RESP_TO_DRV: zero this if the response should go only to FW | 91 | * @TX_CMD_FLG_RESP_TO_DRV: zero this if the response should go only to FW |
92 | * @TX_CMD_FLG_CCMP_AGG: this frame uses CCMP for aggregation acceleration | ||
93 | * @TX_CMD_FLG_TKIP_MIC_DONE: FW already performed TKIP MIC calculation | 92 | * @TX_CMD_FLG_TKIP_MIC_DONE: FW already performed TKIP MIC calculation |
94 | * @TX_CMD_FLG_DUR: disable duration overwriting used in PS-Poll Assoc-id | 93 | * @TX_CMD_FLG_DUR: disable duration overwriting used in PS-Poll Assoc-id |
95 | * @TX_CMD_FLG_FW_DROP: FW should mark frame to be dropped | 94 | * @TX_CMD_FLG_FW_DROP: FW should mark frame to be dropped |
@@ -116,7 +115,6 @@ enum iwl_tx_flags { | |||
116 | TX_CMD_FLG_KEEP_SEQ_CTL = BIT(18), | 115 | TX_CMD_FLG_KEEP_SEQ_CTL = BIT(18), |
117 | TX_CMD_FLG_MH_PAD = BIT(20), | 116 | TX_CMD_FLG_MH_PAD = BIT(20), |
118 | TX_CMD_FLG_RESP_TO_DRV = BIT(21), | 117 | TX_CMD_FLG_RESP_TO_DRV = BIT(21), |
119 | TX_CMD_FLG_CCMP_AGG = BIT(22), | ||
120 | TX_CMD_FLG_TKIP_MIC_DONE = BIT(23), | 118 | TX_CMD_FLG_TKIP_MIC_DONE = BIT(23), |
121 | TX_CMD_FLG_DUR = BIT(25), | 119 | TX_CMD_FLG_DUR = BIT(25), |
122 | TX_CMD_FLG_FW_DROP = BIT(26), | 120 | TX_CMD_FLG_FW_DROP = BIT(26), |
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c index 897412057d1f..872066317fa5 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c | |||
@@ -1046,19 +1046,11 @@ static int iwl_mvm_sar_init(struct iwl_mvm *mvm) | |||
1046 | { | 1046 | { |
1047 | struct iwl_mvm_sar_table sar_table; | 1047 | struct iwl_mvm_sar_table sar_table; |
1048 | struct iwl_dev_tx_power_cmd cmd = { | 1048 | struct iwl_dev_tx_power_cmd cmd = { |
1049 | .v3.v2.set_mode = cpu_to_le32(IWL_TX_POWER_MODE_SET_CHAINS), | 1049 | .v3.set_mode = cpu_to_le32(IWL_TX_POWER_MODE_SET_CHAINS), |
1050 | }; | 1050 | }; |
1051 | int ret, i, j, idx; | 1051 | int ret, i, j, idx; |
1052 | int len = sizeof(cmd); | 1052 | int len = sizeof(cmd); |
1053 | 1053 | ||
1054 | /* we can't do anything with the table if the FW doesn't support it */ | ||
1055 | if (!fw_has_api(&mvm->fw->ucode_capa, | ||
1056 | IWL_UCODE_TLV_API_TX_POWER_CHAIN)) { | ||
1057 | IWL_DEBUG_RADIO(mvm, | ||
1058 | "FW doesn't support per-chain TX power settings.\n"); | ||
1059 | return 0; | ||
1060 | } | ||
1061 | |||
1062 | if (!fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_TX_POWER_ACK)) | 1054 | if (!fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_TX_POWER_ACK)) |
1063 | len = sizeof(cmd.v3); | 1055 | len = sizeof(cmd.v3); |
1064 | 1056 | ||
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c index a5ede8c9bea2..318efd814037 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | |||
@@ -479,13 +479,11 @@ int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm) | |||
479 | hw->wiphy->n_cipher_suites++; | 479 | hw->wiphy->n_cipher_suites++; |
480 | } | 480 | } |
481 | 481 | ||
482 | /* | 482 | /* Enable 11w if software crypto is not enabled (as the |
483 | * Enable 11w if advertised by firmware and software crypto | 483 | * firmware will interpret some mgmt packets, so enabling it |
484 | * is not enabled (as the firmware will interpret some mgmt | 484 | * with software crypto isn't safe). |
485 | * packets, so enabling it with software crypto isn't safe) | ||
486 | */ | 485 | */ |
487 | if (mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_MFP && | 486 | if (!iwlwifi_mod_params.sw_crypto) { |
488 | !iwlwifi_mod_params.sw_crypto) { | ||
489 | ieee80211_hw_set(hw, MFP_CAPABLE); | 487 | ieee80211_hw_set(hw, MFP_CAPABLE); |
490 | mvm->ciphers[hw->wiphy->n_cipher_suites] = | 488 | mvm->ciphers[hw->wiphy->n_cipher_suites] = |
491 | WLAN_CIPHER_SUITE_AES_CMAC; | 489 | WLAN_CIPHER_SUITE_AES_CMAC; |
@@ -547,9 +545,7 @@ int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm) | |||
547 | hw->wiphy->regulatory_flags |= REGULATORY_CUSTOM_REG | | 545 | hw->wiphy->regulatory_flags |= REGULATORY_CUSTOM_REG | |
548 | REGULATORY_DISABLE_BEACON_HINTS; | 546 | REGULATORY_DISABLE_BEACON_HINTS; |
549 | 547 | ||
550 | if (mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_GO_UAPSD) | 548 | hw->wiphy->flags |= WIPHY_FLAG_AP_UAPSD; |
551 | hw->wiphy->flags |= WIPHY_FLAG_AP_UAPSD; | ||
552 | |||
553 | hw->wiphy->flags |= WIPHY_FLAG_HAS_CHANNEL_SWITCH; | 549 | hw->wiphy->flags |= WIPHY_FLAG_HAS_CHANNEL_SWITCH; |
554 | 550 | ||
555 | hw->wiphy->iface_combinations = iwl_mvm_iface_combinations; | 551 | hw->wiphy->iface_combinations = iwl_mvm_iface_combinations; |
@@ -1273,20 +1269,18 @@ static int iwl_mvm_set_tx_power(struct iwl_mvm *mvm, struct ieee80211_vif *vif, | |||
1273 | s16 tx_power) | 1269 | s16 tx_power) |
1274 | { | 1270 | { |
1275 | struct iwl_dev_tx_power_cmd cmd = { | 1271 | struct iwl_dev_tx_power_cmd cmd = { |
1276 | .v3.v2.set_mode = cpu_to_le32(IWL_TX_POWER_MODE_SET_MAC), | 1272 | .v3.set_mode = cpu_to_le32(IWL_TX_POWER_MODE_SET_MAC), |
1277 | .v3.v2.mac_context_id = | 1273 | .v3.mac_context_id = |
1278 | cpu_to_le32(iwl_mvm_vif_from_mac80211(vif)->id), | 1274 | cpu_to_le32(iwl_mvm_vif_from_mac80211(vif)->id), |
1279 | .v3.v2.pwr_restriction = cpu_to_le16(8 * tx_power), | 1275 | .v3.pwr_restriction = cpu_to_le16(8 * tx_power), |
1280 | }; | 1276 | }; |
1281 | int len = sizeof(cmd); | 1277 | int len = sizeof(cmd); |
1282 | 1278 | ||
1283 | if (tx_power == IWL_DEFAULT_MAX_TX_POWER) | 1279 | if (tx_power == IWL_DEFAULT_MAX_TX_POWER) |
1284 | cmd.v3.v2.pwr_restriction = cpu_to_le16(IWL_DEV_MAX_TX_POWER); | 1280 | cmd.v3.pwr_restriction = cpu_to_le16(IWL_DEV_MAX_TX_POWER); |
1285 | 1281 | ||
1286 | if (!fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_TX_POWER_ACK)) | 1282 | if (!fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_TX_POWER_ACK)) |
1287 | len = sizeof(cmd.v3); | 1283 | len = sizeof(cmd.v3); |
1288 | if (!fw_has_api(&mvm->fw->ucode_capa, IWL_UCODE_TLV_API_TX_POWER_CHAIN)) | ||
1289 | len = sizeof(cmd.v3.v2); | ||
1290 | 1284 | ||
1291 | return iwl_mvm_send_cmd_pdu(mvm, REDUCE_TX_POWER_CMD, 0, len, &cmd); | 1285 | return iwl_mvm_send_cmd_pdu(mvm, REDUCE_TX_POWER_CMD, 0, len, &cmd); |
1292 | } | 1286 | } |
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h index b7cfdcbcf95b..d17cbf603f7c 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h | |||
@@ -1305,8 +1305,6 @@ static inline void iwl_mvm_set_tx_cmd_ccmp(struct ieee80211_tx_info *info, | |||
1305 | 1305 | ||
1306 | tx_cmd->sec_ctl = TX_CMD_SEC_CCM; | 1306 | tx_cmd->sec_ctl = TX_CMD_SEC_CCM; |
1307 | memcpy(tx_cmd->key, keyconf->key, keyconf->keylen); | 1307 | memcpy(tx_cmd->key, keyconf->key, keyconf->keylen); |
1308 | if (info->flags & IEEE80211_TX_CTL_AMPDU) | ||
1309 | tx_cmd->tx_flags |= cpu_to_le32(TX_CMD_FLG_CCMP_AGG); | ||
1310 | } | 1308 | } |
1311 | 1309 | ||
1312 | static inline void iwl_mvm_wait_for_async_handlers(struct iwl_mvm *mvm) | 1310 | static inline void iwl_mvm_wait_for_async_handlers(struct iwl_mvm *mvm) |
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c index 6c08aa3fd2df..05fe6dd1a2c8 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c | |||
@@ -653,11 +653,9 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg, | |||
653 | /* the hardware splits the A-MSDU */ | 653 | /* the hardware splits the A-MSDU */ |
654 | if (mvm->cfg->mq_rx_supported) | 654 | if (mvm->cfg->mq_rx_supported) |
655 | trans_cfg.rx_buf_size = IWL_AMSDU_4K; | 655 | trans_cfg.rx_buf_size = IWL_AMSDU_4K; |
656 | trans->wide_cmd_header = fw_has_api(&mvm->fw->ucode_capa, | ||
657 | IWL_UCODE_TLV_API_WIDE_CMD_HDR); | ||
658 | 656 | ||
659 | if (mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_DW_BC_TABLE) | 657 | trans->wide_cmd_header = true; |
660 | trans_cfg.bc_table_dword = true; | 658 | trans_cfg.bc_table_dword = true; |
661 | 659 | ||
662 | trans_cfg.command_groups = iwl_mvm_groups; | 660 | trans_cfg.command_groups = iwl_mvm_groups; |
663 | trans_cfg.command_groups_size = ARRAY_SIZE(iwl_mvm_groups); | 661 | trans_cfg.command_groups_size = ARRAY_SIZE(iwl_mvm_groups); |
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/power.c b/drivers/net/wireless/intel/iwlwifi/mvm/power.c index ff85865b1dda..af6d10c23e5a 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/power.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/power.c | |||
@@ -694,8 +694,7 @@ static void iwl_mvm_power_set_pm(struct iwl_mvm *mvm, | |||
694 | 694 | ||
695 | /* enable PM on p2p if p2p stand alone */ | 695 | /* enable PM on p2p if p2p stand alone */ |
696 | if (vifs->p2p_active && !vifs->bss_active && !vifs->ap_active) { | 696 | if (vifs->p2p_active && !vifs->bss_active && !vifs->ap_active) { |
697 | if (mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_P2P_PM) | 697 | p2p_mvmvif->pm_enabled = true; |
698 | p2p_mvmvif->pm_enabled = true; | ||
699 | return; | 698 | return; |
700 | } | 699 | } |
701 | 700 | ||
@@ -707,12 +706,10 @@ static void iwl_mvm_power_set_pm(struct iwl_mvm *mvm, | |||
707 | ap_mvmvif->phy_ctxt->id); | 706 | ap_mvmvif->phy_ctxt->id); |
708 | 707 | ||
709 | /* clients are not stand alone: enable PM if DCM */ | 708 | /* clients are not stand alone: enable PM if DCM */ |
710 | if (!(client_same_channel || ap_same_channel) && | 709 | if (!(client_same_channel || ap_same_channel)) { |
711 | (mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_BSS_P2P_PS_DCM)) { | ||
712 | if (vifs->bss_active) | 710 | if (vifs->bss_active) |
713 | bss_mvmvif->pm_enabled = true; | 711 | bss_mvmvif->pm_enabled = true; |
714 | if (vifs->p2p_active && | 712 | if (vifs->p2p_active) |
715 | (mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_P2P_PM)) | ||
716 | p2p_mvmvif->pm_enabled = true; | 713 | p2p_mvmvif->pm_enabled = true; |
717 | return; | 714 | return; |
718 | } | 715 | } |
@@ -721,12 +718,10 @@ static void iwl_mvm_power_set_pm(struct iwl_mvm *mvm, | |||
721 | * There is only one channel in the system and there are only | 718 | * There is only one channel in the system and there are only |
722 | * bss and p2p clients that share it | 719 | * bss and p2p clients that share it |
723 | */ | 720 | */ |
724 | if (client_same_channel && !vifs->ap_active && | 721 | if (client_same_channel && !vifs->ap_active) { |
725 | (mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_BSS_P2P_PS_SCM)) { | ||
726 | /* share same channel*/ | 722 | /* share same channel*/ |
727 | bss_mvmvif->pm_enabled = true; | 723 | bss_mvmvif->pm_enabled = true; |
728 | if (mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_P2P_PM) | 724 | p2p_mvmvif->pm_enabled = true; |
729 | p2p_mvmvif->pm_enabled = true; | ||
730 | } | 725 | } |
731 | } | 726 | } |
732 | 727 | ||
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c index 00b03fc5807b..f279fdd6eb44 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c | |||
@@ -739,22 +739,6 @@ iwl_mvm_build_scan_probe(struct iwl_mvm *mvm, struct ieee80211_vif *vif, | |||
739 | params->preq.common_data.len = cpu_to_le16(ies->common_ie_len); | 739 | params->preq.common_data.len = cpu_to_le16(ies->common_ie_len); |
740 | } | 740 | } |
741 | 741 | ||
742 | static __le32 iwl_mvm_scan_priority(struct iwl_mvm *mvm, | ||
743 | enum iwl_scan_priority_ext prio) | ||
744 | { | ||
745 | if (fw_has_api(&mvm->fw->ucode_capa, | ||
746 | IWL_UCODE_TLV_API_EXT_SCAN_PRIORITY)) | ||
747 | return cpu_to_le32(prio); | ||
748 | |||
749 | if (prio <= IWL_SCAN_PRIORITY_EXT_2) | ||
750 | return cpu_to_le32(IWL_SCAN_PRIORITY_LOW); | ||
751 | |||
752 | if (prio <= IWL_SCAN_PRIORITY_EXT_4) | ||
753 | return cpu_to_le32(IWL_SCAN_PRIORITY_MEDIUM); | ||
754 | |||
755 | return cpu_to_le32(IWL_SCAN_PRIORITY_HIGH); | ||
756 | } | ||
757 | |||
758 | static void iwl_mvm_scan_lmac_dwell(struct iwl_mvm *mvm, | 742 | static void iwl_mvm_scan_lmac_dwell(struct iwl_mvm *mvm, |
759 | struct iwl_scan_req_lmac *cmd, | 743 | struct iwl_scan_req_lmac *cmd, |
760 | struct iwl_mvm_scan_params *params) | 744 | struct iwl_mvm_scan_params *params) |
@@ -765,7 +749,7 @@ static void iwl_mvm_scan_lmac_dwell(struct iwl_mvm *mvm, | |||
765 | cmd->extended_dwell = scan_timing[params->type].dwell_extended; | 749 | cmd->extended_dwell = scan_timing[params->type].dwell_extended; |
766 | cmd->max_out_time = cpu_to_le32(scan_timing[params->type].max_out_time); | 750 | cmd->max_out_time = cpu_to_le32(scan_timing[params->type].max_out_time); |
767 | cmd->suspend_time = cpu_to_le32(scan_timing[params->type].suspend_time); | 751 | cmd->suspend_time = cpu_to_le32(scan_timing[params->type].suspend_time); |
768 | cmd->scan_prio = iwl_mvm_scan_priority(mvm, IWL_SCAN_PRIORITY_EXT_6); | 752 | cmd->scan_prio = cpu_to_le32(IWL_SCAN_PRIORITY_EXT_6); |
769 | } | 753 | } |
770 | 754 | ||
771 | static inline bool iwl_mvm_scan_fits(struct iwl_mvm *mvm, int n_ssids, | 755 | static inline bool iwl_mvm_scan_fits(struct iwl_mvm *mvm, int n_ssids, |
@@ -1067,15 +1051,12 @@ static void iwl_mvm_scan_umac_dwell(struct iwl_mvm *mvm, | |||
1067 | cmd->fragmented_dwell = scan_timing[params->type].dwell_fragmented; | 1051 | cmd->fragmented_dwell = scan_timing[params->type].dwell_fragmented; |
1068 | cmd->max_out_time = cpu_to_le32(scan_timing[params->type].max_out_time); | 1052 | cmd->max_out_time = cpu_to_le32(scan_timing[params->type].max_out_time); |
1069 | cmd->suspend_time = cpu_to_le32(scan_timing[params->type].suspend_time); | 1053 | cmd->suspend_time = cpu_to_le32(scan_timing[params->type].suspend_time); |
1070 | cmd->scan_priority = | 1054 | cmd->scan_priority = cpu_to_le32(IWL_SCAN_PRIORITY_EXT_6); |
1071 | iwl_mvm_scan_priority(mvm, IWL_SCAN_PRIORITY_EXT_6); | ||
1072 | 1055 | ||
1073 | if (iwl_mvm_is_regular_scan(params)) | 1056 | if (iwl_mvm_is_regular_scan(params)) |
1074 | cmd->ooc_priority = | 1057 | cmd->ooc_priority = cpu_to_le32(IWL_SCAN_PRIORITY_EXT_6); |
1075 | iwl_mvm_scan_priority(mvm, IWL_SCAN_PRIORITY_EXT_6); | ||
1076 | else | 1058 | else |
1077 | cmd->ooc_priority = | 1059 | cmd->ooc_priority = cpu_to_le32(IWL_SCAN_PRIORITY_EXT_2); |
1078 | iwl_mvm_scan_priority(mvm, IWL_SCAN_PRIORITY_EXT_2); | ||
1079 | } | 1060 | } |
1080 | 1061 | ||
1081 | static void | 1062 | static void |
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tt.c b/drivers/net/wireless/intel/iwlwifi/mvm/tt.c index 58fc7b3c711c..63a051be832e 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/tt.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/tt.c | |||
@@ -241,11 +241,8 @@ static int iwl_mvm_get_temp_cmd(struct iwl_mvm *mvm) | |||
241 | }; | 241 | }; |
242 | u32 cmdid; | 242 | u32 cmdid; |
243 | 243 | ||
244 | if (fw_has_api(&mvm->fw->ucode_capa, IWL_UCODE_TLV_API_WIDE_CMD_HDR)) | 244 | cmdid = iwl_cmd_id(CMD_DTS_MEASUREMENT_TRIGGER_WIDE, |
245 | cmdid = iwl_cmd_id(CMD_DTS_MEASUREMENT_TRIGGER_WIDE, | 245 | PHY_OPS_GROUP, 0); |
246 | PHY_OPS_GROUP, 0); | ||
247 | else | ||
248 | cmdid = CMD_DTS_MEASUREMENT_TRIGGER; | ||
249 | 246 | ||
250 | if (!fw_has_capa(&mvm->fw->ucode_capa, | 247 | if (!fw_has_capa(&mvm->fw->ucode_capa, |
251 | IWL_UCODE_TLV_CAPA_EXTENDED_DTS_MEASURE)) | 248 | IWL_UCODE_TLV_CAPA_EXTENDED_DTS_MEASURE)) |
@@ -261,9 +258,6 @@ int iwl_mvm_get_temp(struct iwl_mvm *mvm, s32 *temp) | |||
261 | DTS_MEASUREMENT_NOTIF_WIDE) }; | 258 | DTS_MEASUREMENT_NOTIF_WIDE) }; |
262 | int ret; | 259 | int ret; |
263 | 260 | ||
264 | if (!fw_has_api(&mvm->fw->ucode_capa, IWL_UCODE_TLV_API_WIDE_CMD_HDR)) | ||
265 | temp_notif[0] = DTS_MEASUREMENT_NOTIFICATION; | ||
266 | |||
267 | lockdep_assert_held(&mvm->mutex); | 261 | lockdep_assert_held(&mvm->mutex); |
268 | 262 | ||
269 | iwl_init_notification_wait(&mvm->notif_wait, &wait_temp_notif, | 263 | iwl_init_notification_wait(&mvm->notif_wait, &wait_temp_notif, |