Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp109388pxj; Tue, 1 Jun 2021 16:33:33 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzL7LduA5WPOMee0q7I2i0wvats27Ko8Iqbw13AytrDl+9NOn3819lf35H+31E/61p6DXju X-Received: by 2002:a17:906:f9db:: with SMTP id lj27mr19759963ejb.421.1622590413009; Tue, 01 Jun 2021 16:33:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622590413; cv=none; d=google.com; s=arc-20160816; b=y1J0Q6Fr4Wmu/g12MPNkRF7SPkJCk5DmnnXdfBkSWlnaJIN+caul9pQcz/lhhk6HTu nUVhpAs3QNew2kYHJaM6EfAd2IRp/yl01Y5ILe1/IyzxcdVQ6RC9s8Et0WugMV8jwz33 Kj1NtlJtCMr4IsVEqPOcwb5Z/DEk5MUdii5kk0cfos9iOCkJ+Txnfpf6GCvXxdSMppiq cj6Sx33AmztQZlGk/nrfMZ+UUhqppTpEaa464Azl2yNoHL53ISu+2K9OOENP9VZYu4ZO BW9b7Y1h2FgPy+93rQlbtHvgNcWzgwQyxgybKopBDy2wNx9nlErwJadrPyEdpjVBAJ0J Q61A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from; bh=V8nXdnqiUQSWPye8Yb5Xt/M69KgSBlTnGXUczi317l4=; b=gzJrO2k70/D5VMDImgsWOuhTHnAiix1Jw+yPcBjPENmOEEdKB9JfQMKRP0LIyWwFrr Iwp2g4XfM/V9B1nvWZjwGPyJnE0usmZ5B0gq1C7W+fG+8pphOPm6bBX7oceTuIhm257C krxjSFZaK1XNq7Ee98xCDRuZFBzRVqRoW4gi5qoTWLliriGbnpKjJTqELN6NngUO9ujc BkC/c0e9RJ/I7r0G/nEkM59FyMa1N2n+E7i9tiX00Zt9jE5kJkveWwubEVfzspB4tM2s NZpQ4Mz0DxQJPh2ULbXrtw0oDUbANmq9wCQc5OTQz96yAaySXVdtbEuZ7KOn0Q43VtFC wd1A== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id l16si453309edj.405.2021.06.01.16.33.10; Tue, 01 Jun 2021 16:33:33 -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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235150AbhFAXbQ (ORCPT + 99 others); Tue, 1 Jun 2021 19:31:16 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:35847 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S234766AbhFAXbQ (ORCPT ); Tue, 1 Jun 2021 19:31:16 -0400 X-UUID: 64436e0044474d6cb857c106faff4af7-20210602 X-UUID: 64436e0044474d6cb857c106faff4af7-20210602 Received: from mtkcas06.mediatek.inc [(172.21.101.30)] by mailgw01.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 944589617; Wed, 02 Jun 2021 07:29:31 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs02n1.mediatek.inc (172.21.101.77) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 2 Jun 2021 07:29:23 +0800 Received: from mtkswgap22.mediatek.inc (172.21.77.33) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Wed, 2 Jun 2021 07:29:23 +0800 From: To: , CC: , , , , , , , , , , , , , , , Subject: [PATCH 2/3] mt76: mt7921: add mt7921_mcu_sta_update support Date: Wed, 2 Jun 2021 07:29:10 +0800 Message-ID: <32055d79abde1ac3f08f7d6bdc4d8a9d9bbfd644.1622589640.git.objelf@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <37cd2b61bfeeb4fd6c14bd3eb2ff611d6b127e1a.1622589640.git.objelf@gmail.com> References: <37cd2b61bfeeb4fd6c14bd3eb2ff611d6b127e1a.1622589640.git.objelf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org From: Sean Wang Add mt7921_mcu_sta_update support to make we are able to update the station record with the current state the station has into the mt7921 firmware at runtime. That is the prerequisite patch to fix .sta_state incorrect implementation for the mt7921 driver. Signed-off-by: Sean Wang --- .../net/wireless/mediatek/mt76/mt7921/mcu.c | 20 +++++++++++++++++++ .../wireless/mediatek/mt76/mt7921/mt7921.h | 2 ++ 2 files changed, 22 insertions(+) diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c index 631f408520c9..3f53bd9b2b55 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +++ b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c @@ -1342,6 +1342,26 @@ int mt7921_mcu_sta_add(struct mt7921_dev *dev, struct ieee80211_sta *sta, return mt76_connac_mcu_add_sta_cmd(&dev->mphy, &info); } +int mt7921_mcu_sta_update(struct mt7921_dev *dev, struct ieee80211_sta *sta, + struct ieee80211_vif *vif, u8 state) +{ + struct mt7921_vif *mvif = (struct mt7921_vif *)vif->drv_priv; + int rssi = -ewma_rssi_read(&mvif->rssi); + struct mt76_sta_cmd_info info = { + .sta = sta, + .vif = vif, + .enable = true, + .state = state, + .cmd = MCU_UNI_CMD_STA_REC_UPDATE, + .rcpi = to_rcpi(rssi), + }; + struct mt7921_sta *msta; + + msta = sta ? (struct mt7921_sta *)sta->drv_priv : NULL; + info.wcid = msta ? &msta->wcid : &mvif->sta.wcid; + return mt76_connac_mcu_update_sta_cmd(&dev->mphy, &info); +} + int __mt7921_mcu_drv_pmctrl(struct mt7921_dev *dev) { struct mt76_phy *mphy = &dev->mt76.phy; diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h b/drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h index 694f85e52222..13d0f472b043 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h +++ b/drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h @@ -262,6 +262,8 @@ int mt7921_mcu_add_key(struct mt7921_dev *dev, struct ieee80211_vif *vif, int mt7921_set_channel(struct mt7921_phy *phy); int mt7921_mcu_sta_add(struct mt7921_dev *dev, struct ieee80211_sta *sta, struct ieee80211_vif *vif, bool enable, u8 state); +int mt7921_mcu_sta_update(struct mt7921_dev *dev, struct ieee80211_sta *sta, + struct ieee80211_vif *vif, u8 state); int mt7921_mcu_set_chan_info(struct mt7921_phy *phy, int cmd); int mt7921_mcu_set_tx(struct mt7921_dev *dev, struct ieee80211_vif *vif); int mt7921_mcu_set_eeprom(struct mt7921_dev *dev); -- 2.25.1