|
@@ -665,19 +665,11 @@ static int iwl_mvm_bt_udpate_sw_boost(struct iwl_mvm *mvm,
|
|
|
static int iwl_mvm_bt_coex_reduced_txp(struct iwl_mvm *mvm, u8 sta_id,
|
|
|
bool enable)
|
|
|
{
|
|
|
- struct iwl_bt_coex_cmd_old *bt_cmd;
|
|
|
- /* Send ASYNC since this can be sent from an atomic context */
|
|
|
- struct iwl_host_cmd cmd = {
|
|
|
- .id = BT_CONFIG,
|
|
|
- .len = { sizeof(*bt_cmd), },
|
|
|
- .dataflags = { IWL_HCMD_DFL_NOCOPY, },
|
|
|
- .flags = CMD_ASYNC,
|
|
|
- };
|
|
|
+ struct iwl_bt_coex_reduced_txp_update_cmd cmd = {};
|
|
|
struct iwl_mvm_sta *mvmsta;
|
|
|
+ u32 value;
|
|
|
int ret;
|
|
|
|
|
|
- return 0;
|
|
|
-
|
|
|
mvmsta = iwl_mvm_sta_from_staid_protected(mvm, sta_id);
|
|
|
if (!mvmsta)
|
|
|
return 0;
|
|
@@ -686,27 +678,20 @@ static int iwl_mvm_bt_coex_reduced_txp(struct iwl_mvm *mvm, u8 sta_id,
|
|
|
if (mvmsta->bt_reduced_txpower == enable)
|
|
|
return 0;
|
|
|
|
|
|
- bt_cmd = kzalloc(sizeof(*bt_cmd), GFP_ATOMIC);
|
|
|
- if (!bt_cmd)
|
|
|
- return -ENOMEM;
|
|
|
- cmd.data[0] = bt_cmd;
|
|
|
- bt_cmd->flags = cpu_to_le32(BT_COEX_NW_OLD);
|
|
|
-
|
|
|
- bt_cmd->valid_bit_msk =
|
|
|
- cpu_to_le32(BT_VALID_ENABLE | BT_VALID_REDUCED_TX_POWER);
|
|
|
- bt_cmd->bt_reduced_tx_power = sta_id;
|
|
|
+ value = mvmsta->sta_id;
|
|
|
|
|
|
if (enable)
|
|
|
- bt_cmd->bt_reduced_tx_power |= BT_REDUCED_TX_POWER_BIT;
|
|
|
+ value |= BT_REDUCED_TX_POWER_BIT;
|
|
|
|
|
|
IWL_DEBUG_COEX(mvm, "%sable reduced Tx Power for sta %d\n",
|
|
|
enable ? "en" : "dis", sta_id);
|
|
|
|
|
|
+ cmd.reduced_txp = cpu_to_le32(value);
|
|
|
mvmsta->bt_reduced_txpower = enable;
|
|
|
|
|
|
- ret = iwl_mvm_send_cmd(mvm, &cmd);
|
|
|
+ ret = iwl_mvm_send_cmd_pdu(mvm, BT_COEX_UPDATE_REDUCED_TXP, CMD_ASYNC,
|
|
|
+ sizeof(cmd), &cmd);
|
|
|
|
|
|
- kfree(bt_cmd);
|
|
|
return ret;
|
|
|
}
|
|
|
|