Received: by 2002:a25:e7d8:0:0:0:0:0 with SMTP id e207csp1242354ybh; Thu, 12 Mar 2020 20:31:14 -0700 (PDT) X-Google-Smtp-Source: ADFU+vv835mMcsFi93LN0b7cZyRoTPLzQTIQN4brU/c/GpwmErJUXr1OIaMokomDnhhz80DD7qwq X-Received: by 2002:a9d:5d09:: with SMTP id b9mr9136403oti.207.1584070274741; Thu, 12 Mar 2020 20:31:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1584070274; cv=none; d=google.com; s=arc-20160816; b=WOqUaDuxNTw8f5FOy/eDXl4lx3tNLZ3u6WbqpbvVRNdvk7i06q0ySrS8RyaORxx5p1 bK+TDeh527aWuu16MsW1qywNULARFyhtd+ME6RxRDtfrmQBSxcuaaNuB+Kb4swP0wmsv 6AIXwFXJIKf8vytRjojLkGw4PZc8Jjg3EoQh499qDM4XRHvzId/CgMmnNHbsc6eu4RxH 85iLIHT3T1VUDPC5gKLf8MJx0Yt020N8Lt9f+jpJqsVdRhAQmd5MUf1xaY2btcgsmlD2 kz2MFSw/USgKL9LLakkrPQUHyS5RShxODG0uQOIvnrBxtfYTfE3HxbK9yrVhPc8c8R7o pp+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:authenticated-by; bh=gOoDa8fTXDzVvlQvL2gJuDE+HKwP6BCZ3SC6/Aa8qno=; b=HElwUR287tRKCoR7ZcDodCJrxIrSCEtXHhPPjjt45QOoOPFyJc1iAanNizLh6C9s13 a6F9YLAlAudUoz0GI8/0+x/ZXcuhZiHfcAtofxv/tPs3VpF+KnKLyHUNf2IrkXv9kwcM EuLMXHRBMydHzMhJd1jg5HJeEDX/u9IHqoSAZ9j8k0w005eze0iMIEaWB3vmhyAG0ei1 w9qJF6ErfFQKCpbzovIjY4pn3uGXLHFkPMsiGyDNnzsBFL8PhOyGHYFVstbt6wDKhtGg zAjXbQEUJWBelDljf6/CqmTLS7SlBj9n/pRwXDWwy5Ad+PHlZ11bCD/yaxEqEEilsmmi lF9Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w65si3728927oif.134.2020.03.12.20.31.04; Thu, 12 Mar 2020 20:31:14 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726475AbgCMDac (ORCPT + 99 others); Thu, 12 Mar 2020 23:30:32 -0400 Received: from rtits2.realtek.com ([211.75.126.72]:54226 "EHLO rtits2.realtek.com.tw" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726395AbgCMDac (ORCPT ); Thu, 12 Mar 2020 23:30:32 -0400 Authenticated-By: X-SpamFilter-By: BOX Solutions SpamTrap 5.62 with qID 02D3UBGZ000329, This message is accepted by code: ctloc85258 Received: from mail.realtek.com (RTEXMB06.realtek.com.tw[172.21.6.99]) by rtits2.realtek.com.tw (8.15.2/2.57/5.78) with ESMTPS id 02D3UBGZ000329 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 13 Mar 2020 11:30:11 +0800 Received: from RTEXMB04.realtek.com.tw (172.21.6.97) by RTEXMB06.realtek.com.tw (172.21.6.99) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1779.2; Fri, 13 Mar 2020 11:30:11 +0800 Received: from localhost.localdomain (172.21.68.128) by RTEXMB04.realtek.com.tw (172.21.6.97) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1779.2; Fri, 13 Mar 2020 11:30:11 +0800 From: To: CC: , , , , Subject: [PATCH v3 2/2] rtw88: add a debugfs entry to enable/disable coex mechanism Date: Fri, 13 Mar 2020 11:30:07 +0800 Message-ID: <20200313033008.20070-3-yhchuang@realtek.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200313033008.20070-1-yhchuang@realtek.com> References: <20200313033008.20070-1-yhchuang@realtek.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [172.21.68.128] X-ClientProxiedBy: RTEXMB03.realtek.com.tw (172.21.6.96) To RTEXMB04.realtek.com.tw (172.21.6.97) Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org From: Yan-Hsuan Chuang Sometimes we need to stop the coex mechanism to debug, so that we can manually control the device through various outer commands. Hence, add a new debugfs coex_enable to allow us to enable/disable the coex mechanism when driver is running. To disable coex echo 0 > /sys/kernel/debug/ieee80211/phyX/rtw88/coex_enable To enable coex echo 1 > /sys/kernel/debug/ieee80211/phyX/rtw88/coex_enable To check coex dm is enabled or not cat /sys/kernel/debug/ieee80211/phyX/rtw88/coex_enable Signed-off-by: Yan-Hsuan Chuang --- v1 -> v2 * no change v2 -> v3 * use kstrtobool() instead of sscanf() drivers/net/wireless/realtek/rtw88/debug.c | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/drivers/net/wireless/realtek/rtw88/debug.c b/drivers/net/wireless/realtek/rtw88/debug.c index b2d264270752..b4964306de61 100644 --- a/drivers/net/wireless/realtek/rtw88/debug.c +++ b/drivers/net/wireless/realtek/rtw88/debug.c @@ -706,6 +706,45 @@ static int rtw_debugfs_get_coex_info(struct seq_file *m, void *v) return 0; } +static ssize_t rtw_debugfs_set_coex_enable(struct file *filp, + const char __user *buffer, + size_t count, loff_t *loff) +{ + struct seq_file *seqpriv = (struct seq_file *)filp->private_data; + struct rtw_debugfs_priv *debugfs_priv = seqpriv->private; + struct rtw_dev *rtwdev = debugfs_priv->rtwdev; + struct rtw_coex *coex = &rtwdev->coex; + char tmp[32 + 1]; + bool enable; + int ret; + + rtw_debugfs_copy_from_user(tmp, sizeof(tmp), buffer, count, 1); + + ret = kstrtobool(tmp, &enable); + if (ret) { + rtw_warn(rtwdev, "invalid arguments\n"); + return ret; + } + + mutex_lock(&rtwdev->mutex); + coex->stop_dm = enable == 0; + mutex_unlock(&rtwdev->mutex); + + return count; +} + +static int rtw_debugfs_get_coex_enable(struct seq_file *m, void *v) +{ + struct rtw_debugfs_priv *debugfs_priv = m->private; + struct rtw_dev *rtwdev = debugfs_priv->rtwdev; + struct rtw_coex *coex = &rtwdev->coex; + + seq_printf(m, "coex mechanism %s\n", + coex->stop_dm ? "disabled" : "enabled"); + + return 0; +} + #define rtw_debug_impl_mac(page, addr) \ static struct rtw_debugfs_priv rtw_debug_priv_mac_ ##page = { \ .cb_read = rtw_debug_get_mac_page, \ @@ -796,6 +835,11 @@ static struct rtw_debugfs_priv rtw_debug_priv_phy_info = { .cb_read = rtw_debugfs_get_phy_info, }; +static struct rtw_debugfs_priv rtw_debug_priv_coex_enable = { + .cb_write = rtw_debugfs_set_coex_enable, + .cb_read = rtw_debugfs_get_coex_enable, +}; + static struct rtw_debugfs_priv rtw_debug_priv_coex_info = { .cb_read = rtw_debugfs_get_coex_info, }; @@ -831,6 +875,7 @@ void rtw_debugfs_init(struct rtw_dev *rtwdev) rtw_debugfs_add_rw(rsvd_page); rtw_debugfs_add_r(phy_info); rtw_debugfs_add_r(coex_info); + rtw_debugfs_add_rw(coex_enable); rtw_debugfs_add_r(mac_0); rtw_debugfs_add_r(mac_1); rtw_debugfs_add_r(mac_2); -- 2.17.1