linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/9] staging: vt6655: implement ieee80211_low_level_stats
@ 2015-05-31  9:35 Malcolm Priestley
  2015-05-31  9:35 ` [PATCH 2/9] staging: vt6655: dead code remove STAvUpdate802_11Counter Malcolm Priestley
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: Malcolm Priestley @ 2015-05-31  9:35 UTC (permalink / raw)
  To: gregkh; +Cc: linux-wireless, Malcolm Priestley

Collect low level stats from mib counter for mac80211 call.

Replacing the unused function STAvUpdate802_11Counter.

Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
---
 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,
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2015-05-31  9:36 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-31  9:35 [PATCH 1/9] staging: vt6655: implement ieee80211_low_level_stats Malcolm Priestley
2015-05-31  9:35 ` [PATCH 2/9] staging: vt6655: dead code remove STAvUpdate802_11Counter Malcolm Priestley
2015-05-31  9:35 ` [PATCH 3/9] staging: vt6655: Remove call to STAvUpdateIsrStatCounter Malcolm Priestley
2015-05-31  9:35 ` [PATCH 4/9] staging: vt6655: remove mib.c/h dead code Malcolm Priestley
2015-05-31  9:35 ` [PATCH 5/9] staging: vt6655: use workqueue for interrupt handling Malcolm Priestley
2015-05-31  9:35 ` [PATCH 6/9] staging: vt6655: vnt_interrupt_process remove page 0 select Malcolm Priestley
2015-05-31  9:35 ` [PATCH 7/9] staging: vt6655: vnt_interrupt_process remove camel case Malcolm Priestley
2015-05-31  9:35 ` [PATCH 8/9] staging: vt6655: replace and resize dwIsr Malcolm Priestley
2015-05-31  9:35 ` [PATCH 9/9] staging: vt6655: device_rx_srv check sk_buff is NULL Malcolm Priestley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).