aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath10k/wmi.c
diff options
context:
space:
mode:
authorMichal Kazior <michal.kazior@tieto.com>2014-09-18 09:21:21 -0400
committerKalle Valo <kvalo@qca.qualcomm.com>2014-09-23 05:30:58 -0400
commit2d66721c7bb1a6888eb17dd29758daf642df0b82 (patch)
tree8c289bc6218c7bf435c07fd81e6b368d4981ae63 /drivers/net/wireless/ath/ath10k/wmi.c
parent1435c2bbdd913281a982f49d6a886cbfbc0a5950 (diff)
ath10k: deduplicate wmi_channel code
The structure is being set up in 2 places. Deduplicate the code by creating a helper. Signed-off-by: Michal Kazior <michal.kazior@tieto.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath10k/wmi.c')
-rw-r--r--drivers/net/wireless/ath/ath10k/wmi.c77
1 files changed, 36 insertions, 41 deletions
diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c
index 4f66a580bb3d..34c214b73f99 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.c
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
@@ -609,6 +609,40 @@ static struct wmi_cmd_map wmi_10_2_cmd_map = {
609 .gpio_output_cmdid = WMI_10_2_GPIO_OUTPUT_CMDID, 609 .gpio_output_cmdid = WMI_10_2_GPIO_OUTPUT_CMDID,
610}; 610};
611 611
612static void
613ath10k_wmi_put_wmi_channel(struct wmi_channel *ch,
614 const struct wmi_channel_arg *arg)
615{
616 u32 flags = 0;
617
618 memset(ch, 0, sizeof(*ch));
619
620 if (arg->passive)
621 flags |= WMI_CHAN_FLAG_PASSIVE;
622 if (arg->allow_ibss)
623 flags |= WMI_CHAN_FLAG_ADHOC_ALLOWED;
624 if (arg->allow_ht)
625 flags |= WMI_CHAN_FLAG_ALLOW_HT;
626 if (arg->allow_vht)
627 flags |= WMI_CHAN_FLAG_ALLOW_VHT;
628 if (arg->ht40plus)
629 flags |= WMI_CHAN_FLAG_HT40_PLUS;
630 if (arg->chan_radar)
631 flags |= WMI_CHAN_FLAG_DFS;
632
633 ch->mhz = __cpu_to_le32(arg->freq);
634 ch->band_center_freq1 = __cpu_to_le32(arg->band_center_freq1);
635 ch->band_center_freq2 = 0;
636 ch->min_power = arg->min_power;
637 ch->max_power = arg->max_power;
638 ch->reg_power = arg->max_reg_power;
639 ch->antenna_max = arg->max_antenna_gain;
640
641 /* mode & flags share storage */
642 ch->mode = arg->mode;
643 ch->flags |= __cpu_to_le32(flags);
644}
645
612int ath10k_wmi_wait_for_service_ready(struct ath10k *ar) 646int ath10k_wmi_wait_for_service_ready(struct ath10k *ar)
613{ 647{
614 int ret; 648 int ret;
@@ -3510,7 +3544,6 @@ ath10k_wmi_vdev_start_restart(struct ath10k *ar,
3510 struct sk_buff *skb; 3544 struct sk_buff *skb;
3511 const char *cmdname; 3545 const char *cmdname;
3512 u32 flags = 0; 3546 u32 flags = 0;
3513 u32 ch_flags = 0;
3514 3547
3515 if (cmd_id != ar->wmi.cmd->vdev_start_request_cmdid && 3548 if (cmd_id != ar->wmi.cmd->vdev_start_request_cmdid &&
3516 cmd_id != ar->wmi.cmd->vdev_restart_request_cmdid) 3549 cmd_id != ar->wmi.cmd->vdev_restart_request_cmdid)
@@ -3537,8 +3570,6 @@ ath10k_wmi_vdev_start_restart(struct ath10k *ar,
3537 flags |= WMI_VDEV_START_HIDDEN_SSID; 3570 flags |= WMI_VDEV_START_HIDDEN_SSID;
3538 if (arg->pmf_enabled) 3571 if (arg->pmf_enabled)
3539 flags |= WMI_VDEV_START_PMF_ENABLED; 3572 flags |= WMI_VDEV_START_PMF_ENABLED;
3540 if (arg->channel.chan_radar)
3541 ch_flags |= WMI_CHAN_FLAG_DFS;
3542 3573
3543 cmd = (struct wmi_vdev_start_request_cmd *)skb->data; 3574 cmd = (struct wmi_vdev_start_request_cmd *)skb->data;
3544 cmd->vdev_id = __cpu_to_le32(arg->vdev_id); 3575 cmd->vdev_id = __cpu_to_le32(arg->vdev_id);
@@ -3554,18 +3585,7 @@ ath10k_wmi_vdev_start_restart(struct ath10k *ar,
3554 memcpy(cmd->ssid.ssid, arg->ssid, arg->ssid_len); 3585 memcpy(cmd->ssid.ssid, arg->ssid, arg->ssid_len);
3555 } 3586 }
3556 3587
3557 cmd->chan.mhz = __cpu_to_le32(arg->channel.freq); 3588 ath10k_wmi_put_wmi_channel(&cmd->chan, &arg->channel);
3558
3559 cmd->chan.band_center_freq1 =
3560 __cpu_to_le32(arg->channel.band_center_freq1);
3561
3562 cmd->chan.mode = arg->channel.mode;
3563 cmd->chan.flags |= __cpu_to_le32(ch_flags);
3564 cmd->chan.min_power = arg->channel.min_power;
3565 cmd->chan.max_power = arg->channel.max_power;
3566 cmd->chan.reg_power = arg->channel.max_reg_power;
3567 cmd->chan.reg_classid = arg->channel.reg_class_id;
3568 cmd->chan.antenna_max = arg->channel.max_antenna_gain;
3569 3589
3570 ath10k_dbg(ar, ATH10K_DBG_WMI, 3590 ath10k_dbg(ar, ATH10K_DBG_WMI,
3571 "wmi vdev %s id 0x%x flags: 0x%0X, freq %d, mode %d, ch_flags: 0x%0X, max_power: %d\n", 3591 "wmi vdev %s id 0x%x flags: 0x%0X, freq %d, mode %d, ch_flags: 0x%0X, max_power: %d\n",
@@ -3946,35 +3966,10 @@ int ath10k_wmi_scan_chan_list(struct ath10k *ar,
3946 cmd->num_scan_chans = __cpu_to_le32(arg->n_channels); 3966 cmd->num_scan_chans = __cpu_to_le32(arg->n_channels);
3947 3967
3948 for (i = 0; i < arg->n_channels; i++) { 3968 for (i = 0; i < arg->n_channels; i++) {
3949 u32 flags = 0;
3950
3951 ch = &arg->channels[i]; 3969 ch = &arg->channels[i];
3952 ci = &cmd->chan_info[i]; 3970 ci = &cmd->chan_info[i];
3953 3971
3954 if (ch->passive) 3972 ath10k_wmi_put_wmi_channel(ci, ch);
3955 flags |= WMI_CHAN_FLAG_PASSIVE;
3956 if (ch->allow_ibss)
3957 flags |= WMI_CHAN_FLAG_ADHOC_ALLOWED;
3958 if (ch->allow_ht)
3959 flags |= WMI_CHAN_FLAG_ALLOW_HT;
3960 if (ch->allow_vht)
3961 flags |= WMI_CHAN_FLAG_ALLOW_VHT;
3962 if (ch->ht40plus)
3963 flags |= WMI_CHAN_FLAG_HT40_PLUS;
3964 if (ch->chan_radar)
3965 flags |= WMI_CHAN_FLAG_DFS;
3966
3967 ci->mhz = __cpu_to_le32(ch->freq);
3968 ci->band_center_freq1 = __cpu_to_le32(ch->freq);
3969 ci->band_center_freq2 = 0;
3970 ci->min_power = ch->min_power;
3971 ci->max_power = ch->max_power;
3972 ci->reg_power = ch->max_reg_power;
3973 ci->antenna_max = ch->max_antenna_gain;
3974
3975 /* mode & flags share storage */
3976 ci->mode = ch->mode;
3977 ci->flags |= __cpu_to_le32(flags);
3978 } 3973 }
3979 3974
3980 return ath10k_wmi_cmd_send(ar, skb, ar->wmi.cmd->scan_chan_list_cmdid); 3975 return ath10k_wmi_cmd_send(ar, skb, ar->wmi.cmd->scan_chan_list_cmdid);