Received: by 2002:a25:ef43:0:0:0:0:0 with SMTP id w3csp242291ybm; Thu, 28 May 2020 01:24:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyXhiTHOjNja+9iz8ZKPVvof60AxG6bM620H5TcvbuXfGqN0YSohh6tRVcwxSkHhUFT6zhF X-Received: by 2002:a17:906:48ce:: with SMTP id d14mr2128963ejt.468.1590654267616; Thu, 28 May 2020 01:24:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1590654267; cv=none; d=google.com; s=arc-20160816; b=iMr3LsCc0PZy4NlDdFAvdo240SrH61+Yy2HU0cFGp11oYYzZqX8bxLGPcmPpI4eqiB 8wzJZwioNmGv7OO+jjpUm2YqPzbl0FM/94KZ7dv7gcfKviXiM1jQT94DUZnBNxN1k0TR sWKBP45wqQe60+01SgNFiUADpq6HFIZbdTwTYD1yImpkKICJcPi4NBNpIJXSdgnM0ywd beBxzMTTkS9IO66FEok0nsiUTZZ3BfATURLwrITtE0WqFKKpQ1x0pBUWT2rHvRMz4fgw 252W6trQ9qsZg09NiRv3Fzq1wpWVf76yNFlpdTm88Qd/AN5Nahlm4DcATuSPp/y7XS3k FgZA== 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=T7geRMhjQVLRr1HdRtcn2s1WIWCw6oHaBXbZO7MvDvQ=; b=NGRsxwCY4uIcAm8zL/j99vlBIYmebmhiVC4t79WxTbZ54SOoF/KXbV7FaUWKqOnLk1 dN6bUJyGkCwBSVSyfAeT5Ysr/oGwJDLrnQxHfLXeHH3t0RXYaSrah6ffaYRnEQKH+gCX f017UvzeDl5KmHC6isYrweiYkLHdUphuD7VWkhbBxABIZqjd/X58Fu6aL4NKZ4pWUoFK rJJ49rKouNluLaBbgPaPWykdRUyNwwumYJ8WkT7ta02g71o1FtCdztw+6anIimLHxCuy PHWAswhdgRr5wQ2IDCTfuHkiyQJg5bE7+TYzkLyqFAkTGjmtsgpZvTbyOPYkZL3Rml3u Iyzw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z2si3129748edk.387.2020.05.28.01.24.04; Thu, 28 May 2020 01:24:27 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726927AbgE1IWP (ORCPT + 99 others); Thu, 28 May 2020 04:22:15 -0400 Received: from rtits2.realtek.com ([211.75.126.72]:55029 "EHLO rtits2.realtek.com.tw" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726635AbgE1IWO (ORCPT ); Thu, 28 May 2020 04:22:14 -0400 Authenticated-By: X-SpamFilter-By: ArmorX SpamTrap 5.69 with qID 04S8M9tiC004571, 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.66/5.86) with ESMTPS id 04S8M9tiC004571 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT); Thu, 28 May 2020 16:22:09 +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; Thu, 28 May 2020 16:22:09 +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; Thu, 28 May 2020 16:22:09 +0800 From: To: CC: , Subject: [PATCH 1/5] rtw88: 8821c: add cck pd settings Date: Thu, 28 May 2020 16:22:03 +0800 Message-ID: <20200528082207.26521-2-yhchuang@realtek.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200528082207.26521-1-yhchuang@realtek.com> References: <20200528082207.26521-1-yhchuang@realtek.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [172.21.68.128] X-ClientProxiedBy: RTEXMB02.realtek.com.tw (172.21.6.95) 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: Tzu-En Huang CCK PD reduces the numbers of false alram in cck rate by dynamically adjusting the value of power threshold and cs_ratio. We define current circumstance in to levels, Compared to the previous level, if the level is changed, we set the new values for power threshold and cs_ratio. Implement this for 8821c. Signed-off-by: Tzu-En Huang Signed-off-by: Yan-Hsuan Chuang --- drivers/net/wireless/realtek/rtw88/main.h | 1 + drivers/net/wireless/realtek/rtw88/rtw8821c.c | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/drivers/net/wireless/realtek/rtw88/main.h b/drivers/net/wireless/realtek/rtw88/main.h index 7b6488406836..d46fc9dd949c 100644 --- a/drivers/net/wireless/realtek/rtw88/main.h +++ b/drivers/net/wireless/realtek/rtw88/main.h @@ -1482,6 +1482,7 @@ struct rtw_dm_info { /* [bandwidth 0:20M/1:40M][number of path] */ u8 cck_pd_lv[2][RTW_RF_PATH_MAX]; u32 cck_fa_avg; + u8 cck_pd_default; /* save the last rx phy status for debug */ s8 rx_snr[RTW_RF_PATH_MAX]; diff --git a/drivers/net/wireless/realtek/rtw88/rtw8821c.c b/drivers/net/wireless/realtek/rtw88/rtw8821c.c index 749569eab912..16703086d64f 100644 --- a/drivers/net/wireless/realtek/rtw88/rtw8821c.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8821c.c @@ -99,6 +99,7 @@ static void rtw8821c_phy_set_param(struct rtw_dev *rtwdev) rtwdev->chip->ch_param[2] = rtw_read32_mask(rtwdev, 0xaac, MASKDWORD); rtw_phy_init(rtwdev); + rtwdev->dm_info.cck_pd_default = rtw_read8(rtwdev, 0xaaa) & 0x1f; } static int rtw8821c_mac_init(struct rtw_dev *rtwdev) @@ -588,6 +589,29 @@ static void rtw8821c_phy_calibration(struct rtw_dev *rtwdev) rtw8821c_do_iqk(rtwdev); } +static void rtw8821c_phy_cck_pd_set(struct rtw_dev *rtwdev, u8 new_lvl) +{ + struct rtw_dm_info *dm_info = &rtwdev->dm_info; + u8 pd[CCK_PD_LV_MAX] = {3, 7, 13, 13, 13}; + + if (dm_info->min_rssi > 60) { + new_lvl = 4; + pd[4] = 0x1d; + goto set_cck_pd; + } + + if (dm_info->cck_pd_lv[RTW_CHANNEL_WIDTH_20][RF_PATH_A] == new_lvl) + return; + + dm_info->cck_fa_avg = CCK_FA_AVG_RESET; + +set_cck_pd: + dm_info->cck_pd_lv[RTW_CHANNEL_WIDTH_20][RF_PATH_A] = new_lvl; + rtw_write32_mask(rtwdev, 0xa08, 0x3f0000, pd[new_lvl]); + rtw_write32_mask(rtwdev, 0xaa8, 0x1f0000, + dm_info->cck_pd_default + new_lvl * 2); +} + static struct rtw_pwr_seq_cmd trans_carddis_to_cardemu_8821c[] = { {0x0086, RTW_PWR_CUT_ALL_MSK, @@ -1027,6 +1051,7 @@ static struct rtw_chip_ops rtw8821c_ops = { .cfg_ldo25 = rtw8821c_cfg_ldo25, .false_alarm_statistics = rtw8821c_false_alarm_statistics, .phy_calibration = rtw8821c_phy_calibration, + .cck_pd_set = rtw8821c_phy_cck_pd_set, }; struct rtw_chip_info rtw8821c_hw_spec = { -- 2.17.1