From patchwork Tue Dec 12 19:04:00 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maya Erez X-Patchwork-Id: 10108203 X-Patchwork-Delegate: kvalo@adurom.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id BDA48602C2 for ; Tue, 12 Dec 2017 19:04:23 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B14F62623C for ; Tue, 12 Dec 2017 19:04:23 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A622829041; Tue, 12 Dec 2017 19:04:23 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4EC832623C for ; Tue, 12 Dec 2017 19:04:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752579AbdLLTEW (ORCPT ); Tue, 12 Dec 2017 14:04:22 -0500 Received: from alexa-out.qualcomm.com ([129.46.98.28]:59744 "EHLO alexa-out.qualcomm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752563AbdLLTES (ORCPT ); Tue, 12 Dec 2017 14:04:18 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=qca.qualcomm.com; i=@qca.qualcomm.com; q=dns/txt; s=qcdkim; t=1513105458; x=1544641458; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=14V+h2rd+Jk97bXrvjILAZmjzD0q1YSaMNnTqTNPz9I=; b=lVJMXOnBRSiyBCAOnl2ke7NfdE8nnErZ3Cto2R+sgMtfU7ZywQLPrnlL QYrTIzr0iKMYfXznpYusz9HKgJPzmSTODDZ70gh6MABOq4YT/v+lWOLWw RnRoixhe4WEtmUEWl6P2fuRJZyUUG1+AHuER4Y2A+Ag5A9G3Ase6ym0PQ s=; Received: from ironmsg01-sd.qualcomm.com ([10.53.140.141]) by alexa-out.qualcomm.com with ESMTP/TLS/AES256-SHA; 12 Dec 2017 11:04:18 -0800 X-MGA-submission: =?us-ascii?q?MDG/eUU+6gntfrKdOOURpsU6uTR3B2fO2WHshz?= =?us-ascii?q?a8gFW9otvToiowTmckV9T1puARgFHhG0jiQfF4GjoKKUbnJAAuVNvNJO?= =?us-ascii?q?HFRVs5l/o6qjT3JqJKr68oFP3DxI2ON14GvPD6JxxjJ7UY21XUCbABIG?= =?us-ascii?q?ZB?= Received: from lx-merez1.mea.qualcomm.com ([10.18.173.103]) by ironmsg01-sd.qualcomm.com with ESMTP; 12 Dec 2017 11:04:16 -0800 From: Maya Erez To: Kalle Valo Cc: Lior David , linux-wireless@vger.kernel.org, wil6210@qca.qualcomm.com, Maya Erez Subject: [PATCH 7/9] wil6210: configurable broadcast TX MCS Date: Tue, 12 Dec 2017 21:04:00 +0200 Message-Id: <1513105442-28041-8-git-send-email-qca_merez@qca.qualcomm.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1513105442-28041-1-git-send-email-qca_merez@qca.qualcomm.com> References: <1513105442-28041-1-git-send-email-qca_merez@qca.qualcomm.com> Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Lior David Add 2 module parameters that control broadcast/multicast TX packets: 1. bcast_mcs0_limit - specify the maximum packet size that will be sent with MCS 0. 2. bcast_mcs - specify the MCS index to use when sending packets larger than above limit. Signed-off-by: Lior David Signed-off-by: Maya Erez --- drivers/net/wireless/ath/wil6210/txrx.c | 59 +++++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/ath/wil6210/txrx.c b/drivers/net/wireless/ath/wil6210/txrx.c index 89967ce..4fc05f7 100644 --- a/drivers/net/wireless/ath/wil6210/txrx.c +++ b/drivers/net/wireless/ath/wil6210/txrx.c @@ -67,6 +67,60 @@ static int headroom_size_set(const char *val, const struct kernel_param *kp) MODULE_PARM_DESC(headroom_size, " headroom size for rx skb allocation, default - 0"); +static uint bcast_mcs0_limit = WIL_BCAST_MCS0_LIMIT; +static int bcast_mcs0_limit_set(const char *val, const struct kernel_param *kp) +{ + int ret; + uint saved = bcast_mcs0_limit; + + ret = param_set_uint(val, kp); + if (ret) + return ret; + + if (bcast_mcs0_limit > WIL_BCAST_MCS0_LIMIT) { + bcast_mcs0_limit = saved; + ret = -EINVAL; + } + + return ret; +} + +static const struct kernel_param_ops bcast_mcs0_limit_ops = { + .set = bcast_mcs0_limit_set, + .get = param_get_uint, +}; + +module_param_cb(bcast_mcs0_limit_set, &bcast_mcs0_limit_ops, + &bcast_mcs0_limit, 0644); +MODULE_PARM_DESC(bcast_mcs0_limit, + " max broadcast packet size with MCS0, default - 1024 bytes"); + +static uint bcast_mcs = 1; +static int bcast_mcs_set(const char *val, const struct kernel_param *kp) +{ + int ret; + uint saved = bcast_mcs; + + ret = param_set_uint(val, kp); + if (ret) + return ret; + + if (bcast_mcs > WIL_MCS_MAX || bcast_mcs == 0) { + bcast_mcs = saved; + ret = -EINVAL; + } + + return ret; +} + +static const struct kernel_param_ops bcast_mcs_ops = { + .set = bcast_mcs_set, + .get = param_get_uint, +}; + +module_param_cb(bcast_mcs, &bcast_mcs_ops, &bcast_mcs, 0644); +MODULE_PARM_DESC(bcast_mcs, " MCS index for large bcast TX, default - 1"); + static inline uint wil_rx_snaplen(void) { return rx_align_2 ? 6 : 0; @@ -1783,8 +1837,9 @@ static int __wil_tx_vring(struct wil6210_priv *wil, struct vring *vring, wil_tx_desc_map(d, pa, len, vring_index); if (unlikely(mcast)) { d->mac.d[0] |= BIT(MAC_CFG_DESC_TX_0_MCS_EN_POS); /* MCS 0 */ - if (unlikely(len > WIL_BCAST_MCS0_LIMIT)) /* set MCS 1 */ - d->mac.d[0] |= (1 << MAC_CFG_DESC_TX_0_MCS_INDEX_POS); + if (unlikely(len > bcast_mcs0_limit)) /* use bcast_mcs */ + d->mac.d[0] |= (bcast_mcs << + MAC_CFG_DESC_TX_0_MCS_INDEX_POS); } /* Process TCP/UDP checksum offloading */ if (unlikely(wil_tx_desc_offload_setup(d, skb))) {