From patchwork Sun May 31 09:35:20 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Malcolm Priestley X-Patchwork-Id: 6515491 X-Patchwork-Delegate: kvalo@adurom.com Return-Path: X-Original-To: patchwork-linux-wireless@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 8566F9F1C1 for ; Sun, 31 May 2015 09:36:12 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 8881E20489 for ; Sun, 31 May 2015 09:36:11 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 8D3BB2042C for ; Sun, 31 May 2015 09:36:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757893AbbEaJf6 (ORCPT ); Sun, 31 May 2015 05:35:58 -0400 Received: from mail-wi0-f182.google.com ([209.85.212.182]:38445 "EHLO mail-wi0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754390AbbEaJf4 (ORCPT ); Sun, 31 May 2015 05:35:56 -0400 Received: by wizo1 with SMTP id o1so70809517wiz.1 for ; Sun, 31 May 2015 02:35:55 -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=w2xVALgWnmuEYzB4sistouzHaXdwOXXLVeC4FVBzPUQ=; b=K6rBEBL/WTiZEO2gAUHagG7vcb78GDDhgB94eDRRQuEHFHyc2z6BtzAcs/XdlvC0kH C6aw2TmtYYdTaORoeUiLPZtTZuZPiuUP9MM1Pel06v+DR44Kwuk00/oP0RitG8g0bJ3c IyuRV9sWpvHu0rBrbL7p0Ehmj+JakQyw+CMRgfci/Gc6EAEm9FiySsFEety6mOt5Rhle rRwxkVIvxMRCJavKMhqYD+O820F5xC1OwXUjVuIRMBETKBQ5/8GMA0g8uqpzJvyRIsf7 JfzPho3a/MFgzy4EoShMgx4hPr3lhCMVcYVxV9ENTC3RRW6b94/mIOO/RyOwb5Ga1zlk UPXA== X-Received: by 10.194.134.9 with SMTP id pg9mr31784527wjb.5.1433064954931; Sun, 31 May 2015 02:35:54 -0700 (PDT) Received: from tipsey.3.home (188.31.131.59.threembb.co.uk. [188.31.131.59]) by mx.google.com with ESMTPSA id t17sm11193426wij.1.2015.05.31.02.35.50 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 31 May 2015 02:35:53 -0700 (PDT) From: Malcolm Priestley To: gregkh@linuxfoundation.org Cc: linux-wireless@vger.kernel.org, Malcolm Priestley Subject: [PATCH 1/9] staging: vt6655: implement ieee80211_low_level_stats Date: Sun, 31 May 2015 10:35:20 +0100 Message-Id: <1433064928-2139-1-git-send-email-tvboxspy@gmail.com> X-Mailer: git-send-email 2.1.4 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, T_DKIM_INVALID, T_RP_MATCHES_RCVD, 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 Collect low level stats from mib counter for mac80211 call. Replacing the unused function STAvUpdate802_11Counter. Signed-off-by: Malcolm Priestley --- drivers/staging/vt6655/device.h | 2 ++ drivers/staging/vt6655/device_main.c | 24 +++++++++++++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/drivers/staging/vt6655/device.h b/drivers/staging/vt6655/device.h index 440537e4..a49c6c6 100644 --- a/drivers/staging/vt6655/device.h +++ b/drivers/staging/vt6655/device.h @@ -410,6 +410,8 @@ struct vnt_private { unsigned char abyEEPROM[EEP_MAX_CONTEXT_SIZE]; /* unsigned long alignment */ unsigned short wBeaconInterval; + + struct ieee80211_low_level_stats low_stats; }; static inline PDEVICE_RD_INFO alloc_rd_info(void) diff --git a/drivers/staging/vt6655/device_main.c b/drivers/staging/vt6655/device_main.c index 8f96cc9..c27f5ef 100644 --- a/drivers/staging/vt6655/device_main.c +++ b/drivers/staging/vt6655/device_main.c @@ -1056,8 +1056,9 @@ static void vnt_check_bb_vga(struct vnt_private *priv) static irqreturn_t device_intr(int irq, void *dev_instance) { struct vnt_private *pDevice = dev_instance; + struct ieee80211_low_level_stats *low_stats = &pDevice->low_stats; int max_count = 0; - unsigned long dwMIBCounter = 0; + u32 mib_counter; unsigned char byOrgPageSel = 0; int handled = 0; unsigned long flags; @@ -1084,14 +1085,20 @@ static irqreturn_t device_intr(int irq, void *dev_instance) else byOrgPageSel = 0; - MACvReadMIBCounter(pDevice->PortOffset, &dwMIBCounter); + /* Read low level stats */ + MACvReadMIBCounter(pDevice->PortOffset, &mib_counter); + + low_stats->dot11RTSSuccessCount += mib_counter & 0xff; + low_stats->dot11RTSFailureCount += (mib_counter >> 8) & 0xff; + low_stats->dot11ACKFailureCount += (mib_counter >> 16) & 0xff; + low_stats->dot11FCSErrorCount += (mib_counter >> 24) & 0xff; + /* * TBD.... * Must do this after doing rx/tx, cause ISR bit is slow * than RD/TD write back * update ISR counter */ - STAvUpdate802_11Counter(&pDevice->s802_11Counter, &pDevice->scStatistic, dwMIBCounter); while (pDevice->dwIsr && pDevice->vif) { STAvUpdateIsrStatCounter(&pDevice->scStatistic, pDevice->dwIsr); MACvWriteISR(pDevice->PortOffset, pDevice->dwIsr); @@ -1604,6 +1611,16 @@ static int vnt_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd, return 0; } +static int vnt_get_stats(struct ieee80211_hw *hw, + struct ieee80211_low_level_stats *stats) +{ + struct vnt_private *priv = hw->priv; + + memcpy(stats, &priv->low_stats, sizeof(*stats)); + + return 0; +} + static u64 vnt_get_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif) { struct vnt_private *priv = hw->priv; @@ -1641,6 +1658,7 @@ static const struct ieee80211_ops vnt_mac_ops = { .prepare_multicast = vnt_prepare_multicast, .configure_filter = vnt_configure, .set_key = vnt_set_key, + .get_stats = vnt_get_stats, .get_tsf = vnt_get_tsf, .set_tsf = vnt_set_tsf, .reset_tsf = vnt_reset_tsf,