diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/dvm/lib.c')
| -rw-r--r-- | drivers/net/wireless/iwlwifi/dvm/lib.c | 47 | 
1 files changed, 23 insertions, 24 deletions
diff --git a/drivers/net/wireless/iwlwifi/dvm/lib.c b/drivers/net/wireless/iwlwifi/dvm/lib.c index bef88c1a2c9..86ea5f4c393 100644 --- a/drivers/net/wireless/iwlwifi/dvm/lib.c +++ b/drivers/net/wireless/iwlwifi/dvm/lib.c @@ -2,7 +2,7 @@   *   * GPL LICENSE SUMMARY   * - * Copyright(c) 2008 - 2012 Intel Corporation. All rights reserved. + * Copyright(c) 2008 - 2013 Intel Corporation. All rights reserved.   *   * 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 @@ -59,7 +59,7 @@ int iwlagn_send_tx_power(struct iwl_priv *priv)  	/* half dBm need to multiply */  	tx_power_cmd.global_lmt = (s8)(2 * priv->tx_power_user_lmt); -	if (tx_power_cmd.global_lmt > priv->eeprom_data->max_tx_pwr_half_dbm) { +	if (tx_power_cmd.global_lmt > priv->nvm_data->max_tx_pwr_half_dbm) {  		/*  		 * For the newer devices which using enhanced/extend tx power  		 * table in EEPROM, the format is in half dBm. driver need to @@ -72,7 +72,7 @@ int iwlagn_send_tx_power(struct iwl_priv *priv)  		 * half-dBm format), lower the tx power based on EEPROM  		 */  		tx_power_cmd.global_lmt = -			priv->eeprom_data->max_tx_pwr_half_dbm; +			priv->nvm_data->max_tx_pwr_half_dbm;  	}  	tx_power_cmd.flags = IWLAGN_TX_POWER_NO_CLOSED;  	tx_power_cmd.srv_chan_lmt = IWLAGN_TX_POWER_AUTO; @@ -136,7 +136,7 @@ int iwlagn_manage_ibss_station(struct iwl_priv *priv,   *  1. acquire mutex before calling   *  2. make sure rf is on and not in exit state   */ -int iwlagn_txfifo_flush(struct iwl_priv *priv, u16 flush_control) +int iwlagn_txfifo_flush(struct iwl_priv *priv)  {  	struct iwl_txfifo_flush_cmd flush_cmd;  	struct iwl_host_cmd cmd = { @@ -146,35 +146,34 @@ int iwlagn_txfifo_flush(struct iwl_priv *priv, u16 flush_control)  		.data = { &flush_cmd, },  	}; -	might_sleep(); -  	memset(&flush_cmd, 0, sizeof(flush_cmd)); -	if (flush_control & BIT(IWL_RXON_CTX_BSS)) -		flush_cmd.fifo_control = IWL_SCD_VO_MSK | IWL_SCD_VI_MSK | -				 IWL_SCD_BE_MSK | IWL_SCD_BK_MSK | -				 IWL_SCD_MGMT_MSK; -	if ((flush_control & BIT(IWL_RXON_CTX_PAN)) && -	    (priv->valid_contexts != BIT(IWL_RXON_CTX_BSS))) -		flush_cmd.fifo_control |= IWL_PAN_SCD_VO_MSK | -				IWL_PAN_SCD_VI_MSK | IWL_PAN_SCD_BE_MSK | -				IWL_PAN_SCD_BK_MSK | IWL_PAN_SCD_MGMT_MSK | -				IWL_PAN_SCD_MULTICAST_MSK; -	if (priv->eeprom_data->sku & EEPROM_SKU_CAP_11N_ENABLE) -		flush_cmd.fifo_control |= IWL_AGG_TX_QUEUE_MSK; +	flush_cmd.queue_control = IWL_SCD_VO_MSK | IWL_SCD_VI_MSK | +				  IWL_SCD_BE_MSK | IWL_SCD_BK_MSK | +				  IWL_SCD_MGMT_MSK; +	if ((priv->valid_contexts != BIT(IWL_RXON_CTX_BSS))) +		flush_cmd.queue_control |= IWL_PAN_SCD_VO_MSK | +					   IWL_PAN_SCD_VI_MSK | +					   IWL_PAN_SCD_BE_MSK | +					   IWL_PAN_SCD_BK_MSK | +					   IWL_PAN_SCD_MGMT_MSK | +					   IWL_PAN_SCD_MULTICAST_MSK; + +	if (priv->nvm_data->sku_cap_11n_enable) +		flush_cmd.queue_control |= IWL_AGG_TX_QUEUE_MSK; -	IWL_DEBUG_INFO(priv, "fifo queue control: 0X%x\n", -		       flush_cmd.fifo_control); -	flush_cmd.flush_control = cpu_to_le16(flush_control); +	IWL_DEBUG_INFO(priv, "queue control: 0x%x\n", +		       flush_cmd.queue_control); +	flush_cmd.flush_control = cpu_to_le16(IWL_DROP_ALL);  	return iwl_dvm_send_cmd(priv, &cmd);  } -void iwlagn_dev_txfifo_flush(struct iwl_priv *priv, u16 flush_control) +void iwlagn_dev_txfifo_flush(struct iwl_priv *priv)  {  	mutex_lock(&priv->mutex);  	ieee80211_stop_queues(priv->hw); -	if (iwlagn_txfifo_flush(priv, IWL_DROP_ALL)) { +	if (iwlagn_txfifo_flush(priv)) {  		IWL_ERR(priv, "flush request fail\n");  		goto done;  	} @@ -826,7 +825,7 @@ void iwlagn_set_rxon_chain(struct iwl_priv *priv, struct iwl_rxon_context *ctx)  	if (priv->chain_noise_data.active_chains)  		active_chains = priv->chain_noise_data.active_chains;  	else -		active_chains = priv->eeprom_data->valid_rx_ant; +		active_chains = priv->nvm_data->valid_rx_ant;  	if (priv->cfg->bt_params &&  	    priv->cfg->bt_params->advanced_bt_coexist &&  |