aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEran Harary <eran.harary@intel.com>2014-07-27 01:03:06 -0400
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>2014-09-14 05:56:37 -0400
commit161bdb7780548918027511f1a2885e9b99d28482 (patch)
treedb28186e1b11cdc0733029be0128e24aa9368ba2
parentd4200cb2487042291a056d4364450947344362e1 (diff)
iwlwifi: mvm: allow preventing dummy notifications
The firwmare now allows the driver to disable dummy notifications. These notifications sent by the firmware are an overhead for slow buses. They are still useful for fast buses. Add a hardware switch to prevent these notifications only on devices that work on slow buses. Signed-off-by: Eran <eran.harary@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-8000.c1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-config.h1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-fw.h2
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/fw-api.h2
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/sf.c4
5 files changed, 10 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-8000.c b/drivers/net/wireless/iwlwifi/iwl-8000.c
index 3c576ee315fd..c1ef1653c7ad 100644
--- a/drivers/net/wireless/iwlwifi/iwl-8000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-8000.c
@@ -144,6 +144,7 @@ const struct iwl_cfg iwl8260_2ac_sdio_cfg = {
144 .nvm_calib_ver = IWL8000_TX_POWER_VERSION, 144 .nvm_calib_ver = IWL8000_TX_POWER_VERSION,
145 .default_nvm_file = DEFAULT_NVM_FILE_FAMILY_8000, 145 .default_nvm_file = DEFAULT_NVM_FILE_FAMILY_8000,
146 .max_rx_agg_size = MAX_RX_AGG_SIZE_8260_SDIO, 146 .max_rx_agg_size = MAX_RX_AGG_SIZE_8260_SDIO,
147 .disable_dummy_notification = true,
147}; 148};
148 149
149MODULE_FIRMWARE(IWL8000_MODULE_FIRMWARE(IWL8000_UCODE_API_OK)); 150MODULE_FIRMWARE(IWL8000_MODULE_FIRMWARE(IWL8000_UCODE_API_OK));
diff --git a/drivers/net/wireless/iwlwifi/iwl-config.h b/drivers/net/wireless/iwlwifi/iwl-config.h
index 1b9c77d9f1b8..687e9e1adbda 100644
--- a/drivers/net/wireless/iwlwifi/iwl-config.h
+++ b/drivers/net/wireless/iwlwifi/iwl-config.h
@@ -282,6 +282,7 @@ struct iwl_cfg {
282 bool no_power_up_nic_in_init; 282 bool no_power_up_nic_in_init;
283 const char *default_nvm_file; 283 const char *default_nvm_file;
284 unsigned int max_rx_agg_size; 284 unsigned int max_rx_agg_size;
285 bool disable_dummy_notification;
285}; 286};
286 287
287/* 288/*
diff --git a/drivers/net/wireless/iwlwifi/iwl-fw.h b/drivers/net/wireless/iwlwifi/iwl-fw.h
index f68cba4e0444..62c46eb8b99c 100644
--- a/drivers/net/wireless/iwlwifi/iwl-fw.h
+++ b/drivers/net/wireless/iwlwifi/iwl-fw.h
@@ -127,6 +127,7 @@ enum iwl_ucode_tlv_flag {
127 * @IWL_UCODE_TLV_API_CSA_FLOW: ucode can do unbind-bind flow for CSA. 127 * @IWL_UCODE_TLV_API_CSA_FLOW: ucode can do unbind-bind flow for CSA.
128 * @IWL_UCODE_TLV_API_DISABLE_STA_TX: ucode supports tx_disable bit. 128 * @IWL_UCODE_TLV_API_DISABLE_STA_TX: ucode supports tx_disable bit.
129 * @IWL_UCODE_TLV_API_LMAC_SCAN: This ucode uses LMAC unified scan API. 129 * @IWL_UCODE_TLV_API_LMAC_SCAN: This ucode uses LMAC unified scan API.
130 * @IWL_UCODE_TLV_API_SF_NO_DUMMY_NOTIF: ucode supports disabling dummy notif.
130 * @IWL_UCODE_TLV_API_FRAGMENTED_SCAN: This ucode supports active dwell time 131 * @IWL_UCODE_TLV_API_FRAGMENTED_SCAN: This ucode supports active dwell time
131 * longer than the passive one, which is essential for fragmented scan. 132 * longer than the passive one, which is essential for fragmented scan.
132 */ 133 */
@@ -137,6 +138,7 @@ enum iwl_ucode_tlv_api {
137 IWL_UCODE_TLV_API_CSA_FLOW = BIT(4), 138 IWL_UCODE_TLV_API_CSA_FLOW = BIT(4),
138 IWL_UCODE_TLV_API_DISABLE_STA_TX = BIT(5), 139 IWL_UCODE_TLV_API_DISABLE_STA_TX = BIT(5),
139 IWL_UCODE_TLV_API_LMAC_SCAN = BIT(6), 140 IWL_UCODE_TLV_API_LMAC_SCAN = BIT(6),
141 IWL_UCODE_TLV_API_SF_NO_DUMMY_NOTIF = BIT(7),
140 IWL_UCODE_TLV_API_FRAGMENTED_SCAN = BIT(8), 142 IWL_UCODE_TLV_API_FRAGMENTED_SCAN = BIT(8),
141}; 143};
142 144
diff --git a/drivers/net/wireless/iwlwifi/mvm/fw-api.h b/drivers/net/wireless/iwlwifi/mvm/fw-api.h
index 541b844c6b5d..b599b5288982 100644
--- a/drivers/net/wireless/iwlwifi/mvm/fw-api.h
+++ b/drivers/net/wireless/iwlwifi/mvm/fw-api.h
@@ -1601,6 +1601,8 @@ enum iwl_sf_scenario {
1601 1601
1602#define SF_LONG_DELAY_AGING_TIMER 1000000 /* 1 Sec */ 1602#define SF_LONG_DELAY_AGING_TIMER 1000000 /* 1 Sec */
1603 1603
1604#define SF_CFG_DUMMY_NOTIF_OFF BIT(16)
1605
1604/** 1606/**
1605 * Smart Fifo configuration command. 1607 * Smart Fifo configuration command.
1606 * @state: smart fifo state, types listed in enum %iwl_sf_sate. 1608 * @state: smart fifo state, types listed in enum %iwl_sf_sate.
diff --git a/drivers/net/wireless/iwlwifi/mvm/sf.c b/drivers/net/wireless/iwlwifi/mvm/sf.c
index f88410c7cbfb..7eb78e2c240a 100644
--- a/drivers/net/wireless/iwlwifi/mvm/sf.c
+++ b/drivers/net/wireless/iwlwifi/mvm/sf.c
@@ -179,6 +179,10 @@ static int iwl_mvm_sf_config(struct iwl_mvm *mvm, u8 sta_id,
179 struct ieee80211_sta *sta; 179 struct ieee80211_sta *sta;
180 int ret = 0; 180 int ret = 0;
181 181
182 if (mvm->fw->ucode_capa.api[0] & IWL_UCODE_TLV_API_SF_NO_DUMMY_NOTIF &&
183 mvm->cfg->disable_dummy_notification)
184 sf_cmd.state |= cpu_to_le32(SF_CFG_DUMMY_NOTIF_OFF);
185
182 /* 186 /*
183 * If an associated AP sta changed its antenna configuration, the state 187 * If an associated AP sta changed its antenna configuration, the state
184 * will remain FULL_ON but SF parameters need to be reconsidered. 188 * will remain FULL_ON but SF parameters need to be reconsidered.