mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
iwlwifi: mvm: support dqa-enable hcmd
Support sending the DQA-enablement HCMD to the FW when working in DQA mode. This HCMD will enable DQA-specific flows in the FW. Signed-off-by: Liad Kaufman <liad.kaufman@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
This commit is contained in:
parent
28d0793ed2
commit
97d5be7e22
@ -332,6 +332,7 @@ enum iwl_system_subcmd_ids {
|
|||||||
};
|
};
|
||||||
|
|
||||||
enum iwl_data_path_subcmd_ids {
|
enum iwl_data_path_subcmd_ids {
|
||||||
|
DQA_ENABLE_CMD = 0x0,
|
||||||
UPDATE_MU_GROUPS_CMD = 0x1,
|
UPDATE_MU_GROUPS_CMD = 0x1,
|
||||||
TRIGGER_RX_QUEUES_NOTIF_CMD = 0x2,
|
TRIGGER_RX_QUEUES_NOTIF_CMD = 0x2,
|
||||||
MU_GROUP_MGMT_NOTIF = 0xFE,
|
MU_GROUP_MGMT_NOTIF = 0xFE,
|
||||||
@ -361,6 +362,14 @@ struct iwl_cmd_response {
|
|||||||
__le32 status;
|
__le32 status;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* struct iwl_dqa_enable_cmd
|
||||||
|
* @cmd_queue: the TXQ number of the command queue
|
||||||
|
*/
|
||||||
|
struct iwl_dqa_enable_cmd {
|
||||||
|
__le32 cmd_queue;
|
||||||
|
} __packed; /* DQA_CONTROL_CMD_API_S_VER_1 */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* struct iwl_tx_ant_cfg_cmd
|
* struct iwl_tx_ant_cfg_cmd
|
||||||
* @valid: valid antenna configuration
|
* @valid: valid antenna configuration
|
||||||
|
@ -134,6 +134,23 @@ static int iwl_send_rss_cfg_cmd(struct iwl_mvm *mvm)
|
|||||||
return iwl_mvm_send_cmd_pdu(mvm, RSS_CONFIG_CMD, 0, sizeof(cmd), &cmd);
|
return iwl_mvm_send_cmd_pdu(mvm, RSS_CONFIG_CMD, 0, sizeof(cmd), &cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int iwl_mvm_send_dqa_cmd(struct iwl_mvm *mvm)
|
||||||
|
{
|
||||||
|
struct iwl_dqa_enable_cmd dqa_cmd = {
|
||||||
|
.cmd_queue = cpu_to_le32(IWL_MVM_DQA_CMD_QUEUE),
|
||||||
|
};
|
||||||
|
u32 cmd_id = iwl_cmd_id(DQA_ENABLE_CMD, DATA_PATH_GROUP, 0);
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = iwl_mvm_send_cmd_pdu(mvm, cmd_id, 0, sizeof(dqa_cmd), &dqa_cmd);
|
||||||
|
if (ret)
|
||||||
|
IWL_ERR(mvm, "Failed to send DQA enabling command: %d\n", ret);
|
||||||
|
else
|
||||||
|
IWL_DEBUG_FW(mvm, "Working in DQA mode\n");
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
void iwl_free_fw_paging(struct iwl_mvm *mvm)
|
void iwl_free_fw_paging(struct iwl_mvm *mvm)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@ -979,6 +996,15 @@ int iwl_mvm_up(struct iwl_mvm *mvm)
|
|||||||
/* reset quota debouncing buffer - 0xff will yield invalid data */
|
/* reset quota debouncing buffer - 0xff will yield invalid data */
|
||||||
memset(&mvm->last_quota_cmd, 0xff, sizeof(mvm->last_quota_cmd));
|
memset(&mvm->last_quota_cmd, 0xff, sizeof(mvm->last_quota_cmd));
|
||||||
|
|
||||||
|
/* Enable DQA-mode if required */
|
||||||
|
if (iwl_mvm_is_dqa_supported(mvm)) {
|
||||||
|
ret = iwl_mvm_send_dqa_cmd(mvm);
|
||||||
|
if (ret)
|
||||||
|
goto error;
|
||||||
|
} else {
|
||||||
|
IWL_DEBUG_FW(mvm, "Working in non-DQA mode\n");
|
||||||
|
}
|
||||||
|
|
||||||
/* Add auxiliary station for scanning */
|
/* Add auxiliary station for scanning */
|
||||||
ret = iwl_mvm_add_aux_sta(mvm);
|
ret = iwl_mvm_add_aux_sta(mvm);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
Loading…
Reference in New Issue
Block a user