Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 324640e3 authored by John W. Linville's avatar John W. Linville
Browse files
parents ce77903c 8d40f4ee
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -568,7 +568,6 @@ enum iwl_scan_type {
 *
 * @tx_chains_num: Number of TX chains
 * @rx_chains_num: Number of RX chains
 * @sku: sku read from EEPROM
 * @ct_kill_threshold: temperature threshold - in hw dependent unit
 * @ct_kill_exit_threshold: when to reeable the device - in hw dependent unit
 *	relevant for 1000, 6000 and up
@@ -579,7 +578,6 @@ struct iwl_hw_params {
	u8  tx_chains_num;
	u8  rx_chains_num;
	bool use_rts_for_aggregation;
	u16 sku;
	u32 ct_kill_threshold;
	u32 ct_kill_exit_threshold;

+0 −13
Original line number Diff line number Diff line
@@ -250,17 +250,6 @@ struct iwl_lib_ops iwl2030_lib = {
 */

/* NIC configuration for 5000 series */
static void iwl5000_nic_config(struct iwl_priv *priv)
{
	/* W/A : NIC is stuck in a reset state after Early PCIe power off
	 * (PCIe power is lost before PERST# is asserted),
	 * causing ME FW to lose ownership and not being able to obtain it back.
	 */
	iwl_set_bits_mask_prph(priv->trans, APMG_PS_CTRL_REG,
				APMG_PS_CTRL_EARLY_PWR_OFF_RESET_DIS,
				~APMG_PS_CTRL_EARLY_PWR_OFF_RESET_DIS);
}

static const struct iwl_sensitivity_ranges iwl5000_sensitivity = {
	.min_nrg_cck = 100,
	.auto_corr_min_ofdm = 90,
@@ -433,14 +422,12 @@ static int iwl5000_hw_channel_switch(struct iwl_priv *priv,
struct iwl_lib_ops iwl5000_lib = {
	.set_hw_params = iwl5000_hw_set_hw_params,
	.set_channel_switch = iwl5000_hw_channel_switch,
	.nic_config = iwl5000_nic_config,
	.temperature = iwlagn_temperature,
};

struct iwl_lib_ops iwl5150_lib = {
	.set_hw_params = iwl5150_hw_set_hw_params,
	.set_channel_switch = iwl5000_hw_channel_switch,
	.nic_config = iwl5000_nic_config,
	.temperature = iwl5150_temperature,
};

+1 −1
Original line number Diff line number Diff line
@@ -160,7 +160,7 @@ int iwlagn_txfifo_flush(struct iwl_priv *priv, u16 flush_control)
				IWL_PAN_SCD_BK_MSK | IWL_PAN_SCD_MGMT_MSK |
				IWL_PAN_SCD_MULTICAST_MSK;

	if (priv->hw_params.sku & EEPROM_SKU_CAP_11N_ENABLE)
	if (priv->eeprom_data->sku & EEPROM_SKU_CAP_11N_ENABLE)
		flush_cmd.fifo_control |= IWL_AGG_TX_QUEUE_MSK;

	IWL_DEBUG_INFO(priv, "fifo queue control: 0X%x\n",
+14 −4
Original line number Diff line number Diff line
@@ -164,7 +164,7 @@ int iwlagn_mac_setup_register(struct iwl_priv *priv,
	hw->max_tx_aggregation_subframes = LINK_QUAL_AGG_FRAME_LIMIT_DEF;
	 */

	if (priv->hw_params.sku & EEPROM_SKU_CAP_11N_ENABLE)
	if (priv->eeprom_data->sku & EEPROM_SKU_CAP_11N_ENABLE)
		hw->flags |= IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS |
			     IEEE80211_HW_SUPPORTS_STATIC_SMPS;

@@ -649,7 +649,7 @@ static int iwlagn_mac_ampdu_action(struct ieee80211_hw *hw,
	IWL_DEBUG_HT(priv, "A-MPDU action on addr %pM tid %d\n",
		     sta->addr, tid);

	if (!(priv->hw_params.sku & EEPROM_SKU_CAP_11N_ENABLE))
	if (!(priv->eeprom_data->sku & EEPROM_SKU_CAP_11N_ENABLE))
		return -EACCES;

	IWL_DEBUG_MAC80211(priv, "enter\n");
@@ -1036,10 +1036,20 @@ static int iwlagn_mac_remain_on_channel(struct ieee80211_hw *hw,
	mutex_lock(&priv->mutex);

	if (test_bit(STATUS_SCAN_HW, &priv->status)) {
		/* mac80211 should not scan while ROC or ROC while scanning */
		if (WARN_ON_ONCE(priv->scan_type != IWL_SCAN_RADIO_RESET)) {
			err = -EBUSY;
			goto out;
		}

		iwl_scan_cancel_timeout(priv, 100);

		if (test_bit(STATUS_SCAN_HW, &priv->status)) {
			err = -EBUSY;
			goto out;
		}
	}

	priv->hw_roc_channel = channel;
	priv->hw_roc_chantype = channel_type;
	/* convert from ms to TU */
+20 −9
Original line number Diff line number Diff line
@@ -51,11 +51,13 @@
#include "iwl-op-mode.h"
#include "iwl-drv.h"
#include "iwl-modparams.h"
#include "iwl-prph.h"

#include "dev.h"
#include "calib.h"
#include "agn.h"


/******************************************************************************
 *
 * module boiler plate
@@ -1185,9 +1187,6 @@ static void iwl_set_hw_params(struct iwl_priv *priv)
		priv->hw_params.use_rts_for_aggregation =
			priv->cfg->ht_params->use_rts_for_aggregation;

	if (iwlwifi_mod_params.disable_11n & IWL_DISABLE_HT_ALL)
		priv->hw_params.sku &= ~EEPROM_SKU_CAP_11N_ENABLE;

	/* Device-specific setup */
	priv->lib->set_hw_params(priv);
}
@@ -1232,20 +1231,20 @@ static int iwl_eeprom_init_hw_params(struct iwl_priv *priv)
{
	u16 radio_cfg;

	priv->hw_params.sku = priv->eeprom_data->sku;
	priv->eeprom_data->sku = priv->eeprom_data->sku;

	if (priv->hw_params.sku & EEPROM_SKU_CAP_11N_ENABLE &&
	if (priv->eeprom_data->sku & EEPROM_SKU_CAP_11N_ENABLE &&
	    !priv->cfg->ht_params) {
		IWL_ERR(priv, "Invalid 11n configuration\n");
		return -EINVAL;
	}

	if (!priv->hw_params.sku) {
	if (!priv->eeprom_data->sku) {
		IWL_ERR(priv, "Invalid device sku\n");
		return -EINVAL;
	}

	IWL_INFO(priv, "Device SKU: 0x%X\n", priv->hw_params.sku);
	IWL_INFO(priv, "Device SKU: 0x%X\n", priv->eeprom_data->sku);

	radio_cfg = priv->eeprom_data->radio_cfg;

@@ -1352,6 +1351,9 @@ static struct iwl_op_mode *iwl_op_mode_dvm_start(struct iwl_trans *trans,
		trans_cfg.queue_watchdog_timeout = IWL_WATCHDOG_DISABLED;
	trans_cfg.command_names = iwl_dvm_cmd_strings;

	WARN_ON(sizeof(priv->transport_queue_stop) * BITS_PER_BYTE <
		priv->cfg->base_params->num_of_queues);

	ucode_flags = fw->ucode_capa.flags;

#ifndef CONFIG_IWLWIFI_P2P
@@ -1448,7 +1450,7 @@ static struct iwl_op_mode *iwl_op_mode_dvm_start(struct iwl_trans *trans,
	 ************************/
	iwl_set_hw_params(priv);

	if (!(priv->hw_params.sku & EEPROM_SKU_CAP_IPAN_ENABLE)) {
	if (!(priv->eeprom_data->sku & EEPROM_SKU_CAP_IPAN_ENABLE)) {
		IWL_DEBUG_INFO(priv, "Your EEPROM disabled PAN");
		ucode_flags &= ~IWL_UCODE_TLV_FLAGS_PAN;
		/*
@@ -2073,6 +2075,15 @@ static void iwl_nic_config(struct iwl_op_mode *op_mode)
		    CSR_HW_IF_CONFIG_REG_BIT_RADIO_SI |
		    CSR_HW_IF_CONFIG_REG_BIT_MAC_SI);

	/* W/A : NIC is stuck in a reset state after Early PCIe power off
	 * (PCIe power is lost before PERST# is asserted),
	 * causing ME FW to lose ownership and not being able to obtain it back.
	 */
	iwl_set_bits_mask_prph(priv->trans, APMG_PS_CTRL_REG,
			       APMG_PS_CTRL_EARLY_PWR_OFF_RESET_DIS,
			       ~APMG_PS_CTRL_EARLY_PWR_OFF_RESET_DIS);

	if (priv->lib->nic_config)
		priv->lib->nic_config(priv);
}

Loading