diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/mvm/utils.c')
| -rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/utils.c | 23 | 
1 files changed, 13 insertions, 10 deletions
| diff --git a/drivers/net/wireless/iwlwifi/mvm/utils.c b/drivers/net/wireless/iwlwifi/mvm/utils.c index ed69e9b78e82..86989df69356 100644 --- a/drivers/net/wireless/iwlwifi/mvm/utils.c +++ b/drivers/net/wireless/iwlwifi/mvm/utils.c @@ -5,7 +5,7 @@   *   * GPL LICENSE SUMMARY   * - * Copyright(c) 2012 - 2013 Intel Corporation. All rights reserved. + * Copyright(c) 2012 - 2014 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 @@ -30,7 +30,7 @@   *   * BSD LICENSE   * - * Copyright(c) 2012 - 2013 Intel Corporation. All rights reserved. + * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved.   * All rights reserved.   *   * Redistribution and use in source and binary forms, with or without @@ -168,8 +168,8 @@ int iwl_mvm_send_cmd_status(struct iwl_mvm *mvm, struct iwl_host_cmd *cmd,  		goto out_free_resp;  	} -	resp_len = le32_to_cpu(pkt->len_n_flags) & FH_RSCSR_FRAME_SIZE_MSK; -	if (WARN_ON_ONCE(resp_len != sizeof(pkt->hdr) + sizeof(*resp))) { +	resp_len = iwl_rx_packet_payload_len(pkt); +	if (WARN_ON_ONCE(resp_len != sizeof(*resp))) {  		ret = -EIO;  		goto out_free_resp;  	} @@ -411,6 +411,8 @@ void iwl_mvm_dump_nic_error_log(struct iwl_mvm *mvm)  			mvm->status, table.valid);  	} +	IWL_ERR(mvm, "Loaded firmware version: %s\n", mvm->fw->fw_version); +  	trace_iwlwifi_dev_ucode_error(trans->dev, table.error_id, table.tsf_low,  				      table.data1, table.data2, table.data3,  				      table.blink1, table.blink2, table.ilink1, @@ -486,22 +488,18 @@ void iwl_mvm_dump_sram(struct iwl_mvm *mvm)   * this case to clear the state indicating that station creation is in   * progress.   */ -int iwl_mvm_send_lq_cmd(struct iwl_mvm *mvm, struct iwl_lq_cmd *lq, -			u8 flags, bool init) +int iwl_mvm_send_lq_cmd(struct iwl_mvm *mvm, struct iwl_lq_cmd *lq, bool init)  {  	struct iwl_host_cmd cmd = {  		.id = LQ_CMD,  		.len = { sizeof(struct iwl_lq_cmd), }, -		.flags = flags, +		.flags = init ? CMD_SYNC : CMD_ASYNC,  		.data = { lq, },  	};  	if (WARN_ON(lq->sta_id == IWL_MVM_STATION_COUNT))  		return -EINVAL; -	if (WARN_ON(init && (cmd.flags & CMD_ASYNC))) -		return -EINVAL; -  	return iwl_mvm_send_cmd(mvm, &cmd);  } @@ -522,6 +520,11 @@ void iwl_mvm_update_smps(struct iwl_mvm *mvm, struct ieee80211_vif *vif,  	int i;  	lockdep_assert_held(&mvm->mutex); + +	/* SMPS is irrelevant for NICs that don't have at least 2 RX antenna */ +	if (num_of_ant(iwl_fw_valid_rx_ant(mvm->fw)) == 1) +		return; +  	mvmvif = iwl_mvm_vif_from_mac80211(vif);  	mvmvif->smps_requests[req_type] = smps_request;  	for (i = 0; i < NUM_IWL_MVM_SMPS_REQ; i++) { |