ath10k: fix wmm params per vdev
authorMarek Puzyniak <marek.puzyniak@tieto.com>
Tue, 10 Feb 2015 11:38:15 +0000 (12:38 +0100)
committerKalle Valo <kvalo@qca.qualcomm.com>
Wed, 4 Mar 2015 12:10:35 +0000 (14:10 +0200)
During wmm tests changing wmm parameters did not change anything.
This was because of mismatch in WMM params per vdev command.
WMM params per vdev uses different command structure than wmm params
per pdev command.

Patch concerns qca6174.

Signed-off-by: Marek Puzyniak <marek.puzyniak@tieto.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath10k/wmi-tlv.c
drivers/net/wireless/ath/ath10k/wmi-tlv.h

index f34baa0c9e87ef8afe311955a82924c41a8fa2ee..ee0c5f602e297424b3f5eb143cdda542b1231291 100644 (file)
@@ -1710,14 +1710,12 @@ ath10k_wmi_tlv_op_gen_vdev_wmm_conf(struct ath10k *ar, u32 vdev_id,
                                    const struct wmi_wmm_params_all_arg *arg)
 {
        struct wmi_tlv_vdev_set_wmm_cmd *cmd;
-       struct wmi_wmm_params *wmm;
        struct wmi_tlv *tlv;
        struct sk_buff *skb;
        size_t len;
        void *ptr;
 
-       len = (sizeof(*tlv) + sizeof(*cmd)) +
-             (4 * (sizeof(*tlv) + sizeof(*wmm)));
+       len = sizeof(*tlv) + sizeof(*cmd);
        skb = ath10k_wmi_alloc_skb(ar, len);
        if (!skb)
                return ERR_PTR(-ENOMEM);
@@ -1729,13 +1727,10 @@ ath10k_wmi_tlv_op_gen_vdev_wmm_conf(struct ath10k *ar, u32 vdev_id,
        cmd = (void *)tlv->value;
        cmd->vdev_id = __cpu_to_le32(vdev_id);
 
-       ptr += sizeof(*tlv);
-       ptr += sizeof(*cmd);
-
-       ptr = ath10k_wmi_tlv_put_wmm(ptr, &arg->ac_be);
-       ptr = ath10k_wmi_tlv_put_wmm(ptr, &arg->ac_bk);
-       ptr = ath10k_wmi_tlv_put_wmm(ptr, &arg->ac_vi);
-       ptr = ath10k_wmi_tlv_put_wmm(ptr, &arg->ac_vo);
+       ath10k_wmi_set_wmm_param(&cmd->vdev_wmm_params[0].params, &arg->ac_be);
+       ath10k_wmi_set_wmm_param(&cmd->vdev_wmm_params[1].params, &arg->ac_bk);
+       ath10k_wmi_set_wmm_param(&cmd->vdev_wmm_params[2].params, &arg->ac_vi);
+       ath10k_wmi_set_wmm_param(&cmd->vdev_wmm_params[3].params, &arg->ac_vo);
 
        ath10k_dbg(ar, ATH10K_DBG_WMI, "wmi tlv vdev wmm conf\n");
        return skb;
index d7a31e15910d47c78693878291abb899db2351e4..a6c8280cc4b194384c1abee08e8d379bd4754e23 100644 (file)
@@ -1302,8 +1302,14 @@ struct wmi_tlv_pdev_set_wmm_cmd {
        __le32 dg_type; /* no idea.. */
 } __packed;
 
+struct wmi_tlv_vdev_wmm_params {
+       __le32 dummy;
+       struct wmi_wmm_params params;
+} __packed;
+
 struct wmi_tlv_vdev_set_wmm_cmd {
        __le32 vdev_id;
+       struct wmi_tlv_vdev_wmm_params vdev_wmm_params[4];
 } __packed;
 
 struct wmi_tlv_phyerr_ev {