Commit 64e23305 authored by Kalle Valo's avatar Kalle Valo
Browse files

Merge tag 'iwlwifi-next-for-kalle-2019-01-25' of...

Merge tag 'iwlwifi-next-for-kalle-2019-01-25' of git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-next

First batch of iwlwifi patches intended for v5.1

* Support for Target Wakeup Time (TWT) -- a feature that allows the AP
  to specify when individual stations can access the medium;
* Support for mac80211 AMSDU handling;
* Debugging infrastructure work;
* Preparations for improvements in the device selection code;
* Some new PCI IDs;
* Some updates in the documentation;
* A bunch of fixes for issues found with static analyzers;
* A couple of janitorial fixes from the community;
* Some fixes in P2P;
* Other cleanups and small fixes;
parents 4ad0be16 ec95b270
Loading
Loading
Loading
Loading
+66 −2
Original line number Diff line number Diff line
@@ -83,6 +83,7 @@
#define IWL_22000_HR_A0_FW_PRE		"iwlwifi-QuQnj-a0-hr-a0-"
#define IWL_22000_SU_Z0_FW_PRE		"iwlwifi-su-z0-"
#define IWL_QU_B_JF_B_FW_PRE		"iwlwifi-Qu-b0-jf-b0-"
#define IWL_CC_A_FW_PRE			"iwlwifi-cc-a0-"

#define IWL_22000_HR_MODULE_FIRMWARE(api) \
	IWL_22000_HR_FW_PRE __stringify(api) ".ucode"
@@ -104,6 +105,8 @@
	IWL_22000_SU_Z0_FW_PRE __stringify(api) ".ucode"
#define IWL_QU_B_JF_B_MODULE_FIRMWARE(api) \
	IWL_QU_B_JF_B_FW_PRE __stringify(api) ".ucode"
#define IWL_CC_A_MODULE_FIRMWARE(api) \
	IWL_CC_A_FW_PRE __stringify(api) ".ucode"

static const struct iwl_base_params iwl_22000_base_params = {
	.eeprom_size = OTP_LOW_IMAGE_SIZE_32K,
@@ -195,8 +198,8 @@ const struct iwl_cfg iwl22000_2ac_cfg_jf = {
	IWL_DEVICE_22500,
};

const struct iwl_cfg iwl22000_2ax_cfg_hr = {
	.name = "Intel(R) Dual Band Wireless AX 22000",
const struct iwl_cfg iwl22560_2ax_cfg_hr = {
	.name = "Intel(R) Wireless-AX 22560",
	.fw_name_pre = IWL_22000_QU_B_HR_B_FW_PRE,
	IWL_DEVICE_22500,
	/*
@@ -207,6 +210,42 @@ const struct iwl_cfg iwl22000_2ax_cfg_hr = {
	.max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
};

const struct iwl_cfg iwl22260_2ax_cfg = {
	.name = "Intel(R) Wireless-AX 22260",
	.fw_name_pre = IWL_CC_A_FW_PRE,
	IWL_DEVICE_22500,
	/*
	 * This device doesn't support receiving BlockAck with a large bitmap
	 * so we need to restrict the size of transmitted aggregation to the
	 * HT size; mac80211 would otherwise pick the HE max (256) by default.
	 */
	.max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
};

const struct iwl_cfg killer1650x_2ax_cfg = {
	.name = "Killer(R) Wireless-AX 1650x Wireless Network Adapter (22260NGW)",
	.fw_name_pre = IWL_CC_A_FW_PRE,
	IWL_DEVICE_22500,
	/*
	 * This device doesn't support receiving BlockAck with a large bitmap
	 * so we need to restrict the size of transmitted aggregation to the
	 * HT size; mac80211 would otherwise pick the HE max (256) by default.
	 */
	.max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
};

const struct iwl_cfg killer1650w_2ax_cfg = {
	.name = "Killer(R) Wireless-AX 1650w Wireless Network Adapter (22260D2W)",
	.fw_name_pre = IWL_CC_A_FW_PRE,
	IWL_DEVICE_22500,
	/*
	 * This device doesn't support receiving BlockAck with a large bitmap
	 * so we need to restrict the size of transmitted aggregation to the
	 * HT size; mac80211 would otherwise pick the HE max (256) by default.
	 */
	.max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
};

/*
 * All JF radio modules are part of the 9000 series, but the MAC part
 * looks more like 22000.  That's why this device is here, but called
@@ -242,6 +281,30 @@ const struct iwl_cfg killer1550s_2ac_cfg_qu_b0_jf_b0 = {
	IWL_DEVICE_22500,
};

const struct iwl_cfg killer1650s_2ax_cfg_qu_b0_hr_b0 = {
	.name = "Killer(R) Wireless-AX 1650i Wireless Network Adapter (22560NGW)",
	.fw_name_pre = IWL_22000_QU_B_HR_B_FW_PRE,
	IWL_DEVICE_22500,
	/*
	 * This device doesn't support receiving BlockAck with a large bitmap
	 * so we need to restrict the size of transmitted aggregation to the
	 * HT size; mac80211 would otherwise pick the HE max (256) by default.
	 */
	.max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
};

const struct iwl_cfg killer1650i_2ax_cfg_qu_b0_hr_b0 = {
	.name = "Killer(R) Wireless-AX 1650s Wireless Network Adapter (22560D2W)",
	.fw_name_pre = IWL_22000_QU_B_HR_B_FW_PRE,
	IWL_DEVICE_22500,
	/*
	 * This device doesn't support receiving BlockAck with a large bitmap
	 * so we need to restrict the size of transmitted aggregation to the
	 * HT size; mac80211 would otherwise pick the HE max (256) by default.
	 */
	.max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
};

const struct iwl_cfg iwl22000_2ax_cfg_jf = {
	.name = "Intel(R) Dual Band Wireless AX 22000",
	.fw_name_pre = IWL_QU_B_JF_B_FW_PRE,
@@ -324,3 +387,4 @@ MODULE_FIRMWARE(IWL_22000_JF_B0_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
MODULE_FIRMWARE(IWL_22000_HR_A0_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
MODULE_FIRMWARE(IWL_22000_SU_Z0_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
MODULE_FIRMWARE(IWL_QU_B_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
MODULE_FIRMWARE(IWL_CC_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
+34 −76
Original line number Diff line number Diff line
@@ -73,21 +73,12 @@
#define IWL9000_SMEM_OFFSET		0x400000
#define IWL9000_SMEM_LEN		0x68000

#define  IWL9000A_FW_PRE "iwlwifi-9000-pu-a0-jf-a0-"
#define  IWL9000B_FW_PRE "iwlwifi-9000-pu-b0-jf-b0-"
#define  IWL9000RFB_FW_PRE "iwlwifi-9000-pu-a0-jf-b0-"
#define  IWL9260A_FW_PRE "iwlwifi-9260-th-a0-jf-a0-"
#define  IWL9260B_FW_PRE "iwlwifi-9260-th-b0-jf-b0-"
#define IWL9000A_MODULE_FIRMWARE(api) \
	IWL9000A_FW_PRE __stringify(api) ".ucode"
#define IWL9000B_MODULE_FIRMWARE(api) \
	IWL9000B_FW_PRE __stringify(api) ".ucode"
#define IWL9000RFB_MODULE_FIRMWARE(api) \
	IWL9000RFB_FW_PRE __stringify(api) ".ucode"
#define IWL9260A_MODULE_FIRMWARE(api) \
	IWL9260A_FW_PRE __stringify(api) ".ucode"
#define IWL9260B_MODULE_FIRMWARE(api) \
	IWL9260B_FW_PRE __stringify(api) ".ucode"
#define  IWL9000_FW_PRE "iwlwifi-9000-pu-b0-jf-b0-"
#define  IWL9260_FW_PRE "iwlwifi-9260-th-b0-jf-b0-"
#define IWL9000_MODULE_FIRMWARE(api) \
	IWL9000_FW_PRE __stringify(api) ".ucode"
#define IWL9260_MODULE_FIRMWARE(api) \
	IWL9260_FW_PRE __stringify(api) ".ucode"

static const struct iwl_base_params iwl9000_base_params = {
	.eeprom_size = OTP_LOW_IMAGE_SIZE_32K,
@@ -162,44 +153,37 @@ static const struct iwl_tt_params iwl9000_tt_params = {

const struct iwl_cfg iwl9160_2ac_cfg = {
	.name = "Intel(R) Dual Band Wireless AC 9160",
	.fw_name_pre = IWL9260A_FW_PRE,
	.fw_name_pre_b_or_c_step = IWL9260B_FW_PRE,
	.fw_name_pre = IWL9260_FW_PRE,
	IWL_DEVICE_9000,
};

const struct iwl_cfg iwl9260_2ac_cfg = {
	.name = "Intel(R) Dual Band Wireless AC 9260",
	.fw_name_pre = IWL9260A_FW_PRE,
	.fw_name_pre_b_or_c_step = IWL9260B_FW_PRE,
	.fw_name_pre = IWL9260_FW_PRE,
	IWL_DEVICE_9000,
};

const struct iwl_cfg iwl9260_killer_2ac_cfg = {
	.name = "Killer (R) Wireless-AC 1550 Wireless Network Adapter (9260NGW)",
	.fw_name_pre = IWL9260A_FW_PRE,
	.fw_name_pre_b_or_c_step = IWL9260B_FW_PRE,
	.fw_name_pre = IWL9260_FW_PRE,
	IWL_DEVICE_9000,
};

const struct iwl_cfg iwl9270_2ac_cfg = {
	.name = "Intel(R) Dual Band Wireless AC 9270",
	.fw_name_pre = IWL9260A_FW_PRE,
	.fw_name_pre_b_or_c_step = IWL9260B_FW_PRE,
	.fw_name_pre = IWL9260_FW_PRE,
	IWL_DEVICE_9000,
};

const struct iwl_cfg iwl9460_2ac_cfg = {
	.name = "Intel(R) Dual Band Wireless AC 9460",
	.fw_name_pre = IWL9260A_FW_PRE,
	.fw_name_pre_b_or_c_step = IWL9260B_FW_PRE,
	.fw_name_pre = IWL9260_FW_PRE,
	IWL_DEVICE_9000,
};

const struct iwl_cfg iwl9460_2ac_cfg_soc = {
	.name = "Intel(R) Dual Band Wireless AC 9460",
	.fw_name_pre = IWL9000A_FW_PRE,
	.fw_name_pre_b_or_c_step = IWL9000B_FW_PRE,
	.fw_name_pre_rf_next_step = IWL9000RFB_FW_PRE,
	.fw_name_pre = IWL9000_FW_PRE,
	IWL_DEVICE_9000,
	.integrated = true,
	.soc_latency = 5000,
@@ -207,9 +191,7 @@ const struct iwl_cfg iwl9460_2ac_cfg_soc = {

const struct iwl_cfg iwl9461_2ac_cfg_soc = {
	.name = "Intel(R) Dual Band Wireless AC 9461",
		.fw_name_pre = IWL9000A_FW_PRE,
		.fw_name_pre_b_or_c_step = IWL9000B_FW_PRE,
		.fw_name_pre_rf_next_step = IWL9000RFB_FW_PRE,
	.fw_name_pre = IWL9000_FW_PRE,
	IWL_DEVICE_9000,
	.integrated = true,
	.soc_latency = 5000,
@@ -217,9 +199,7 @@ const struct iwl_cfg iwl9461_2ac_cfg_soc = {

const struct iwl_cfg iwl9462_2ac_cfg_soc = {
	.name = "Intel(R) Dual Band Wireless AC 9462",
		.fw_name_pre = IWL9000A_FW_PRE,
		.fw_name_pre_b_or_c_step = IWL9000B_FW_PRE,
		.fw_name_pre_rf_next_step = IWL9000RFB_FW_PRE,
	.fw_name_pre = IWL9000_FW_PRE,
	IWL_DEVICE_9000,
	.integrated = true,
	.soc_latency = 5000,
@@ -227,16 +207,13 @@ const struct iwl_cfg iwl9462_2ac_cfg_soc = {

const struct iwl_cfg iwl9560_2ac_cfg = {
	.name = "Intel(R) Dual Band Wireless AC 9560",
	.fw_name_pre = IWL9260A_FW_PRE,
	.fw_name_pre_b_or_c_step = IWL9260B_FW_PRE,
	.fw_name_pre = IWL9260_FW_PRE,
	IWL_DEVICE_9000,
};

const struct iwl_cfg iwl9560_2ac_cfg_soc = {
	.name = "Intel(R) Dual Band Wireless AC 9560",
	.fw_name_pre = IWL9000A_FW_PRE,
	.fw_name_pre_b_or_c_step = IWL9000B_FW_PRE,
	.fw_name_pre_rf_next_step = IWL9000RFB_FW_PRE,
	.fw_name_pre = IWL9000_FW_PRE,
	IWL_DEVICE_9000,
	.integrated = true,
	.soc_latency = 5000,
@@ -244,9 +221,7 @@ const struct iwl_cfg iwl9560_2ac_cfg_soc = {

const struct iwl_cfg iwl9560_killer_2ac_cfg_soc = {
	.name = "Killer (R) Wireless-AC 1550i Wireless Network Adapter (9560NGW)",
	.fw_name_pre = IWL9000A_FW_PRE,
	.fw_name_pre_b_or_c_step = IWL9000B_FW_PRE,
	.fw_name_pre_rf_next_step = IWL9000RFB_FW_PRE,
	.fw_name_pre = IWL9000_FW_PRE,
	IWL_DEVICE_9000,
	.integrated = true,
	.soc_latency = 5000,
@@ -254,9 +229,7 @@ const struct iwl_cfg iwl9560_killer_2ac_cfg_soc = {

const struct iwl_cfg iwl9560_killer_s_2ac_cfg_soc = {
	.name = "Killer (R) Wireless-AC 1550s Wireless Network Adapter (9560NGW)",
	.fw_name_pre = IWL9000A_FW_PRE,
	.fw_name_pre_b_or_c_step = IWL9000B_FW_PRE,
	.fw_name_pre_rf_next_step = IWL9000RFB_FW_PRE,
	.fw_name_pre = IWL9000_FW_PRE,
	IWL_DEVICE_9000,
	.integrated = true,
	.soc_latency = 5000,
@@ -264,9 +237,7 @@ const struct iwl_cfg iwl9560_killer_s_2ac_cfg_soc = {

const struct iwl_cfg iwl9460_2ac_cfg_shared_clk = {
	.name = "Intel(R) Dual Band Wireless AC 9460",
	.fw_name_pre = IWL9000A_FW_PRE,
	.fw_name_pre_b_or_c_step = IWL9000B_FW_PRE,
	.fw_name_pre_rf_next_step = IWL9000RFB_FW_PRE,
	.fw_name_pre = IWL9000_FW_PRE,
	IWL_DEVICE_9000,
	.integrated = true,
	.soc_latency = 5000,
@@ -275,9 +246,7 @@ const struct iwl_cfg iwl9460_2ac_cfg_shared_clk = {

const struct iwl_cfg iwl9461_2ac_cfg_shared_clk = {
	.name = "Intel(R) Dual Band Wireless AC 9461",
	.fw_name_pre = IWL9000A_FW_PRE,
	.fw_name_pre_b_or_c_step = IWL9000B_FW_PRE,
	.fw_name_pre_rf_next_step = IWL9000RFB_FW_PRE,
	.fw_name_pre = IWL9000_FW_PRE,
	IWL_DEVICE_9000,
	.integrated = true,
	.soc_latency = 5000,
@@ -286,9 +255,7 @@ const struct iwl_cfg iwl9461_2ac_cfg_shared_clk = {

const struct iwl_cfg iwl9462_2ac_cfg_shared_clk = {
	.name = "Intel(R) Dual Band Wireless AC 9462",
	.fw_name_pre = IWL9000A_FW_PRE,
	.fw_name_pre_b_or_c_step = IWL9000B_FW_PRE,
	.fw_name_pre_rf_next_step = IWL9000RFB_FW_PRE,
	.fw_name_pre = IWL9000_FW_PRE,
	IWL_DEVICE_9000,
	.integrated = true,
	.soc_latency = 5000,
@@ -297,9 +264,7 @@ const struct iwl_cfg iwl9462_2ac_cfg_shared_clk = {

const struct iwl_cfg iwl9560_2ac_cfg_shared_clk = {
	.name = "Intel(R) Dual Band Wireless AC 9560",
	.fw_name_pre = IWL9000A_FW_PRE,
	.fw_name_pre_b_or_c_step = IWL9000B_FW_PRE,
	.fw_name_pre_rf_next_step = IWL9000RFB_FW_PRE,
	.fw_name_pre = IWL9000_FW_PRE,
	IWL_DEVICE_9000,
	.integrated = true,
	.soc_latency = 5000,
@@ -308,9 +273,7 @@ const struct iwl_cfg iwl9560_2ac_cfg_shared_clk = {

const struct iwl_cfg iwl9560_killer_2ac_cfg_shared_clk = {
	.name = "Killer (R) Wireless-AC 1550i Wireless Network Adapter (9560NGW)",
	.fw_name_pre = IWL9000A_FW_PRE,
	.fw_name_pre_b_or_c_step = IWL9000B_FW_PRE,
	.fw_name_pre_rf_next_step = IWL9000RFB_FW_PRE,
	.fw_name_pre = IWL9000_FW_PRE,
	IWL_DEVICE_9000,
	.integrated = true,
	.soc_latency = 5000,
@@ -319,17 +282,12 @@ const struct iwl_cfg iwl9560_killer_2ac_cfg_shared_clk = {

const struct iwl_cfg iwl9560_killer_s_2ac_cfg_shared_clk = {
	.name = "Killer (R) Wireless-AC 1550s Wireless Network Adapter (9560NGW)",
	.fw_name_pre = IWL9000A_FW_PRE,
	.fw_name_pre_b_or_c_step = IWL9000B_FW_PRE,
	.fw_name_pre_rf_next_step = IWL9000RFB_FW_PRE,
	.fw_name_pre = IWL9000_FW_PRE,
	IWL_DEVICE_9000,
	.integrated = true,
	.soc_latency = 5000,
	.extra_phy_cfg_flags = FW_PHY_CFG_SHARED_CLK
};

MODULE_FIRMWARE(IWL9000A_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX));
MODULE_FIRMWARE(IWL9000B_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX));
MODULE_FIRMWARE(IWL9000RFB_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX));
MODULE_FIRMWARE(IWL9260A_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX));
MODULE_FIRMWARE(IWL9260B_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX));
MODULE_FIRMWARE(IWL9000_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX));
MODULE_FIRMWARE(IWL9260_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX));
+1 −1
Original line number Diff line number Diff line
@@ -1054,7 +1054,7 @@ static void iwl_bg_restart(struct work_struct *data)
			ieee80211_restart_hw(priv->hw);
		else
			IWL_ERR(priv,
				"Cannot request restart before registrating with mac80211\n");
				"Cannot request restart before registering with mac80211\n");
	} else {
		WARN_ON(1);
	}
+6 −2
Original line number Diff line number Diff line
@@ -415,7 +415,11 @@ enum iwl_legacy_cmds {
	TX_ANT_CONFIGURATION_CMD = 0x98,

	/**
	 * @STATISTICS_CMD: &struct iwl_statistics_cmd
	 * @STATISTICS_CMD:
	 * one of &struct iwl_statistics_cmd,
	 * &struct iwl_notif_statistics_v11,
	 * &struct iwl_notif_statistics_v10,
	 * &struct iwl_notif_statistics
	 */
	STATISTICS_CMD = 0x9c,

@@ -423,7 +427,7 @@ enum iwl_legacy_cmds {
	 * @STATISTICS_NOTIFICATION:
	 * one of &struct iwl_notif_statistics_v10,
	 * &struct iwl_notif_statistics_v11,
	 * &struct iwl_notif_statistics_cdb
	 * &struct iwl_notif_statistics
	 */
	STATISTICS_NOTIFICATION = 0x9d,

+10 −0
Original line number Diff line number Diff line
@@ -224,8 +224,18 @@ struct iwl_wowlan_pattern {

#define IWL_WOWLAN_MAX_PATTERNS	20

/**
 * struct iwl_wowlan_patterns_cmd - WoWLAN wakeup patterns
 */
struct iwl_wowlan_patterns_cmd {
	/**
	 * @n_patterns: number of patterns
	 */
	__le32 n_patterns;

	/**
	 * @patterns: the patterns, array length in @n_patterns
	 */
	struct iwl_wowlan_pattern patterns[];
} __packed; /* WOWLAN_PATTERN_ARRAY_API_S_VER_1 */

Loading