diff options
Diffstat (limited to 'drivers/net/wireless/intel/iwlwifi/mvm/ops.c')
| -rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/ops.c | 23 | 
1 files changed, 17 insertions, 6 deletions
| diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c index ff1e518096c5..0e26619fb330 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c @@ -448,6 +448,8 @@ static const struct iwl_hcmd_names iwl_mvm_data_path_names[] = {  	HCMD_NAME(DQA_ENABLE_CMD),  	HCMD_NAME(UPDATE_MU_GROUPS_CMD),  	HCMD_NAME(TRIGGER_RX_QUEUES_NOTIF_CMD), +	HCMD_NAME(STA_HE_CTXT_CMD), +	HCMD_NAME(RFH_QUEUE_CONFIG_CMD),  	HCMD_NAME(STA_PM_NOTIF),  	HCMD_NAME(MU_GROUP_MGMT_NOTIF),  	HCMD_NAME(RX_QUEUES_NOTIFICATION), @@ -620,7 +622,11 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg,  	if (iwl_mvm_has_new_rx_api(mvm)) {  		op_mode->ops = &iwl_mvm_ops_mq; -		trans->rx_mpdu_cmd_hdr_size = sizeof(struct iwl_rx_mpdu_desc); +		trans->rx_mpdu_cmd_hdr_size = +			(trans->cfg->device_family >= +			 IWL_DEVICE_FAMILY_22560) ? +			sizeof(struct iwl_rx_mpdu_desc) : +			IWL_RX_DESC_SIZE_V1;  	} else {  		op_mode->ops = &iwl_mvm_ops;  		trans->rx_mpdu_cmd_hdr_size = @@ -703,11 +709,17 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg,  	}  	/* the hardware splits the A-MSDU */ -	if (mvm->cfg->mq_rx_supported) +	if (mvm->trans->cfg->device_family >= IWL_DEVICE_FAMILY_22560) { +		trans_cfg.rx_buf_size = IWL_AMSDU_2K; +		/* TODO: remove when balanced power mode is fw supported */ +		iwlmvm_mod_params.power_scheme = IWL_POWER_SCHEME_CAM; +	} else if (mvm->cfg->mq_rx_supported) {  		trans_cfg.rx_buf_size = IWL_AMSDU_4K; +	}  	trans->wide_cmd_header = true; -	trans_cfg.bc_table_dword = true; +	trans_cfg.bc_table_dword = +		mvm->trans->cfg->device_family < IWL_DEVICE_FAMILY_22560;  	trans_cfg.command_groups = iwl_mvm_groups;  	trans_cfg.command_groups_size = ARRAY_SIZE(iwl_mvm_groups); @@ -738,6 +750,7 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg,  	memcpy(trans->dbg_conf_tlv, mvm->fw->dbg_conf_tlv,  	       sizeof(trans->dbg_conf_tlv));  	trans->dbg_trigger_tlv = mvm->fw->dbg_trigger_tlv; +	trans->dbg_dump_mask = mvm->fw->dbg_dump_mask;  	trans->iml = mvm->fw->iml;  	trans->iml_len = mvm->fw->iml_len; @@ -1003,10 +1016,8 @@ static void iwl_mvm_rx_common(struct iwl_mvm *mvm,  		list_add_tail(&entry->list, &mvm->async_handlers_list);  		spin_unlock(&mvm->async_handlers_lock);  		schedule_work(&mvm->async_handlers_wk); -		return; +		break;  	} - -	iwl_fwrt_handle_notification(&mvm->fwrt, rxb);  }  static void iwl_mvm_rx(struct iwl_op_mode *op_mode, |