static int
ath12k_wmi_send_unit_test_cmd(struct ath12k *ar,
- struct wmi_unit_test_cmd ut_cmd,
- u32 *test_args)
+ const struct wmi_unit_test_arg *ut)
{
struct ath12k_wmi_pdev *wmi = ar->wmi;
struct wmi_unit_test_cmd *cmd;
+ int buf_len, arg_len;
struct sk_buff *skb;
struct wmi_tlv *tlv;
+ __le32 *ut_cmd_args;
void *ptr;
- u32 *ut_cmd_args;
- int buf_len, arg_len;
int ret;
int i;
- arg_len = sizeof(u32) * le32_to_cpu(ut_cmd.num_args);
- buf_len = sizeof(ut_cmd) + arg_len + TLV_HDR_SIZE;
+ arg_len = sizeof(*ut_cmd_args) * ut->num_args;
+ buf_len = sizeof(*cmd) + arg_len + TLV_HDR_SIZE;
skb = ath12k_wmi_alloc_skb(wmi->wmi_ab, buf_len);
if (!skb)
return -ENOMEM;
- cmd = (struct wmi_unit_test_cmd *)skb->data;
+ ptr = skb->data;
+ cmd = ptr;
cmd->tlv_header = ath12k_wmi_tlv_cmd_hdr(WMI_TAG_UNIT_TEST_CMD,
- sizeof(ut_cmd));
-
- cmd->vdev_id = ut_cmd.vdev_id;
- cmd->module_id = ut_cmd.module_id;
- cmd->num_args = ut_cmd.num_args;
- cmd->diag_token = ut_cmd.diag_token;
-
- ptr = skb->data + sizeof(ut_cmd);
+ sizeof(*cmd));
+ cmd->vdev_id = cpu_to_le32(ut->vdev_id);
+ cmd->module_id = cpu_to_le32(ut->module_id);
+ cmd->num_args = cpu_to_le32(ut->num_args);
+ cmd->diag_token = cpu_to_le32(ut->diag_token);
+ ptr += sizeof(*cmd);
tlv = ptr;
tlv->header = ath12k_wmi_tlv_hdr(WMI_TAG_ARRAY_UINT32, arg_len);
ptr += TLV_HDR_SIZE;
-
ut_cmd_args = ptr;
- for (i = 0; i < le32_to_cpu(ut_cmd.num_args); i++)
- ut_cmd_args[i] = test_args[i];
+ for (i = 0; i < ut->num_args; i++)
+ ut_cmd_args[i] = cpu_to_le32(ut->args[i]);
ath12k_dbg(ar->ab, ATH12K_DBG_WMI,
"WMI unit test : module %d vdev %d n_args %d token %d\n",
- cmd->module_id, cmd->vdev_id, cmd->num_args,
- cmd->diag_token);
+ ut->module_id, ut->vdev_id, ut->num_args, ut->diag_token);
ret = ath12k_wmi_cmd_send(wmi, skb, WMI_UNIT_TEST_CMDID);
int ath12k_wmi_simulate_radar(struct ath12k *ar)
{
struct ath12k_link_vif *arvif;
- u32 dfs_args[DFS_MAX_TEST_ARGS];
- struct wmi_unit_test_cmd wmi_ut;
+ struct wmi_unit_test_arg wmi_ut = {};
bool arvif_found = false;
list_for_each_entry(arvif, &ar->arvifs, list) {
if (!arvif_found)
return -EINVAL;
- dfs_args[DFS_TEST_CMDID] = 0;
- dfs_args[DFS_TEST_PDEV_ID] = ar->pdev->pdev_id;
- /* Currently we could pass segment_id(b0 - b1), chirp(b2)
+ wmi_ut.args[DFS_TEST_CMDID] = 0;
+ wmi_ut.args[DFS_TEST_PDEV_ID] = ar->pdev->pdev_id;
+ /*
+ * Currently we could pass segment_id(b0 - b1), chirp(b2)
* freq offset (b3 - b10) to unit test. For simulation
* purpose this can be set to 0 which is valid.
*/
- dfs_args[DFS_TEST_RADAR_PARAM] = 0;
+ wmi_ut.args[DFS_TEST_RADAR_PARAM] = 0;
- wmi_ut.vdev_id = cpu_to_le32(arvif->vdev_id);
- wmi_ut.module_id = cpu_to_le32(DFS_UNIT_TEST_MODULE);
- wmi_ut.num_args = cpu_to_le32(DFS_MAX_TEST_ARGS);
- wmi_ut.diag_token = cpu_to_le32(DFS_UNIT_TEST_TOKEN);
+ wmi_ut.vdev_id = arvif->vdev_id;
+ wmi_ut.module_id = DFS_UNIT_TEST_MODULE;
+ wmi_ut.num_args = DFS_MAX_TEST_ARGS;
+ wmi_ut.diag_token = DFS_UNIT_TEST_TOKEN;
ath12k_dbg(ar->ab, ATH12K_DBG_REG, "Triggering Radar Simulation\n");
- return ath12k_wmi_send_unit_test_cmd(ar, wmi_ut, dfs_args);
+ return ath12k_wmi_send_unit_test_cmd(ar, &wmi_ut);
}
int ath12k_wmi_send_tpc_stats_request(struct ath12k *ar,