diff options
author | Michal Kazior <michal.kazior@tieto.com> | 2014-09-18 09:21:21 -0400 |
---|---|---|
committer | Kalle Valo <kvalo@qca.qualcomm.com> | 2014-09-23 05:30:58 -0400 |
commit | 2d66721c7bb1a6888eb17dd29758daf642df0b82 (patch) | |
tree | 8c289bc6218c7bf435c07fd81e6b368d4981ae63 /drivers/net/wireless/ath/ath10k/wmi.c | |
parent | 1435c2bbdd913281a982f49d6a886cbfbc0a5950 (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.c | 77 |
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 | ||
612 | static void | ||
613 | ath10k_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 | |||
612 | int ath10k_wmi_wait_for_service_ready(struct ath10k *ar) | 646 | int 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); |