Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp2829130pxv; Mon, 12 Jul 2021 02:59:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyma2OmyfTc+M27luqE0G5UC3IASCHoqkM20Cq6hIAX7n1QObE1eJs8if5MyLWbZbn4oLX8 X-Received: by 2002:a17:907:e8c:: with SMTP id ho12mr50594308ejc.372.1626083957048; Mon, 12 Jul 2021 02:59:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626083957; cv=none; d=google.com; s=arc-20160816; b=Ahk4qq/+8Os8DLqJsytA5zwuhPKC6rXHpzKSK7W/UmXaeo6G2J9ycGH1NVQTnVztUp 9tXjKhFpij5Bd1vyOH0dBu19iD7UNG7nlBiystKXwpNrqt1bquKalOsSICXL2eMzJar0 8+ocJBpzf7DC4+XY33ObGx21w38EkngfdZCZe71n4rMwtvb9iTLrirUwIMJrjQWupC+y +C45msGeSZXuxJVriNNBuAnOSuNhndmzVkUdZtiEukdC0ZgjUuOL86l2uXA6xbEjkJPj gJFx0ABOGWPEVYpnYVStkgYqI5Q95uiLrVAU4UUFTzYMi2v5Ek1V2EAJin781a1qFedn JDBA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=Uhtui07MJNuzuIHnn+ngWT+FA1CzK4+cy2+8CeaKYCo=; b=nExnX3FzgSUSUvxxIcGgFxY3RK3UE2Ya1FIGqmWpJ9en5mjMfECNDEOXvMJaQC7jIF /vf3CqVkpVFoIq/9vTWQmK3gvxt096tDiHHuH5RVJVA0honZfnMemDAL5dgQmJbFBgp7 RoW9KgzTes90hC891fvZ/E6EsAwVJ+/UH2gwiRP7wgnuddFPABApf/rDvdIY1PDpPObt p9/s1djAudEq0BXwW5RHkOJGWgIPRIkuDpvQjGL52QduOeAB6RieTCRXiv/u26zTl+KJ 6OZ4/NGMvTOr9zp7Kk1sB2ZT9cCx7zdy9ci+Bk92S4/K36bsw9rX8dnIizdrHyMg0Zkx h7OA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Ku6zxp19; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w12si15605695edd.491.2021.07.12.02.58.53; Mon, 12 Jul 2021 02:59:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Ku6zxp19; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238283AbhGLHCG (ORCPT + 99 others); Mon, 12 Jul 2021 03:02:06 -0400 Received: from mail.kernel.org ([198.145.29.99]:38480 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236670AbhGLGpe (ORCPT ); Mon, 12 Jul 2021 02:45:34 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 1F115611CE; Mon, 12 Jul 2021 06:41:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626072083; bh=I4Dj7defyCQxWAbupuplkhYKOyB8PIu3grMwGd6peSY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ku6zxp19gptssEWMpP2Q/fUilduXb343uQ0kpe8d/Amvnzr+H76F2fMhHh9P2wrAA 92mB/i0g0ANrch4+xdf4ZWgNxOJkMAr4bp61pbB0ZuYzA50Pkciu1QQo/jWqGuprgj RsoBsnBc+2bWWVUp54SVGiP2s132QwCfqxv5mrCA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, =?UTF-8?q?Alvin=20=C5=A0ipraga?= , Kalle Valo , Sasha Levin Subject: [PATCH 5.10 348/593] brcmfmac: correctly report average RSSI in station info Date: Mon, 12 Jul 2021 08:08:28 +0200 Message-Id: <20210712060924.465136034@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210712060843.180606720@linuxfoundation.org> References: <20210712060843.180606720@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Alvin Šipraga [ Upstream commit 9a1590934d9a02e570636432b93052c0c035f31f ] The rx_lastpkt_rssi field provided by the firmware is suitable for NL80211_STA_INFO_{SIGNAL,CHAIN_SIGNAL}, while the rssi field is an average. Fix up the assignments and set the correct STA_INFO bits. This lets userspace know that the average RSSI is part of the station info. Fixes: cae355dc90db ("brcmfmac: Add RSSI information to get_station.") Signed-off-by: Alvin Šipraga Signed-off-by: Kalle Valo Link: https://lore.kernel.org/r/20210506132010.3964484-2-alsi@bang-olufsen.dk Signed-off-by: Sasha Levin --- .../broadcom/brcm80211/brcmfmac/cfg80211.c | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c index 8c3c7755e949..c2b6e5c966d0 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -2767,8 +2767,9 @@ brcmf_cfg80211_get_station(struct wiphy *wiphy, struct net_device *ndev, struct brcmf_sta_info_le sta_info_le; u32 sta_flags; u32 is_tdls_peer; - s32 total_rssi; - s32 count_rssi; + s32 total_rssi_avg = 0; + s32 total_rssi = 0; + s32 count_rssi = 0; int rssi; u32 i; @@ -2834,24 +2835,27 @@ brcmf_cfg80211_get_station(struct wiphy *wiphy, struct net_device *ndev, sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_BYTES); sinfo->rx_bytes = le64_to_cpu(sta_info_le.rx_tot_bytes); } - total_rssi = 0; - count_rssi = 0; for (i = 0; i < BRCMF_ANT_MAX; i++) { - if (sta_info_le.rssi[i]) { - sinfo->chains |= BIT(count_rssi); - sinfo->chain_signal_avg[count_rssi] = - sta_info_le.rssi[i]; - sinfo->chain_signal[count_rssi] = - sta_info_le.rssi[i]; - total_rssi += sta_info_le.rssi[i]; - count_rssi++; - } + if (sta_info_le.rssi[i] == 0 || + sta_info_le.rx_lastpkt_rssi[i] == 0) + continue; + sinfo->chains |= BIT(count_rssi); + sinfo->chain_signal[count_rssi] = + sta_info_le.rx_lastpkt_rssi[i]; + sinfo->chain_signal_avg[count_rssi] = + sta_info_le.rssi[i]; + total_rssi += sta_info_le.rx_lastpkt_rssi[i]; + total_rssi_avg += sta_info_le.rssi[i]; + count_rssi++; } if (count_rssi) { - sinfo->filled |= BIT_ULL(NL80211_STA_INFO_CHAIN_SIGNAL); sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL); - total_rssi /= count_rssi; - sinfo->signal = total_rssi; + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL_AVG); + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_CHAIN_SIGNAL); + sinfo->filled |= + BIT_ULL(NL80211_STA_INFO_CHAIN_SIGNAL_AVG); + sinfo->signal = total_rssi / count_rssi; + sinfo->signal_avg = total_rssi_avg / count_rssi; } else if (test_bit(BRCMF_VIF_STATUS_CONNECTED, &ifp->vif->sme_state)) { memset(&scb_val, 0, sizeof(scb_val)); -- 2.30.2