From patchwork Thu Apr 21 07:02:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: AceLan Kao X-Patchwork-Id: 1619982 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=OtUJhq0D; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KkT5h2NNBz9sCq for ; Thu, 21 Apr 2022 17:03:20 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1nhQqP-0000BI-Gs; Thu, 21 Apr 2022 07:03:13 +0000 Received: from mail-pj1-f48.google.com ([209.85.216.48]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1nhQqK-00008K-EB for kernel-team@lists.ubuntu.com; Thu, 21 Apr 2022 07:03:08 +0000 Received: by mail-pj1-f48.google.com with SMTP id md4so4120589pjb.4 for ; Thu, 21 Apr 2022 00:03:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5LCFfZdtApMrO+a3ozmVyih4RAMD0ezEB36n1tklaAY=; b=OtUJhq0DbHxetu8WzxywdjiagGxsgDMXbZV1+deF6+9eTy7OR9mYHWI4s/cNcPsJK1 14rX+ac9MW5KpwTJGkDSJkq3D5ItLxRRBL4c+S37UYAASwsnr92MLSFNn7gvLchiyGSK ExzP5vvUdvYK+703BrhEIFPzbtUWSamHUM2WL+0g552ozRQ6sbdNB6BnTsK0s0BWbJYO BNm1Idm28lfPum2ZUTzq+y1rCqUAHubbYs2qXhh0w1zx7rNqeLqxVPS4w1DojsyGY//7 qzo9YwxyIbgyT57SjVxavZpR6UB4YLcMrFjzkFFTFWc6FVRmr7LsAP2ebBWZJy0RxVQz oRVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=5LCFfZdtApMrO+a3ozmVyih4RAMD0ezEB36n1tklaAY=; b=SRg8nb+NV6x/wM5CHeBIGW2Iy19WIT3sbi4TI86i9hRpCGMKmPjSQjKP2nW6VaaT21 o9DEPYvIm4rKEsCQRDG0Ng9WIW2roDhNEXUQXc2cDvDww0ZSKLTK+2gitcnDoYkiwxB/ dz3tEAliCgMupCjy/p72zQqFzSqJBp/nxdaty2tthPCjP2s7lQMGOFp1+icDmPHUDyL+ F/G82F79DXNSv6RnnZFqIh+yqgvM0aL4KtdLGMRz+siId8g0CpdGIXh6T7yiZiRrIT+q NvDx0fJe0VhH3k8twKoopQ3NmtaGrPC5kITs1gGOq2LCgUhyKN0i3NzWO0NkPJ1tLXwl umPA== X-Gm-Message-State: AOAM531uLbjmSVkCLarmtjNBIzs5GGw0v/kz418N4x53AxZFx6wgYI3Y wHxex3xqR1qHAbMh+IHJPNtlrIfKUjk= X-Google-Smtp-Source: ABdhPJwpLAC3D9kLcgA7DUHPYCQzvkqQ9uFzNNghAKo8u32b44cK7LDb4JsCsduzq3XbB3F0q+r5Uw== X-Received: by 2002:a17:90b:268b:b0:1cd:3f24:d52d with SMTP id pl11-20020a17090b268b00b001cd3f24d52dmr8774161pjb.174.1650524586186; Thu, 21 Apr 2022 00:03:06 -0700 (PDT) Received: from localhost (220-135-95-34.hinet-ip.hinet.net. [220.135.95.34]) by smtp.gmail.com with ESMTPSA id j9-20020a056a00130900b004f73df40914sm22649752pfu.82.2022.04.21.00.03.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 00:03:05 -0700 (PDT) From: AceLan Kao To: kernel-team@lists.ubuntu.com Subject: [PATCH 1/5][SRU][J][OEM-5.14] rtw88: Add update beacon flow for AP mode Date: Thu, 21 Apr 2022 15:02:52 +0800 Message-Id: <20220421070302.11579-2-acelan.kao@canonical.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220421070302.11579-1-acelan.kao@canonical.com> References: <20220421070302.11579-1-acelan.kao@canonical.com> MIME-Version: 1.0 Received-SPF: pass client-ip=209.85.216.48; envelope-from=acelan@gmail.com; helo=mail-pj1-f48.google.com X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Po-Hao Huang BugLink: https://bugs.launchpad.net/bugs/1969326 To support stations in power saving mode, AP should notify stations that there are frames buffered at the AP via TIM during beacons. Driver used to transmit identical beacons that were downloaded to hardware during the initiation phase. This beacon will become obsolete over time. If the beacon does not contain sufficient information, station would not be able to percept that there is data to receive. Hence it won't wake up and start the PS-poll procedure, this could lead to timeout and/or lost data segments. In order to resolve this issue, driver will now download beacon to hardware whenever the content is updated. Enable hardware to update dtim_count for more efficiency, this reduces the overhead of downloading beacon at every beacon interval since most of the time only the dtim_count needs to be updated. Change queue mapping for broadcast/multicast frames to high queue, so these frames can be prioritized and sent when dtim_count is zero. Signed-off-by: Po-Hao Huang Signed-off-by: Ping-Ke Shih Signed-off-by: Kalle Valo Link: https://lore.kernel.org/r/20220407095858.46807-4-pkshih@realtek.com (baported from commit f2217968ffdae702c21cc00fa804fbbd9ee6bb4b linux-next) Signed-off-by: Chia-Lin Kao (AceLan) --- drivers/net/wireless/realtek/rtw88/fw.c | 4 +++- drivers/net/wireless/realtek/rtw88/fw.h | 1 + drivers/net/wireless/realtek/rtw88/mac80211.c | 17 ++++++++++++++++- drivers/net/wireless/realtek/rtw88/main.c | 6 ++++++ drivers/net/wireless/realtek/rtw88/main.h | 2 ++ drivers/net/wireless/realtek/rtw88/pci.c | 3 +++ drivers/net/wireless/realtek/rtw88/reg.h | 2 ++ drivers/net/wireless/realtek/rtw88/tx.c | 17 +++++++++++++++++ drivers/net/wireless/realtek/rtw88/tx.h | 4 ++++ 9 files changed, 54 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw88/fw.c b/drivers/net/wireless/realtek/rtw88/fw.c index a384fc3a4f2b0..aaefaabf2fd7f 100644 --- a/drivers/net/wireless/realtek/rtw88/fw.c +++ b/drivers/net/wireless/realtek/rtw88/fw.c @@ -1001,6 +1001,7 @@ static struct sk_buff *rtw_get_rsvd_page_skb(struct ieee80211_hw *hw, struct rtw_vif *rtwvif; struct sk_buff *skb_new; struct cfg80211_ssid *ssid; + u16 tim_offset; if (rsvd_pkt->type == RSVD_DUMMY) { skb_new = alloc_skb(1, GFP_KERNEL); @@ -1019,7 +1020,8 @@ static struct sk_buff *rtw_get_rsvd_page_skb(struct ieee80211_hw *hw, switch (rsvd_pkt->type) { case RSVD_BEACON: - skb_new = ieee80211_beacon_get(hw, vif); + skb_new = ieee80211_beacon_get_tim(hw, vif, &tim_offset, NULL); + rsvd_pkt->tim_offset = tim_offset; break; case RSVD_PS_POLL: skb_new = ieee80211_pspoll_get(hw, vif); diff --git a/drivers/net/wireless/realtek/rtw88/fw.h b/drivers/net/wireless/realtek/rtw88/fw.h index a3a28ac6f1ded..d39f48fe1203b 100644 --- a/drivers/net/wireless/realtek/rtw88/fw.h +++ b/drivers/net/wireless/realtek/rtw88/fw.h @@ -145,6 +145,7 @@ struct rtw_rsvd_page { struct sk_buff *skb; enum rtw_rsvd_packet_type type; u8 page; + u16 tim_offset; bool add_txdesc; struct cfg80211_ssid *ssid; u16 probe_req_size; diff --git a/drivers/net/wireless/realtek/rtw88/mac80211.c b/drivers/net/wireless/realtek/rtw88/mac80211.c index 6f5629852416a..9a8f6a84baa96 100644 --- a/drivers/net/wireless/realtek/rtw88/mac80211.c +++ b/drivers/net/wireless/realtek/rtw88/mac80211.c @@ -391,8 +391,10 @@ static void rtw_ops_bss_info_changed(struct ieee80211_hw *hw, coex_stat->wl_beacon_interval = conf->beacon_int; } - if (changed & BSS_CHANGED_BEACON) + if (changed & BSS_CHANGED_BEACON) { + rtw_set_dtim_period(rtwdev, conf->dtim_period); rtw_fw_download_rsvd_page(rtwdev); + } if (changed & BSS_CHANGED_BEACON_ENABLED) { if (conf->enable_beacon) @@ -463,6 +465,18 @@ static int rtw_ops_sta_remove(struct ieee80211_hw *hw, return 0; } +static int rtw_ops_set_tim(struct ieee80211_hw *hw, struct ieee80211_sta *sta, + bool set) +{ + struct rtw_dev *rtwdev = hw->priv; + + mutex_lock(&rtwdev->mutex); + rtw_fw_download_rsvd_page(rtwdev); + mutex_unlock(&rtwdev->mutex); + + return 0; +} + static int rtw_ops_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd, struct ieee80211_vif *vif, struct ieee80211_sta *sta, struct ieee80211_key_conf *key) @@ -829,6 +843,7 @@ const struct ieee80211_ops rtw_ops = { .conf_tx = rtw_ops_conf_tx, .sta_add = rtw_ops_sta_add, .sta_remove = rtw_ops_sta_remove, + .set_tim = rtw_ops_set_tim, .set_key = rtw_ops_set_key, .ampdu_action = rtw_ops_ampdu_action, .can_aggregate_in_amsdu = rtw_ops_can_aggregate_in_amsdu, diff --git a/drivers/net/wireless/realtek/rtw88/main.c b/drivers/net/wireless/realtek/rtw88/main.c index d451ec3d20585..e385da5140910 100644 --- a/drivers/net/wireless/realtek/rtw88/main.c +++ b/drivers/net/wireless/realtek/rtw88/main.c @@ -628,6 +628,12 @@ static void rtw_txq_ba_work(struct work_struct *work) rtw_iterate_stas_atomic(rtwdev, rtw_txq_ba_iter, &data); } +void rtw_set_dtim_period(struct rtw_dev *rtwdev, int dtim_period) +{ + rtw_write32_set(rtwdev, REG_TCR, BIT_TCR_UPDATE_TIMIE); + rtw_write8(rtwdev, REG_DTIM_COUNTER_ROOT, dtim_period - 1); +} + void rtw_get_channel_params(struct cfg80211_chan_def *chandef, struct rtw_channel_params *chan_params) { diff --git a/drivers/net/wireless/realtek/rtw88/main.h b/drivers/net/wireless/realtek/rtw88/main.h index e5af375b3dd01..32f663ca235ef 100644 --- a/drivers/net/wireless/realtek/rtw88/main.h +++ b/drivers/net/wireless/realtek/rtw88/main.h @@ -571,6 +571,7 @@ struct rtw_tx_pkt_info { u32 tx_pkt_size; u8 offset; u8 pkt_offset; + u8 tim_offset; u8 mac_id; u8 rate_id; u8 rate; @@ -1975,6 +1976,7 @@ static inline int rtw_chip_dump_fw_crash(struct rtw_dev *rtwdev) void rtw_get_channel_params(struct cfg80211_chan_def *chandef, struct rtw_channel_params *ch_param); bool check_hw_ready(struct rtw_dev *rtwdev, u32 addr, u32 mask, u32 target); +void rtw_set_dtim_period(struct rtw_dev *rtwdev, int dtim_period); bool ltecoex_read_reg(struct rtw_dev *rtwdev, u16 offset, u32 *val); bool ltecoex_reg_write(struct rtw_dev *rtwdev, u16 offset, u32 value); void rtw_restore_reg(struct rtw_dev *rtwdev, diff --git a/drivers/net/wireless/realtek/rtw88/pci.c b/drivers/net/wireless/realtek/rtw88/pci.c index 029bd7de9db2a..cca3990547edd 100644 --- a/drivers/net/wireless/realtek/rtw88/pci.c +++ b/drivers/net/wireless/realtek/rtw88/pci.c @@ -691,6 +691,9 @@ static u8 rtw_hw_queue_mapping(struct sk_buff *skb) queue = RTW_TX_QUEUE_BCN; else if (unlikely(ieee80211_is_mgmt(fc) || ieee80211_is_ctl(fc))) queue = RTW_TX_QUEUE_MGMT; + else if (is_broadcast_ether_addr(hdr->addr1) || + is_multicast_ether_addr(hdr->addr1)) + queue = RTW_TX_QUEUE_HI0; else if (WARN_ON_ONCE(q_mapping >= ARRAY_SIZE(ac_to_hwq))) queue = ac_to_hwq[IEEE80211_AC_BE]; else diff --git a/drivers/net/wireless/realtek/rtw88/reg.h b/drivers/net/wireless/realtek/rtw88/reg.h index c0fb1e446245f..8cb6935300656 100644 --- a/drivers/net/wireless/realtek/rtw88/reg.h +++ b/drivers/net/wireless/realtek/rtw88/reg.h @@ -387,12 +387,14 @@ #define BIT_EN_FREE_CNT BIT(3) #define BIT_DIS_SECOND_CCA (BIT(0) | BIT(1)) #define REG_HIQ_NO_LMT_EN 0x5A7 +#define REG_DTIM_COUNTER_ROOT 0x5A8 #define BIT_HIQ_NO_LMT_EN_ROOT BIT(0) #define REG_TIMER0_SRC_SEL 0x05B4 #define BIT_TSFT_SEL_TIMER0 (BIT(4) | BIT(5) | BIT(6)) #define REG_TCR 0x0604 #define BIT_PWRMGT_HWDATA_EN BIT(7) +#define BIT_TCR_UPDATE_TIMIE BIT(5) #define REG_RCR 0x0608 #define BIT_APP_FCS BIT(31) #define BIT_APP_MIC BIT(30) diff --git a/drivers/net/wireless/realtek/rtw88/tx.c b/drivers/net/wireless/realtek/rtw88/tx.c index 0193708fc0136..1e0957b1191f3 100644 --- a/drivers/net/wireless/realtek/rtw88/tx.c +++ b/drivers/net/wireless/realtek/rtw88/tx.c @@ -67,6 +67,10 @@ void rtw_tx_fill_tx_desc(struct rtw_tx_pkt_info *pkt_info, struct sk_buff *skb) SET_TX_DESC_HW_SSN_SEL(txdesc, pkt_info->hw_ssn_sel); SET_TX_DESC_NAVUSEHDR(txdesc, pkt_info->nav_use_hdr); SET_TX_DESC_BT_NULL(txdesc, pkt_info->bt_null); + if (pkt_info->tim_offset) { + SET_TX_DESC_TIM_EN(txdesc, 1); + SET_TX_DESC_TIM_OFFSET(txdesc, pkt_info->tim_offset); + } } EXPORT_SYMBOL(rtw_tx_fill_tx_desc); @@ -422,6 +426,19 @@ void rtw_tx_rsvd_page_pkt_info_update(struct rtw_dev *rtwdev, if (type == RSVD_QOS_NULL) pkt_info->bt_null = true; + if (type == RSVD_BEACON) { + struct rtw_rsvd_page *rsvd_pkt; + int hdr_len; + + rsvd_pkt = list_first_entry_or_null(&rtwdev->rsvd_page_list, + struct rtw_rsvd_page, + build_list); + if (rsvd_pkt && rsvd_pkt->tim_offset != 0) { + hdr_len = sizeof(struct ieee80211_hdr_3addr); + pkt_info->tim_offset = rsvd_pkt->tim_offset - hdr_len; + } + } + rtw_tx_pkt_info_update_sec(rtwdev, pkt_info, skb); /* TODO: need to change hw port and hw ssn sel for multiple vifs */ diff --git a/drivers/net/wireless/realtek/rtw88/tx.h b/drivers/net/wireless/realtek/rtw88/tx.h index 56371eff9f7ff..8419603adce4a 100644 --- a/drivers/net/wireless/realtek/rtw88/tx.h +++ b/drivers/net/wireless/realtek/rtw88/tx.h @@ -33,6 +33,10 @@ le32p_replace_bits((__le32 *)(txdesc) + 0x05, value, GENMASK(6, 5)) #define SET_TX_DESC_SW_SEQ(txdesc, value) \ le32p_replace_bits((__le32 *)(txdesc) + 0x09, value, GENMASK(23, 12)) +#define SET_TX_DESC_TIM_EN(txdesc, value) \ + le32p_replace_bits((__le32 *)(txdesc) + 0x09, value, BIT(7)) +#define SET_TX_DESC_TIM_OFFSET(txdesc, value) \ + le32p_replace_bits((__le32 *)(txdesc) + 0x09, value, GENMASK(6, 0)) #define SET_TX_DESC_MAX_AGG_NUM(txdesc, value) \ le32p_replace_bits((__le32 *)(txdesc) + 0x03, value, GENMASK(21, 17)) #define SET_TX_DESC_USE_RTS(tx_desc, value) \ From patchwork Thu Apr 21 07:02:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: AceLan Kao X-Patchwork-Id: 1619983 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=EM+Bthe7; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KkT5h65jrz9sDX for ; Thu, 21 Apr 2022 17:03:20 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1nhQqP-0000Bp-SJ; Thu, 21 Apr 2022 07:03:13 +0000 Received: from mail-pj1-f50.google.com ([209.85.216.50]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1nhQqM-00008p-H6 for kernel-team@lists.ubuntu.com; Thu, 21 Apr 2022 07:03:10 +0000 Received: by mail-pj1-f50.google.com with SMTP id e62-20020a17090a6fc400b001d2cd8e9b0aso4312120pjk.5 for ; Thu, 21 Apr 2022 00:03:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rvDdSVWMcRQ4H33PvCFL79ilYvw+DKLi4ZFBqfMisfM=; b=EM+Bthe7+frsMaKaHEpSkZ+E2qArg4oGaq8eSnoSuS37EfD4KIGYVH8uMzpKE7MfUK qSXUU0j4HzWY/zhccF4bPG0tHwlANfVQ6nT/9ix2T3oytoX3CV3gFnyecb++AI3DSy+H Ysthe3W3UtXAiJ1cllZh5AfkelcAvZlOu3dXDGTnl6Gu1UZeHzPprgWDvRBgWdXWz5GQ WJ3LLm4G95gwnOOE9L168oEMhNR252UZqwRjBN2SCCmeDZNDQZg/Itjm7KcPbh6z33ZU oOvoy5sIs6eSk1C/LRyr2YH7a6LZ6nORon+FyHwdRgubR0vIjC3IsjH0oNrA62eeJZPV yYhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=rvDdSVWMcRQ4H33PvCFL79ilYvw+DKLi4ZFBqfMisfM=; b=1rWkHFp86hOuHf492s3o1HtMVRIaORvy/F+NSOruQg330A0vMjEXc3jhTzzUNBYUQt l46zzOvI0waev1D4dxI93D8dGoShOzCp+qLS4Ui1sFhGqFEBbm3a4BOgYCbQYm7xKjpl WEsB3pLON2Q4p8rRoSmOyspQ+CytGKL6/3GozKZrX2RFdvAIIdpKZPj08tJA1dzl6GPN sUvRT8l1s9oaWWtZ53WqYcL/sSfxaqssYRUsXt0o3zPVrqSEsI7iNrZLgpTIoIVyqSX0 oj/pfld4bQ7l4CcrSVPZZIoRKk5R5aZZq9EVwtT/iduHR4BnRY/Cj59DGb/L1mJiFJsr JhOw== X-Gm-Message-State: AOAM531kdh5pRG6HGIOz29XG4Rgqmap+9yT9EmvIFj7rg+zr4SdDMVdx GwLU8HWZubPKNdi9Vf3BCiG7xkv0UeE= X-Google-Smtp-Source: ABdhPJw9IjRmnHoCFlANXix8IPpyHSthmhJku/IbYVc0X5VwNxJ0dBYfpmBrmAp37cHYs16ca0kZiw== X-Received: by 2002:a17:902:ce81:b0:15a:daa7:30a0 with SMTP id f1-20020a170902ce8100b0015adaa730a0mr641744plg.44.1650524588543; Thu, 21 Apr 2022 00:03:08 -0700 (PDT) Received: from localhost (220-135-95-34.hinet-ip.hinet.net. [220.135.95.34]) by smtp.gmail.com with ESMTPSA id q7-20020a17090a2e0700b001cda0b69a30sm1400747pjd.52.2022.04.21.00.03.07 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 00:03:08 -0700 (PDT) From: AceLan Kao To: kernel-team@lists.ubuntu.com Subject: [PATCH 2/5][SRU][J][OEM-5.14] rtw88: 8821c: Enable TX report for management frames Date: Thu, 21 Apr 2022 15:02:53 +0800 Message-Id: <20220421070302.11579-3-acelan.kao@canonical.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220421070302.11579-1-acelan.kao@canonical.com> References: <20220421070302.11579-1-acelan.kao@canonical.com> MIME-Version: 1.0 Received-SPF: pass client-ip=209.85.216.50; envelope-from=acelan@gmail.com; helo=mail-pj1-f50.google.com X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Po-Hao Huang BugLink: https://bugs.launchpad.net/bugs/1969326 Without this setting, hardware would not report to driver even if management frames are transmitted successfully. So we fix it. Signed-off-by: Po-Hao Huang Signed-off-by: Ping-Ke Shih Signed-off-by: Kalle Valo Link: https://lore.kernel.org/r/20220407095858.46807-5-pkshih@realtek.com (cherry picked from commit f1c4dabfe68df7321cba0a07a30b2776a303abb2 linux-next) Signed-off-by: Chia-Lin Kao (AceLan) --- drivers/net/wireless/realtek/rtw88/rtw8821c_table.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/realtek/rtw88/rtw8821c_table.c b/drivers/net/wireless/realtek/rtw88/rtw8821c_table.c index 8e8915c5c4988..6c82c43834977 100644 --- a/drivers/net/wireless/realtek/rtw88/rtw8821c_table.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8821c_table.c @@ -13,7 +13,7 @@ static const u32 rtw8821c_mac[] = { 0x04F, 0x00000001, 0x029, 0x000000F9, 0x420, 0x00000080, - 0x421, 0x0000000F, + 0x421, 0x0000001F, 0x428, 0x0000000A, 0x429, 0x00000010, 0x430, 0x00000000, From patchwork Thu Apr 21 07:02:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: AceLan Kao X-Patchwork-Id: 1619984 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=h2/Sdkm+; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KkT5j5BV0z9sCq for ; Thu, 21 Apr 2022 17:03:21 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1nhQqR-0000DE-8Z; Thu, 21 Apr 2022 07:03:15 +0000 Received: from mail-pl1-f169.google.com ([209.85.214.169]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1nhQqO-00009w-Sh for kernel-team@lists.ubuntu.com; Thu, 21 Apr 2022 07:03:13 +0000 Received: by mail-pl1-f169.google.com with SMTP id j8so3976654pll.11 for ; Thu, 21 Apr 2022 00:03:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6sb88SPmeLPb1CDbMBIm1GHFw0SF14bTw5+VM68fHwE=; b=h2/Sdkm+zMKLZ75+AGQYPaSZjC3rHVSPt2l5UhYhtyjg+wDbT5SH0XCu4nYAYPZtJ5 TOO2q3P3EZfRTQ4Aqwh6+v+6/yEDrbny+lPWR9Du5ad9DSNgVwPFeOw84gpx93cwP50Z TO2JQOKt+6G6fZq62R1qk/Cyg1inNsF3oGfTPN+pn95BkxgVniaaWFWBaJ+ton0LZh9+ JxQQYZ7zGocVlhTGHvC993G08YkKQG3IiHQi1pwgNbu74624Uw6XSnAFVTwB0KSU/ziA 6+ZCMDLwf9rcz+qKUq4bkz4WDLhjZvmx9lMUCUOSsrkKtnoiacF7QY7Rqt3gYR6Rhj7j vlQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=6sb88SPmeLPb1CDbMBIm1GHFw0SF14bTw5+VM68fHwE=; b=fK66IfwC3IMzB02AF3Oxc4tHsmrm+uICHQu1rVwRt+L87BhCnHFXdvav2qh2/O5IEM KycJQYSCYxQDtcpoTZP+ZnkyMfG2GE89qmhPLZF3Zze4rtFDMV8/WzpSoFU/MDY61hUI Px8Z+ik5b1k+lGfA2WIqgIUDM5Gtu5vrDr4CBrp12Kc79MO978dXwOj+d8Hhp3WwBr4W gGsUTuya1CKbZv9OKvrghpju4sUgj9jbu2qeVIApVorfs6YJEluTkuVsJdLTZ+ixdBBV LAhgnx0Omd6nMFO79OVvi61RP7zDf5uPXtSCVL4HcFpKbaIGDxsE4nFKcUL5XOOVw0/p ZPrQ== X-Gm-Message-State: AOAM531fp4uaA/dHHMg1zT2l/lF0LOlK2yMl5hVJlpTeynY5SSoHaWP1 HyDk3WU9OR5OetezhrzpcG27nfpVSho= X-Google-Smtp-Source: ABdhPJyh7oaqKEPR4XR4TXDLS17tdOx8vmKDFPZSw6hhBFgl8Q/SL4J6l34ZYtJFTvgpaBhnCBJYQA== X-Received: by 2002:a17:903:20f:b0:158:d86a:f473 with SMTP id r15-20020a170903020f00b00158d86af473mr24222695plh.92.1650524590887; Thu, 21 Apr 2022 00:03:10 -0700 (PDT) Received: from localhost (220-135-95-34.hinet-ip.hinet.net. [220.135.95.34]) by smtp.gmail.com with ESMTPSA id p13-20020a056a000b4d00b004faecee6e89sm22734450pfo.208.2022.04.21.00.03.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 00:03:10 -0700 (PDT) From: AceLan Kao To: kernel-team@lists.ubuntu.com Subject: [PATCH 3/5][SRU][J][OEM-5.14] rtw88: do PHY calibration while starting AP Date: Thu, 21 Apr 2022 15:02:54 +0800 Message-Id: <20220421070302.11579-4-acelan.kao@canonical.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220421070302.11579-1-acelan.kao@canonical.com> References: <20220421070302.11579-1-acelan.kao@canonical.com> MIME-Version: 1.0 Received-SPF: pass client-ip=209.85.214.169; envelope-from=acelan@gmail.com; helo=mail-pl1-f169.google.com X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Ping-Ke Shih BugLink: https://bugs.launchpad.net/bugs/1969326 Calling calibration to yield expected PHY performance. We do this in STA mode, so do this in AP mode as well. Signed-off-by: Ping-Ke Shih Signed-off-by: Kalle Valo Link: https://lore.kernel.org/r/20220407095858.46807-6-pkshih@realtek.com (cherry picked from commit f5207c122102cac22c78f438610d937a924aee3a linux-next) Signed-off-by: Chia-Lin Kao (AceLan) --- drivers/net/wireless/realtek/rtw88/mac80211.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/net/wireless/realtek/rtw88/mac80211.c b/drivers/net/wireless/realtek/rtw88/mac80211.c index 9a8f6a84baa96..256af53734014 100644 --- a/drivers/net/wireless/realtek/rtw88/mac80211.c +++ b/drivers/net/wireless/realtek/rtw88/mac80211.c @@ -418,6 +418,18 @@ static void rtw_ops_bss_info_changed(struct ieee80211_hw *hw, mutex_unlock(&rtwdev->mutex); } +static int rtw_ops_start_ap(struct ieee80211_hw *hw, struct ieee80211_vif *vif) +{ + struct rtw_dev *rtwdev = hw->priv; + struct rtw_chip_info *chip = rtwdev->chip; + + mutex_lock(&rtwdev->mutex); + chip->ops->phy_calibration(rtwdev); + mutex_unlock(&rtwdev->mutex); + + return 0; +} + static int rtw_ops_conf_tx(struct ieee80211_hw *hw, struct ieee80211_vif *vif, u16 ac, const struct ieee80211_tx_queue_params *params) @@ -840,6 +852,7 @@ const struct ieee80211_ops rtw_ops = { .change_interface = rtw_ops_change_interface, .configure_filter = rtw_ops_configure_filter, .bss_info_changed = rtw_ops_bss_info_changed, + .start_ap = rtw_ops_start_ap, .conf_tx = rtw_ops_conf_tx, .sta_add = rtw_ops_sta_add, .sta_remove = rtw_ops_sta_remove, From patchwork Thu Apr 21 07:02:55 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: AceLan Kao X-Patchwork-Id: 1619985 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=OGKJWaWJ; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KkT5p68Gyz9sCq for ; Thu, 21 Apr 2022 17:03:26 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1nhQqW-0000LZ-UV; Thu, 21 Apr 2022 07:03:20 +0000 Received: from mail-pl1-f169.google.com ([209.85.214.169]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1nhQqU-0000C7-1g for kernel-team@lists.ubuntu.com; Thu, 21 Apr 2022 07:03:18 +0000 Received: by mail-pl1-f169.google.com with SMTP id d15so3981764pll.10 for ; Thu, 21 Apr 2022 00:03:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=spsoPsz80cLQwLKjwPZ+/CPOTO8Zg3qbsO4pp9NZxVw=; b=OGKJWaWJfGyTvMQcf6q7NiECNUNRoSMU/5boFaW/a1U2O7Z7LvlG1L/dRmKlL54XeI M/H4aSwYZtao76FNGQ0KCC7Q5zjCcZ3wh68BmkdBydBHDrcw06EFoFHMMKZEjFz+eUmR aj2NswkFb5x+Id4RqiJSBymCsF34fikEhkKtTVOl3LXBpeDnt+MVRkIM9//GoJ8Vn9bZ NlkfRaist6AsreRezaE2teBq+1YHTvgHOPYc9A/X7objkyLo9SwiSQUg5oXmTIL6LXrj 9h9wzj3oyY5ZA7mj3yblW1UliPHUk4BXChR+FXIieVQGLSo4dmER7XcG97NFSlIbmW+s ykZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=spsoPsz80cLQwLKjwPZ+/CPOTO8Zg3qbsO4pp9NZxVw=; b=0bjUicJcYrSjAkgVSS8QMKEGeI3smXOW1OMc4khgvFFKBJqrMu08vJxXRg0VHEK5Ib fmzqOPy40joNLZ6/YygmA5Mtg3QuPQc3Q5o9NtAUglyPsxLHpVM2b4fqCwRBNZSSYOoi rg1DTDG71q/YlcZk1a5eTRyl1qAuOR0JnikyhqhfpQhRwENanhmzIXtRx5rzKnA2UEB7 AASx0FjPA4raAejg0pW00fCnFXTB/kjyV3wGHYtAYrbTcAMGSKbpGVTEZkdUZxt4KgzR J351TgE8xFoiW+dChcDv/30anqROLZfyxIYH6YvvTFw2Bj70B/SlDn9FczreegpyP3tK qhoQ== X-Gm-Message-State: AOAM530Bwa5s8AfHDKYJ7O9ZFD89gKJqv7yLyCjZMI7xyk5KTX2pwaRN /+du7GJgxBpMJNPd9lGqpToo5Bw7kio= X-Google-Smtp-Source: ABdhPJw2aqlYURPzfz9DAnZS7Tse6sSI8AKRvnmWisKSQPfqSd1RsqepY63ZJLAafnR07qfTGMoxRg== X-Received: by 2002:a17:902:8e82:b0:151:6f68:7088 with SMTP id bg2-20020a1709028e8200b001516f687088mr25211552plb.11.1650524593292; Thu, 21 Apr 2022 00:03:13 -0700 (PDT) Received: from localhost (220-135-95-34.hinet-ip.hinet.net. [220.135.95.34]) by smtp.gmail.com with ESMTPSA id n13-20020a654ccd000000b0039db6f73e9dsm22230606pgt.28.2022.04.21.00.03.12 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 00:03:12 -0700 (PDT) From: AceLan Kao To: kernel-team@lists.ubuntu.com Subject: [PATCH 4/5][SRU][J][OEM-5.14] rtw88: 8821c: fix debugfs rssi value Date: Thu, 21 Apr 2022 15:02:55 +0800 Message-Id: <20220421070302.11579-5-acelan.kao@canonical.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220421070302.11579-1-acelan.kao@canonical.com> References: <20220421070302.11579-1-acelan.kao@canonical.com> MIME-Version: 1.0 Received-SPF: pass client-ip=209.85.214.169; envelope-from=acelan@gmail.com; helo=mail-pl1-f169.google.com X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Po-Hao Huang BugLink: https://bugs.launchpad.net/bugs/1969326 RSSI value per frame is reported to mac80211 but not maintained in our own statistics, add it back to help us debug. Signed-off-by: Po-Hao Huang Signed-off-by: Ping-Ke Shih Signed-off-by: Kalle Valo Link: https://lore.kernel.org/r/20220407095858.46807-7-pkshih@realtek.com (cherry picked from commit ece31c93d4d68f7eb8eea4431b052aacdb678de2 linux-next) Signed-off-by: Chia-Lin Kao (AceLan) --- drivers/net/wireless/realtek/rtw88/rtw8821c.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/net/wireless/realtek/rtw88/rtw8821c.c b/drivers/net/wireless/realtek/rtw88/rtw8821c.c index 785b8181513f1..f405f42d1c1b0 100644 --- a/drivers/net/wireless/realtek/rtw88/rtw8821c.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8821c.c @@ -506,6 +506,7 @@ static s8 get_cck_rx_pwr(struct rtw_dev *rtwdev, u8 lna_idx, u8 vga_idx) static void query_phy_status_page0(struct rtw_dev *rtwdev, u8 *phy_status, struct rtw_rx_pkt_stat *pkt_stat) { + struct rtw_dm_info *dm_info = &rtwdev->dm_info; s8 rx_power; u8 lna_idx = 0; u8 vga_idx = 0; @@ -517,6 +518,7 @@ static void query_phy_status_page0(struct rtw_dev *rtwdev, u8 *phy_status, pkt_stat->rx_power[RF_PATH_A] = rx_power; pkt_stat->rssi = rtw_phy_rf_power_2_rssi(pkt_stat->rx_power, 1); + dm_info->rssi[RF_PATH_A] = pkt_stat->rssi; pkt_stat->bw = RTW_CHANNEL_WIDTH_20; pkt_stat->signal_power = rx_power; } @@ -524,6 +526,7 @@ static void query_phy_status_page0(struct rtw_dev *rtwdev, u8 *phy_status, static void query_phy_status_page1(struct rtw_dev *rtwdev, u8 *phy_status, struct rtw_rx_pkt_stat *pkt_stat) { + struct rtw_dm_info *dm_info = &rtwdev->dm_info; u8 rxsc, bw; s8 min_rx_power = -120; @@ -543,6 +546,7 @@ static void query_phy_status_page1(struct rtw_dev *rtwdev, u8 *phy_status, pkt_stat->rx_power[RF_PATH_A] = GET_PHY_STAT_P1_PWDB_A(phy_status) - 110; pkt_stat->rssi = rtw_phy_rf_power_2_rssi(pkt_stat->rx_power, 1); + dm_info->rssi[RF_PATH_A] = pkt_stat->rssi; pkt_stat->bw = bw; pkt_stat->signal_power = max(pkt_stat->rx_power[RF_PATH_A], min_rx_power); From patchwork Thu Apr 21 07:02:56 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: AceLan Kao X-Patchwork-Id: 1619986 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=c4iSeAWH; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KkT5v22xlz9sCq for ; Thu, 21 Apr 2022 17:03:31 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1nhQqa-0000Rp-Pb; Thu, 21 Apr 2022 07:03:24 +0000 Received: from mail-pg1-f177.google.com ([209.85.215.177]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1nhQqW-0000Ea-3P for kernel-team@lists.ubuntu.com; Thu, 21 Apr 2022 07:03:20 +0000 Received: by mail-pg1-f177.google.com with SMTP id g9so3878836pgc.10 for ; Thu, 21 Apr 2022 00:03:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ccpwQcMx3Ky5Cf9R+WXo0feLVwufU/38+YkMecOne6k=; b=c4iSeAWHyNE1Qixq0vBRvxlwDSHy+n3hszaVlgULzRp6eHsFts4ey51/vNdlSIgKCH r5TIpTTMrfA8C5m2NmhTYhUbE3h0aMspNyxwVLTnWHKBA7EqsNVXv8rMwOVWytgrE9Fu jeF7DtaX4nBIEYiZuAM3rVmpn7SjbCGyYJWNsLI/gQ7e47VL6qFzi+rkaRri1zMD3lzK 2yeh5AzHjqtbRVQyIK+Bee5IOQw9lvCCM4L5v1lE30W761p5tZCD+GxAcMK4hLIkdgxb 1RI3Tgs9/vEAEjqWOewuxsm2hXsakHhzxRDb1IjZtATEaqaqdTl3isMXEZeVWgmmk4T7 D2zQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=ccpwQcMx3Ky5Cf9R+WXo0feLVwufU/38+YkMecOne6k=; b=PZvBdREB4Wi2bEwQ9IjbfDMfN+AA/jjyrWSXs4wPA5X1U9vQnDK1WNPd7sc4O0hlUL l9oQG7551AEBkBxyIKSMrpMhkmF4RCQrQ0fgnagGawJFCJ+q4tMdairkXe0akVEZgO49 uVMIwjcPZFAmADy+lBAdjSDy1JKw+8FccMe6y9ER+tMmZO7LBFuNnNhvOSkwMCR5NscS pkqybF7mCCImxX5JhuIIA5FQxehXbERk4C4BF0o21ihIk1vRg//7+bB+EcE9klLl5Nf1 Yjt1mtvytva0oOlNnrTn/uBtuus621onkLh94ZQDzlwN50E/TRgMaVA9cUCe4LmyKDdz o35g== X-Gm-Message-State: AOAM532Td10AUiYpiTMBl8AhqbwGAdR6wvIdBSTWvTq0cTVctVRs4CWh ItO7SDjJ/KyMOSO/gr3tmIcvnIc5UzQ= X-Google-Smtp-Source: ABdhPJytyPvFX0anF1H7h2itmSAUAaeksZQr3VB7SNL71egDCxBf2z1R4tNDW4hAo/GCkcx6HW3Tyg== X-Received: by 2002:a63:475b:0:b0:3aa:436f:8812 with SMTP id w27-20020a63475b000000b003aa436f8812mr9869120pgk.607.1650524595051; Thu, 21 Apr 2022 00:03:15 -0700 (PDT) Received: from localhost (220-135-95-34.hinet-ip.hinet.net. [220.135.95.34]) by smtp.gmail.com with ESMTPSA id br18-20020a17090b0f1200b001cd4989fed4sm1429280pjb.32.2022.04.21.00.03.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 00:03:14 -0700 (PDT) From: AceLan Kao To: kernel-team@lists.ubuntu.com Subject: [PATCH 5/5][SRU][J][OEM-5.14] rtw88: add ieee80211:sta_rc_update ops Date: Thu, 21 Apr 2022 15:02:56 +0800 Message-Id: <20220421070302.11579-6-acelan.kao@canonical.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220421070302.11579-1-acelan.kao@canonical.com> References: <20220421070302.11579-1-acelan.kao@canonical.com> MIME-Version: 1.0 Received-SPF: pass client-ip=209.85.215.177; envelope-from=acelan@gmail.com; helo=mail-pg1-f177.google.com X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Po-Hao Huang BugLink: https://bugs.launchpad.net/bugs/1969326 Adding this allows us to get notification when bitrate configuration of the station changes. Update according parameters to firmware so the rate control algorithm can work properly. Signed-off-by: Po-Hao Huang Signed-off-by: Ping-Ke Shih Signed-off-by: Kalle Valo Link: https://lore.kernel.org/r/20220407095858.46807-2-pkshih@realtek.com (backported from commit c1edc86472fc3a5aa3b5c5c53c4e20f6a24992a6 linux-next) Signed-off-by: Chia-Lin Kao (AceLan) --- drivers/net/wireless/realtek/rtw88/fw.c | 4 +--- drivers/net/wireless/realtek/rtw88/mac80211.c | 14 +++++++++++++- drivers/net/wireless/realtek/rtw88/main.c | 6 ++++-- drivers/net/wireless/realtek/rtw88/main.h | 5 +++-- drivers/net/wireless/realtek/rtw88/phy.c | 2 +- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw88/fw.c b/drivers/net/wireless/realtek/rtw88/fw.c index aaefaabf2fd7f..9b460a8fa86c4 100644 --- a/drivers/net/wireless/realtek/rtw88/fw.c +++ b/drivers/net/wireless/realtek/rtw88/fw.c @@ -541,7 +541,6 @@ void rtw_fw_send_rssi_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si) void rtw_fw_send_ra_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si) { u8 h2c_pkt[H2C_PKT_SIZE] = {0}; - bool no_update = si->updated; bool disable_pt = true; SET_H2C_CMD_ID_CLASS(h2c_pkt, H2C_CMD_RA_INFO); @@ -552,7 +551,7 @@ void rtw_fw_send_ra_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si) SET_RA_INFO_SGI_EN(h2c_pkt, si->sgi_enable); SET_RA_INFO_BW_MODE(h2c_pkt, si->bw_mode); SET_RA_INFO_LDPC(h2c_pkt, !!si->ldpc_en); - SET_RA_INFO_NO_UPDATE(h2c_pkt, no_update); + SET_RA_INFO_NO_UPDATE(h2c_pkt, si->no_update); SET_RA_INFO_VHT_EN(h2c_pkt, si->vht_enable); SET_RA_INFO_DIS_PT(h2c_pkt, disable_pt); SET_RA_INFO_RA_MASK0(h2c_pkt, (si->ra_mask & 0xff)); @@ -561,7 +560,6 @@ void rtw_fw_send_ra_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si) SET_RA_INFO_RA_MASK3(h2c_pkt, (si->ra_mask & 0xff000000) >> 24); si->init_ra_lv = 0; - si->updated = true; rtw_fw_send_h2c_command(rtwdev, h2c_pkt); } diff --git a/drivers/net/wireless/realtek/rtw88/mac80211.c b/drivers/net/wireless/realtek/rtw88/mac80211.c index 256af53734014..c663f851ebbd6 100644 --- a/drivers/net/wireless/realtek/rtw88/mac80211.c +++ b/drivers/net/wireless/realtek/rtw88/mac80211.c @@ -735,7 +735,7 @@ static void rtw_ra_mask_info_update_iter(void *data, struct ieee80211_sta *sta) } si->use_cfg_mask = true; - rtw_update_sta_info(br_data->rtwdev, si); + rtw_update_sta_info(br_data->rtwdev, si, true); } static void rtw_ra_mask_info_update(struct rtw_dev *rtwdev, @@ -841,6 +841,17 @@ static void rtw_reconfig_complete(struct ieee80211_hw *hw, mutex_unlock(&rtwdev->mutex); } +static void rtw_ops_sta_rc_update(struct ieee80211_hw *hw, + struct ieee80211_vif *vif, + struct ieee80211_sta *sta, u32 changed) +{ + struct rtw_dev *rtwdev = hw->priv; + struct rtw_sta_info *si = (struct rtw_sta_info *)sta->drv_priv; + + if (changed & IEEE80211_RC_BW_CHANGED) + rtw_update_sta_info(rtwdev, si, true); +} + const struct ieee80211_ops rtw_ops = { .tx = rtw_ops_tx, .wake_tx_queue = rtw_ops_wake_tx_queue, @@ -870,6 +881,7 @@ const struct ieee80211_ops rtw_ops = { .set_antenna = rtw_ops_set_antenna, .get_antenna = rtw_ops_get_antenna, .reconfig_complete = rtw_reconfig_complete, + .sta_rc_update = rtw_ops_sta_rc_update, #ifdef CONFIG_PM .suspend = rtw_ops_suspend, .resume = rtw_ops_resume, diff --git a/drivers/net/wireless/realtek/rtw88/main.c b/drivers/net/wireless/realtek/rtw88/main.c index e385da5140910..518c8681c52a7 100644 --- a/drivers/net/wireless/realtek/rtw88/main.c +++ b/drivers/net/wireless/realtek/rtw88/main.c @@ -291,7 +291,7 @@ int rtw_sta_add(struct rtw_dev *rtwdev, struct ieee80211_sta *sta, for (i = 0; i < ARRAY_SIZE(sta->txq); i++) rtw_txq_init(rtwdev, sta->txq[i]); - rtw_update_sta_info(rtwdev, si); + rtw_update_sta_info(rtwdev, si, true); rtw_fw_media_status_report(rtwdev, si->mac_id, true); rtwdev->sta_cnt++; @@ -1040,7 +1040,8 @@ static u64 rtw_update_rate_mask(struct rtw_dev *rtwdev, return ra_mask; } -void rtw_update_sta_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si) +void rtw_update_sta_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si, + bool update) { struct rtw_dm_info *dm_info = &rtwdev->dm_info; struct ieee80211_sta *sta = si->sta; @@ -1142,6 +1143,7 @@ void rtw_update_sta_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si) ra_mask = rtw_update_rate_mask(rtwdev, si, ra_mask, is_vht_enable, wireless_set); + si->no_update = !update; si->bw_mode = bw_mode; si->stbc_en = stbc_en; si->ldpc_en = ldpc_en; diff --git a/drivers/net/wireless/realtek/rtw88/main.h b/drivers/net/wireless/realtek/rtw88/main.h index 32f663ca235ef..37b41ec2992a9 100644 --- a/drivers/net/wireless/realtek/rtw88/main.h +++ b/drivers/net/wireless/realtek/rtw88/main.h @@ -743,7 +743,7 @@ struct rtw_sta_info { u8 ldpc_en:2; bool sgi_enable; bool vht_enable; - bool updated; + bool no_update; u8 init_ra_lv; u64 ra_mask; @@ -1987,7 +1987,8 @@ void rtw_chip_prepare_tx(struct rtw_dev *rtwdev); void rtw_vif_port_config(struct rtw_dev *rtwdev, struct rtw_vif *rtwvif, u32 config); void rtw_tx_report_purge_timer(struct timer_list *t); -void rtw_update_sta_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si); +void rtw_update_sta_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si, + bool update); int rtw_core_start(struct rtw_dev *rtwdev); void rtw_core_stop(struct rtw_dev *rtwdev); int rtw_chip_info_setup(struct rtw_dev *rtwdev); diff --git a/drivers/net/wireless/realtek/rtw88/phy.c b/drivers/net/wireless/realtek/rtw88/phy.c index 569dd3cfde353..6df79421e7c52 100644 --- a/drivers/net/wireless/realtek/rtw88/phy.c +++ b/drivers/net/wireless/realtek/rtw88/phy.c @@ -476,7 +476,7 @@ static void rtw_phy_ra_info_update_iter(void *data, struct ieee80211_sta *sta) struct rtw_dev *rtwdev = data; struct rtw_sta_info *si = (struct rtw_sta_info *)sta->drv_priv; - rtw_update_sta_info(rtwdev, si); + rtw_update_sta_info(rtwdev, si, false); } static void rtw_phy_ra_info_update(struct rtw_dev *rtwdev) From patchwork Thu Apr 21 07:03:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: AceLan Kao X-Patchwork-Id: 1619991 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=T7RwE6Jk; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KkT6C3xRCz9sCq for ; Thu, 21 Apr 2022 17:03:47 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1nhQqn-0000lX-OY; Thu, 21 Apr 2022 07:03:37 +0000 Received: from mail-pg1-f171.google.com ([209.85.215.171]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1nhQqf-0000Wz-74 for kernel-team@lists.ubuntu.com; Thu, 21 Apr 2022 07:03:29 +0000 Received: by mail-pg1-f171.google.com with SMTP id t13so3888571pgn.8 for ; Thu, 21 Apr 2022 00:03:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=eqB2mC+isbENsMEmTIkfWVEVgi3iNi3GP3iQLcf4JFg=; b=T7RwE6JkICRP1Hy4qfDLO2tH8Q5j6QWQ5OxXv0rDOGfF678CsmurH3NUl+NxdIhwan cu4PZcZjvwM1sRIumSGasFkQwCfyG+HLz2B2QK7GcGBwoVX3nxZb8CuJlJfIWZWzpycg Kp/JNrcFztzFP1BGIZNLHFyxqGWTTEZ6ZEkb+/O1claw1++Uyz2TK+rcjYAjN8Y1BUlu vM5jbm3B8twRL8a8TG9+kgwBDh1262p5neSNzsoSofc3DbGCZVBvRbzAhVh4KN1FbiEz Bp6iVtwO07ZZiI8Lgw+oS+HGZdOPDra/ymKITPo3a0jt5KtDL7OEN7dzKNGTThCL7qoO fX6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=eqB2mC+isbENsMEmTIkfWVEVgi3iNi3GP3iQLcf4JFg=; b=DggLQJ/fiLfuSwiu4CA7YxJSdwBkhho/hnwPBy/VopZdO7UAOWEErTcoGa+jXtNWWb h9+vHJi+GwRvwF6DQ1u0sL04vnjNq8jUtgtwl7iefTkJTOX00YJqKft2jNDHLB90WzX3 PtJl2o016olgIeQOA7Jj3uJYP5WPe6eCH+cQBgmQJrodiYDttkrNeRXf7pwog9oRYbzM XYZK91vM0Tg572QBnRmv9xYKBBzX8vpQBAwOaojjdaRmYNY9XzeB5TBI6ad/fzUndXqf h4tVWLGxM/Mvh81dF6Mpu2w/71kg5e5EZUlm/Qg17cz8v6ig35wGfRZI6CqD29lZFbL4 Pd/w== X-Gm-Message-State: AOAM531fb5JjRknJgRdW28Oo2IsRJFSmrF94hJG0Wyrbb7psGYE2u0op GLRPTwp2DMvdKg6dDbeohC31iLRO3WY= X-Google-Smtp-Source: ABdhPJwbv72ko8sQqKoLpB8GIGlALfVRdihg0rseeble/hhPlw8QuGzZFPCJpczpxN8AzZf1IGZdUw== X-Received: by 2002:a05:6a00:1988:b0:4fa:c15d:190d with SMTP id d8-20020a056a00198800b004fac15d190dmr26729838pfl.44.1650524606822; Thu, 21 Apr 2022 00:03:26 -0700 (PDT) Received: from localhost (220-135-95-34.hinet-ip.hinet.net. [220.135.95.34]) by smtp.gmail.com with ESMTPSA id bm27-20020a656e9b000000b0039e5d327f78sm21367535pgb.44.2022.04.21.00.03.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 00:03:26 -0700 (PDT) From: AceLan Kao To: kernel-team@lists.ubuntu.com Subject: [PATCH 6/6][SRU][OEM-5.17] rtw88: 8821c: fix debugfs rssi value Date: Thu, 21 Apr 2022 15:03:02 +0800 Message-Id: <20220421070302.11579-12-acelan.kao@canonical.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220421070302.11579-1-acelan.kao@canonical.com> References: <20220421070302.11579-1-acelan.kao@canonical.com> MIME-Version: 1.0 Received-SPF: pass client-ip=209.85.215.171; envelope-from=acelan@gmail.com; helo=mail-pg1-f171.google.com X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Po-Hao Huang BugLink: https://bugs.launchpad.net/bugs/1969326 RSSI value per frame is reported to mac80211 but not maintained in our own statistics, add it back to help us debug. Signed-off-by: Po-Hao Huang Signed-off-by: Ping-Ke Shih Signed-off-by: Kalle Valo Link: https://lore.kernel.org/r/20220407095858.46807-7-pkshih@realtek.com (cherry picked from commit ece31c93d4d68f7eb8eea4431b052aacdb678de2) Signed-off-by: Chia-Lin Kao (AceLan) --- drivers/net/wireless/realtek/rtw88/rtw8821c.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/net/wireless/realtek/rtw88/rtw8821c.c b/drivers/net/wireless/realtek/rtw88/rtw8821c.c index db078df63f85..5af87b134d6b 100644 --- a/drivers/net/wireless/realtek/rtw88/rtw8821c.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8821c.c @@ -512,6 +512,7 @@ static s8 get_cck_rx_pwr(struct rtw_dev *rtwdev, u8 lna_idx, u8 vga_idx) static void query_phy_status_page0(struct rtw_dev *rtwdev, u8 *phy_status, struct rtw_rx_pkt_stat *pkt_stat) { + struct rtw_dm_info *dm_info = &rtwdev->dm_info; s8 rx_power; u8 lna_idx = 0; u8 vga_idx = 0; @@ -523,6 +524,7 @@ static void query_phy_status_page0(struct rtw_dev *rtwdev, u8 *phy_status, pkt_stat->rx_power[RF_PATH_A] = rx_power; pkt_stat->rssi = rtw_phy_rf_power_2_rssi(pkt_stat->rx_power, 1); + dm_info->rssi[RF_PATH_A] = pkt_stat->rssi; pkt_stat->bw = RTW_CHANNEL_WIDTH_20; pkt_stat->signal_power = rx_power; } @@ -530,6 +532,7 @@ static void query_phy_status_page0(struct rtw_dev *rtwdev, u8 *phy_status, static void query_phy_status_page1(struct rtw_dev *rtwdev, u8 *phy_status, struct rtw_rx_pkt_stat *pkt_stat) { + struct rtw_dm_info *dm_info = &rtwdev->dm_info; u8 rxsc, bw; s8 min_rx_power = -120; @@ -549,6 +552,7 @@ static void query_phy_status_page1(struct rtw_dev *rtwdev, u8 *phy_status, pkt_stat->rx_power[RF_PATH_A] = GET_PHY_STAT_P1_PWDB_A(phy_status) - 110; pkt_stat->rssi = rtw_phy_rf_power_2_rssi(pkt_stat->rx_power, 1); + dm_info->rssi[RF_PATH_A] = pkt_stat->rssi; pkt_stat->bw = bw; pkt_stat->signal_power = max(pkt_stat->rx_power[RF_PATH_A], min_rx_power);