From patchwork Fri Feb 6 13:41:22 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Puzyniak X-Patchwork-Id: 5791781 Return-Path: X-Original-To: patchwork-ath10k@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 50C329F2ED for ; Fri, 6 Feb 2015 13:39:37 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 61F73201BC for ; Fri, 6 Feb 2015 13:39:36 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7C5DC201B4 for ; Fri, 6 Feb 2015 13:39:35 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1YJj85-00031B-Q1; Fri, 06 Feb 2015 13:39:29 +0000 Received: from mail-we0-x22d.google.com ([2a00:1450:400c:c03::22d]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1YJj84-00030E-6e for ath10k@lists.infradead.org; Fri, 06 Feb 2015 13:39:28 +0000 Received: by mail-we0-f173.google.com with SMTP id w55so2206027wes.4 for ; Fri, 06 Feb 2015 05:39:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tieto.com; s=google; h=from:to:cc:subject:date:message-id; bh=5r23m33OPSZ+74lXUFEWg+rMM6Q467CPd4ZB/TWNdUE=; b=yKhLToVCBzgTvmHp5BQRRe9n7egzvL0Ka49QifvihL7QzHTmm7ADFrUgB7RPbxRX+z nZlh0lCtiqYFYrW38V4tuTzgD739s7nUz8iYYZ1JLI6AYfw+YRuAxv7dpPNwOIlJ2V9x hT8ETP8CWS3ToHqDrJ1AeIHslBZKkm58NQNP8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=5r23m33OPSZ+74lXUFEWg+rMM6Q467CPd4ZB/TWNdUE=; b=HWOL4I4qmNn15IhCMUO++NyhuSV3TQnl654M9tfdYTsLbE9NRqrzq9a+1QSeHfEKfO Y+nGb4oT1r29r4E/X3Cs3C4P2jtYl/Cpvjh5ErULy/W5Ox8Z7SYZ5JTMeXWWZvxDMgJL IatUwC3qGqfbBIBO2OSHPlOLKXmqmtOIbiSzYoXCF+XdktRo4bZ/debM9PMpwxxsQD7a BID+5BCrcWMXQ1aHbzSVQSp3mfmOaqz4rfCrgXHrYU5juMQ+Wask4JwmL58kul45v472 +LQQZ3xgGrcG/tt7qathXzRQ276XqrtyMbf8vC4oLvgXWk1j+oyu2XmU1MEHKjdTqy3j 5rSA== X-Gm-Message-State: ALoCoQmHtHKv+CtYtH/ejmv7MAr5CRznrTPrmnb7Jmok0zJ+IzjPjylUwbLnlWGdQIWtYHUyhEXytgD9/xnuTsJYOkgn2ee4JjU/2vcSS8cQ+Fhl51EiB5RRA9Doe/dmdbl37rQ++aaPNUAhz5NrQl225SgC8R5uo6dq9DRXul4Gg4l+cO4Zi0o= X-Received: by 10.180.76.72 with SMTP id i8mr3639126wiw.22.1423229945161; Fri, 06 Feb 2015 05:39:05 -0800 (PST) Received: from dell-lap.com (apn-31-1-134-151.dynamic.gprs.plus.pl. [31.1.134.151]) by mx.google.com with ESMTPSA id d6sm1566823wic.1.2015.02.06.05.39.03 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 06 Feb 2015 05:39:04 -0800 (PST) From: Marek Puzyniak To: ath10k@lists.infradead.org Subject: [PATCH] ath10k: fix wmm params per vdev Date: Fri, 6 Feb 2015 14:41:22 +0100 Message-Id: <1423230082-2396-1-git-send-email-marek.puzyniak@tieto.com> X-Mailer: git-send-email 2.1.4 X-DomainID: tieto.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20150206_053928_382292_3180A6F7 X-CRM114-Status: GOOD ( 10.82 ) X-Spam-Score: -0.8 (/) Cc: Marek Puzyniak , linux-wireless@vger.kernel.org X-BeenThere: ath10k@lists.infradead.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: "ath10k" Errors-To: ath10k-bounces+patchwork-ath10k=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-4.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED, T_DKIM_INVALID, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 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. Also txop for per vdev settings has the same units as provided by mac80211. Patch concerns qca6174. Signed-off-by: Marek Puzyniak --- drivers/net/wireless/ath/ath10k/mac.c | 17 ++++++++--------- drivers/net/wireless/ath/ath10k/wmi-tlv.c | 15 +++++---------- drivers/net/wireless/ath/ath10k/wmi-tlv.h | 6 ++++++ 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c index d6d2f0f..4c4f4df 100644 --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c @@ -4161,13 +4161,7 @@ static int ath10k_conf_tx(struct ieee80211_hw *hw, p->cwmin = params->cw_min; p->cwmax = params->cw_max; p->aifs = params->aifs; - - /* - * The channel time duration programmed in the HW is in absolute - * microseconds, while mac80211 gives the txop in units of - * 32 microseconds. - */ - p->txop = params->txop * 32; + p->txop = params->txop; if (ar->wmi.ops->gen_vdev_wmm_conf) { ret = ath10k_wmi_vdev_wmm_conf(ar, arvif->vdev_id, @@ -4178,9 +4172,14 @@ static int ath10k_conf_tx(struct ieee80211_hw *hw, goto exit; } } else { - /* This won't work well with multi-interface cases but it's - * better than nothing. + /* When wmm params per vdev are not supported by firmware + * use per pdev params what won't work well with multi-interface + * cases but it's better than nothing. This require channel time + * duration programmed in the HW to be in absolute microseconds, + * while mac80211 gives the txop in units of 32 microseconds. */ + p->txop = p->txop * 32; + ret = ath10k_wmi_pdev_set_wmm_params(ar, &arvif->wmm_params); if (ret) { ath10k_warn(ar, "failed to set wmm params: %d\n", ret); diff --git a/drivers/net/wireless/ath/ath10k/wmi-tlv.c b/drivers/net/wireless/ath/ath10k/wmi-tlv.c index 71614ba..bdb3673 100644 --- a/drivers/net/wireless/ath/ath10k/wmi-tlv.c +++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.c @@ -1604,14 +1604,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); @@ -1623,13 +1621,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; diff --git a/drivers/net/wireless/ath/ath10k/wmi-tlv.h b/drivers/net/wireless/ath/ath10k/wmi-tlv.h index de68fe7..c54de47 100644 --- a/drivers/net/wireless/ath/ath10k/wmi-tlv.h +++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.h @@ -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 {