From patchwork Wed May 11 19:40:34 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: meijjaa X-Patchwork-Id: 9074311 X-Patchwork-Delegate: kvalo@adurom.com Return-Path: X-Original-To: patchwork-linux-wireless@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 5DB79BF29F for ; Wed, 11 May 2016 19:53:44 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 7FAD12012D for ; Wed, 11 May 2016 19:53:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 76501201CE for ; Wed, 11 May 2016 19:53:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932109AbcEKTxh (ORCPT ); Wed, 11 May 2016 15:53:37 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:33519 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751782AbcEKTxZ (ORCPT ); Wed, 11 May 2016 15:53:25 -0400 Received: by mail-wm0-f67.google.com with SMTP id r12so11579456wme.0 for ; Wed, 11 May 2016 12:53:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=b8A1+Q+65AAM1i0/pQgB2OEelHFTz2XgqaamppLzozU=; b=WiuEUIPtJM2yOq3Jz7MPRTpy6kSBynnMdpe6XVEKnFuNI5CmG64ML/9Zgdg+WOXukF IRkRqk8mRkHp3RI08yyHJ/7qAnrSwIY3IDCLClZUJciN1DH8voKVuyLxIwA+htmLzFL/ vkpdbSNusMu0SbP3Uh17xrIrkqX7KvMqheCnymM/ud8lT36D0vsjmNRaexShaEmMl24Y 8EqvYGBqswYpsIFfNFETNE2F/ptxQU09WEUI+KdTaB5BdAbeMMJo5PmNZWxw3gyvdw1Z H6O1itP8joyJbok//joWMOlH9nHwwGW9kHusf8O+XgrPN3Kyv+Y3aSj4iK9YEtBDuvQa OC7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=b8A1+Q+65AAM1i0/pQgB2OEelHFTz2XgqaamppLzozU=; b=d5F00/C9ChOCUjyzHW5RMksdmDYRLoqIoxVQg0qahwK+m16fgBGesbiRnxss36psbs 0KLRREXFt+EVgu+LXI1hVlptkzqE1qFkjU3YN8VqzefVJpAKMfIXrMqFKs3/yXQHNZ/u 0PdhoU3AR102PCWI5+x7uuhbFZSScqCy7mCncoGPuKw/6nSHLVDQE6H/eHxwmI/GaGYI sWONgVkH5aQ6O9JHJeqngWU+gfIZMP3xsO9kGlBcM+WD2sfSTdBtcDr4W9FcO9RNwbIn co21PLvXpAlSfrQGN3db4x5ymyIo8JLKowpVJwdjwPzfoHjY3xmvZ87uYg6TD+EgGhN6 qtBQ== X-Gm-Message-State: AOPr4FV8AzuXgD6FIpzDFrM2/FNgUkS6FY3CpdHmyiJzB1kDk7Z+vAnJor68GwX9Hfxm5Q== X-Received: by 10.28.13.137 with SMTP id 131mr2066740wmn.52.1462995662911; Wed, 11 May 2016 12:41:02 -0700 (PDT) Received: from localhost.localdomain (84-245-15-45.dsl.cambrium.nl. [84.245.15.45]) by smtp.gmail.com with ESMTPSA id g132sm10117397wme.0.2016.05.11.12.41.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 11 May 2016 12:41:01 -0700 (PDT) From: Jaap Jan Meijer To: linux-wireless@vger.kernel.org Cc: arend.vanspriel@broadcom.com, kvalo@codeaurora.org, brcm80211-dev-list@broadcom.com, Jaap Jan Meijer Subject: [PATCH] brcmfmac: add fallback for devices that do not report per-chain values Date: Wed, 11 May 2016 21:40:34 +0200 Message-Id: <1462995634-24602-1-git-send-email-jjmeijer88@gmail.com> X-Mailer: git-send-email 1.9.1 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Spam-Status: No, score=-8.2 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP If brcmf_cfg80211_get_station fails to determine the RSSI from the per-chain values get all values individually as a fallback. Signed-off-by: Jaap Jan Meijer Signed-off-by: Jaap Jan Meijer --- .../broadcom/brcm80211/brcmfmac/cfg80211.c | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c index d5c2a27..60229c8 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -2480,12 +2480,16 @@ brcmf_cfg80211_get_station(struct wiphy *wiphy, struct net_device *ndev, const u8 *mac, struct station_info *sinfo) { struct brcmf_if *ifp = netdev_priv(ndev); + struct brcmf_scb_val_le scb_val; s32 err = 0; struct brcmf_sta_info_le sta_info_le; u32 sta_flags; u32 is_tdls_peer; s32 total_rssi; s32 count_rssi; + int rssi; + u32 beacon_period; + u32 dtim_period; u32 i; brcmf_dbg(TRACE, "Enter, MAC %pM\n", mac); @@ -2569,6 +2573,44 @@ brcmf_cfg80211_get_station(struct wiphy *wiphy, struct net_device *ndev, sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL); total_rssi /= count_rssi; sinfo->signal = total_rssi; + } else if (test_bit(BRCMF_VIF_STATUS_CONNECTED, + &ifp->vif->sme_state)) { + memset(&scb_val, 0, sizeof(scb_val)); + err = brcmf_fil_cmd_data_get(ifp, BRCMF_C_GET_RSSI, + &scb_val, sizeof(scb_val)); + if (err) { + brcmf_err("Could not get rssi (%d)\n", err); + goto done; + } else { + rssi = le32_to_cpu(scb_val.val); + sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL); + sinfo->signal = rssi; + brcmf_dbg(CONN, "RSSI %d dBm\n", rssi); + } + err = brcmf_fil_cmd_int_get(ifp, BRCMF_C_GET_BCNPRD, + &beacon_period); + if (err) { + brcmf_err("Could not get beacon period (%d)\n", + err); + goto done; + } else { + sinfo->bss_param.beacon_interval = + beacon_period; + brcmf_dbg(CONN, "Beacon peroid %d\n", + beacon_period); + } + err = brcmf_fil_cmd_int_get(ifp, BRCMF_C_GET_DTIMPRD, + &dtim_period); + if (err) { + brcmf_err("Could not get DTIM period (%d)\n", + err); + goto done; + } else { + sinfo->bss_param.dtim_period = dtim_period; + brcmf_dbg(CONN, "DTIM peroid %d\n", + dtim_period); + } + sinfo->filled |= BIT(NL80211_STA_INFO_BSS_PARAM); } } done: