|
@@ -3136,6 +3136,76 @@ ath10k_wmi_tlv_op_gen_echo(struct ath10k *ar, u32 value)
|
|
|
return skb;
|
|
|
}
|
|
|
|
|
|
+static struct sk_buff *
|
|
|
+ath10k_wmi_tlv_op_gen_vdev_spectral_conf(struct ath10k *ar,
|
|
|
+ const struct wmi_vdev_spectral_conf_arg *arg)
|
|
|
+{
|
|
|
+ struct wmi_vdev_spectral_conf_cmd *cmd;
|
|
|
+ struct sk_buff *skb;
|
|
|
+ struct wmi_tlv *tlv;
|
|
|
+ void *ptr;
|
|
|
+ size_t len;
|
|
|
+
|
|
|
+ len = sizeof(*tlv) + sizeof(*cmd);
|
|
|
+ skb = ath10k_wmi_alloc_skb(ar, len);
|
|
|
+ if (!skb)
|
|
|
+ return ERR_PTR(-ENOMEM);
|
|
|
+
|
|
|
+ ptr = (void *)skb->data;
|
|
|
+ tlv = ptr;
|
|
|
+ tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_VDEV_SPECTRAL_CONFIGURE_CMD);
|
|
|
+ tlv->len = __cpu_to_le16(sizeof(*cmd));
|
|
|
+ cmd = (void *)tlv->value;
|
|
|
+ cmd->vdev_id = __cpu_to_le32(arg->vdev_id);
|
|
|
+ cmd->scan_count = __cpu_to_le32(arg->scan_count);
|
|
|
+ cmd->scan_period = __cpu_to_le32(arg->scan_period);
|
|
|
+ cmd->scan_priority = __cpu_to_le32(arg->scan_priority);
|
|
|
+ cmd->scan_fft_size = __cpu_to_le32(arg->scan_fft_size);
|
|
|
+ cmd->scan_gc_ena = __cpu_to_le32(arg->scan_gc_ena);
|
|
|
+ cmd->scan_restart_ena = __cpu_to_le32(arg->scan_restart_ena);
|
|
|
+ cmd->scan_noise_floor_ref = __cpu_to_le32(arg->scan_noise_floor_ref);
|
|
|
+ cmd->scan_init_delay = __cpu_to_le32(arg->scan_init_delay);
|
|
|
+ cmd->scan_nb_tone_thr = __cpu_to_le32(arg->scan_nb_tone_thr);
|
|
|
+ cmd->scan_str_bin_thr = __cpu_to_le32(arg->scan_str_bin_thr);
|
|
|
+ cmd->scan_wb_rpt_mode = __cpu_to_le32(arg->scan_wb_rpt_mode);
|
|
|
+ cmd->scan_rssi_rpt_mode = __cpu_to_le32(arg->scan_rssi_rpt_mode);
|
|
|
+ cmd->scan_rssi_thr = __cpu_to_le32(arg->scan_rssi_thr);
|
|
|
+ cmd->scan_pwr_format = __cpu_to_le32(arg->scan_pwr_format);
|
|
|
+ cmd->scan_rpt_mode = __cpu_to_le32(arg->scan_rpt_mode);
|
|
|
+ cmd->scan_bin_scale = __cpu_to_le32(arg->scan_bin_scale);
|
|
|
+ cmd->scan_dbm_adj = __cpu_to_le32(arg->scan_dbm_adj);
|
|
|
+ cmd->scan_chn_mask = __cpu_to_le32(arg->scan_chn_mask);
|
|
|
+
|
|
|
+ return skb;
|
|
|
+}
|
|
|
+
|
|
|
+static struct sk_buff *
|
|
|
+ath10k_wmi_tlv_op_gen_vdev_spectral_enable(struct ath10k *ar, u32 vdev_id,
|
|
|
+ u32 trigger, u32 enable)
|
|
|
+{
|
|
|
+ struct wmi_vdev_spectral_enable_cmd *cmd;
|
|
|
+ struct sk_buff *skb;
|
|
|
+ struct wmi_tlv *tlv;
|
|
|
+ void *ptr;
|
|
|
+ size_t len;
|
|
|
+
|
|
|
+ len = sizeof(*tlv) + sizeof(*cmd);
|
|
|
+ skb = ath10k_wmi_alloc_skb(ar, len);
|
|
|
+ if (!skb)
|
|
|
+ return ERR_PTR(-ENOMEM);
|
|
|
+
|
|
|
+ ptr = (void *)skb->data;
|
|
|
+ tlv = ptr;
|
|
|
+ tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_VDEV_SPECTRAL_ENABLE_CMD);
|
|
|
+ tlv->len = __cpu_to_le16(sizeof(*cmd));
|
|
|
+ cmd = (void *)tlv->value;
|
|
|
+ cmd->vdev_id = __cpu_to_le32(vdev_id);
|
|
|
+ cmd->trigger_cmd = __cpu_to_le32(trigger);
|
|
|
+ cmd->enable_cmd = __cpu_to_le32(enable);
|
|
|
+
|
|
|
+ return skb;
|
|
|
+}
|
|
|
+
|
|
|
/****************/
|
|
|
/* TLV mappings */
|
|
|
/****************/
|
|
@@ -3541,6 +3611,8 @@ static const struct wmi_ops wmi_tlv_ops = {
|
|
|
.fw_stats_fill = ath10k_wmi_main_op_fw_stats_fill,
|
|
|
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
|
|
|
.gen_echo = ath10k_wmi_tlv_op_gen_echo,
|
|
|
+ .gen_vdev_spectral_conf = ath10k_wmi_tlv_op_gen_vdev_spectral_conf,
|
|
|
+ .gen_vdev_spectral_enable = ath10k_wmi_tlv_op_gen_vdev_spectral_enable,
|
|
|
};
|
|
|
|
|
|
static const struct wmi_peer_flags_map wmi_tlv_peer_flags_map = {
|