Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp2836059pxv; Mon, 12 Jul 2021 03:08:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwCGo89mkuQq21gVPLu7fLfqpBSKAuNqr8T88smwmz6gZrNrnS2M4fUUibSjPLshZyN/xqj X-Received: by 2002:a92:a304:: with SMTP id a4mr38543407ili.197.1626084509899; Mon, 12 Jul 2021 03:08:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626084509; cv=none; d=google.com; s=arc-20160816; b=ouZ75dyA5yNNkS4DGvoNGa6+57clVG4HbNXYPphrgT99skV/HkLURE9l2JsVaKAgEO HJXLi8f/5B49u1aeVhfNkygEjob5vTeGBLzCQbEVw5jaNuG7Znfpiki1I5eMtOYY1Bs5 GFO1GrWnltYMLj/L4FI3vq2Z4VQRcHyHz87dlx12JVuC8bg71r4Uw3S6BJk5qB37sxyq fEq05M4BabZHwP6unQ8/2j149pCxnEW6KWYSE4vZH0D3KniVoNjwhM8d6YPHxy2xBsMU L15HPhcLYx7EJ+uLxULPnLGR/JlQLE5dDcb4WDbRbjHKAoyiUBqY7iToGFfjTAzSMUh9 0RdQ== 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=iIFIIcWve+ekw1fBi4RaDM0DK4PlmGTdBoidNUdTqns=; b=D03JXfGyttUrviZR99jskqJHXqkWzYzcbHZn3NKTAZTQl3Lnv6RvrLjyw0vUEkfJG8 ySUCCZqUlxnTg4nsAzkZKM5acvZ6bThBQzufxuaWdY8EX0TKx5sxv6dfkhD0kipDWK2J fy9OMGU3t/GxUzQI8yFPNKYgNXy1gh+z1G0uaAIktuoYdnhRd9w4qfnGqXEquUdBhkpw 87yTYhnKUUzYZXI9FeSEej8XEB6+4r2SjvlQuOF6do8/YDyYmDN/oCmURQcK/2LK1cTv v5xlFHi3tgEzLDHWPa/DhyxrsuDf+/hzJNLowuLjOXMbqYhFHz2JzWbJP5cZnWUr2FX8 yAWA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=U+mechaR; 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 a13si8721382ion.67.2021.07.12.03.08.18; Mon, 12 Jul 2021 03:08:29 -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=U+mechaR; 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 S1350043AbhGLHu1 (ORCPT + 99 others); Mon, 12 Jul 2021 03:50:27 -0400 Received: from mail.kernel.org ([198.145.29.99]:48694 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243450AbhGLHPn (ORCPT ); Mon, 12 Jul 2021 03:15:43 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 4994961106; Mon, 12 Jul 2021 07:12:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626073932; bh=yEFcNEXpnicFUGlpyGK9hl4vpdiXNqemBYdU9G+Xx14=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=U+mechaR1U5CJf7YBWBr2snzMhETEQZAUEz1C4vGvXS+TF+HxgFNeV85ik8bvsskr xdvQVsUvfMRMVuQAElCUoemuzlA59NJ9asIGeNeZ128WUIFInuLDFCJtv9HSDsqtYD f+ZyohH7MMp1Cs95DLYTAp4AuxOuXV8+b92vzLxg= 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.12 409/700] brcmfmac: correctly report average RSSI in station info Date: Mon, 12 Jul 2021 08:08:12 +0200 Message-Id: <20210712061019.915507092@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210712060924.797321836@linuxfoundation.org> References: <20210712060924.797321836@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 afa75cb83221..d8822a01d277 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