Skip to contentSkip to conversation

Introduce tracing support to mt7615 driver

PATCH New Lorenzo Bianconi 1 participant 5 messages Dec 29, 2019

Subsystems (2)
lore
Share & tools
lore

Lorenzo Bianconi

author maintainer
#0 lore raw

cover Introduce tracing support to mt7615 driver

Add tracing support to mt7615 and mt7603 drivers.
Move some tracing common code in mt76 module.

Lorenzo Bianconi (4):
mt76: move dev_irq tracepoint in mt76 module
mt76: move mac_txdone tracepoint in mt76 module
mt76: mt7615: add tracing support
mt76: mt76x2: get rid of leftover target

 .../net/wireless/mediatek/mt76/mt7603/core.c  |  3 +
 .../net/wireless/mediatek/mt76/mt7603/mac.c   |  3 +
 .../wireless/mediatek/mt76/mt7615/Makefile    |  4 +-
 .../net/wireless/mediatek/mt76/mt7615/mac.c   | 10 +++-
 .../mediatek/mt76/mt7615/mt7615_trace.h       | 56 +++++++++++++++++++
 .../net/wireless/mediatek/mt76/mt7615/pci.c   |  3 +
 .../net/wireless/mediatek/mt76/mt7615/trace.c | 12 ++++
 .../net/wireless/mediatek/mt76/mt76x02_mac.c  |  3 +-
 .../net/wireless/mediatek/mt76/mt76x02_mmio.c |  4 +-
 .../wireless/mediatek/mt76/mt76x02_trace.h    | 46 ---------------
 .../wireless/mediatek/mt76/mt76x2/Makefile    |  2 -
 drivers/net/wireless/mediatek/mt76/trace.c    |  3 +
 drivers/net/wireless/mediatek/mt76/trace.h    | 54 +++++++++++++++++-
 13 files changed, 148 insertions(+), 55 deletions(-)
 create mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/mt7615_trace.h
 create mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/trace.c
Signature · 1 line
2.21.0
author maintainer
#1 lore raw

PATCH 1/4 mt76: move dev_irq tracepoint in mt76 module

Move dev_irq tracepoint in common code in order to be reused by mt7603 and mt7615 drivers

---
 .../net/wireless/mediatek/mt76/mt7603/core.c  |  3 +++
 .../net/wireless/mediatek/mt76/mt7615/pci.c   |  3 +++
 .../net/wireless/mediatek/mt76/mt76x02_mmio.c |  4 ++--
 .../wireless/mediatek/mt76/mt76x02_trace.h    | 23 -------------------
 drivers/net/wireless/mediatek/mt76/trace.c    |  2 ++
 drivers/net/wireless/mediatek/mt76/trace.h    | 23 +++++++++++++++++++
 6 files changed, 33 insertions(+), 25 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7603/core.c +3 -0
index 693a91be070a..60a996b63c0c 100644
@@ -1,6 +1,7 @@
 // SPDX-License-Identifier: ISC
 
 #include "mt7603.h"
+#include "../trace.h"
 
 void mt7603_rx_poll_complete(struct mt76_dev *mdev, enum mt76_rxq_id q)
 {
@@ -20,6 +21,8 @@ irqreturn_t mt7603_irq_handler(int irq, void *dev_instance)
 	if (!test_bit(MT76_STATE_INITIALIZED, &dev->mphy.state))
 		return IRQ_NONE;
 
+	trace_dev_irq(&dev->mt76, intr, dev->mt76.mmio.irqmask);
+
 	intr &= dev->mt76.mmio.irqmask;
 
 	if (intr & MT_INT_MAC_IRQ3) {
drivers/net/wireless/mediatek/mt76/mt7615/pci.c +3 -0
index 7e3556c3b6eb..828f11087b08 100644
@@ -11,6 +11,7 @@
 
 #include "mt7615.h"
 #include "mac.h"
+#include "../trace.h"
 
 static const struct pci_device_id mt7615_pci_device_table[] = {
 	{ PCI_DEVICE(0x14c3, 0x7615) },
@@ -46,6 +47,8 @@ static irqreturn_t mt7615_irq_handler(int irq, void *dev_instance)
 	if (!test_bit(MT76_STATE_INITIALIZED, &dev->mphy.state))
 		return IRQ_NONE;
 
+	trace_dev_irq(&dev->mt76, intr, dev->mt76.mmio.irqmask);
+
 	intr &= dev->mt76.mmio.irqmask;
 
 	if (intr & MT_INT_TX_DONE_ALL) {
drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c +2 -2
index 094a4228b591..93d56d7ce5db 100644
@@ -9,7 +9,7 @@
 
 #include "mt76x02.h"
 #include "mt76x02_mcu.h"
-#include "mt76x02_trace.h"
+#include "trace.h"
 
 static void mt76x02_pre_tbtt_tasklet(unsigned long arg)
 {
@@ -271,7 +271,7 @@ irqreturn_t mt76x02_irq_handler(int irq, void *dev_instance)
 	if (!test_bit(MT76_STATE_INITIALIZED, &dev->mphy.state))
 		return IRQ_NONE;
 
-	trace_dev_irq(dev, intr, dev->mt76.mmio.irqmask);
+	trace_dev_irq(&dev->mt76, intr, dev->mt76.mmio.irqmask);
 
 	intr &= dev->mt76.mmio.irqmask;
 
drivers/net/wireless/mediatek/mt76/mt76x02_trace.h +0 -23
index 61ecaf0fe065..eea9afe154df 100644
@@ -100,29 +100,6 @@ TRACE_EVENT(mac_txstat_fetch,
 	)
 );
 
-TRACE_EVENT(dev_irq,
-	TP_PROTO(struct mt76x02_dev *dev, u32 val, u32 mask),
-
-	TP_ARGS(dev, val, mask),
-
-	TP_STRUCT__entry(
-		DEV_ENTRY
-		__field(u32, val)
-		__field(u32, mask)
-	),
-
-	TP_fast_assign(
-		DEV_ASSIGN;
-		__entry->val = val;
-		__entry->mask = mask;
-	),
-
-	TP_printk(
-		DEV_PR_FMT " %08x & %08x",
-		DEV_PR_ARG, __entry->val, __entry->mask
-	)
-);
-
 #endif
 
 #undef TRACE_INCLUDE_PATH
drivers/net/wireless/mediatek/mt76/trace.c +2 -0
index ed3df3c8b4b3..3c63f3b8a499 100644
@@ -9,4 +9,6 @@
 #define CREATE_TRACE_POINTS
 #include "trace.h"
 
+EXPORT_TRACEPOINT_SYMBOL_GPL(dev_irq);
+
 #endif
drivers/net/wireless/mediatek/mt76/trace.h +23 -0
index 0b3e635da868..41706a874afa 100644
@@ -51,6 +51,29 @@ DEFINE_EVENT(dev_reg_evt, reg_wr,
 	TP_ARGS(dev, reg, val)
 );
 
+TRACE_EVENT(dev_irq,
+	TP_PROTO(struct mt76_dev *dev, u32 val, u32 mask),
+
+	TP_ARGS(dev, val, mask),
+
+	TP_STRUCT__entry(
+		DEV_ENTRY
+		__field(u32, val)
+		__field(u32, mask)
+	),
+
+	TP_fast_assign(
+		DEV_ASSIGN;
+		__entry->val = val;
+		__entry->mask = mask;
+	),
+
+	TP_printk(
+		DEV_PR_FMT " %08x & %08x",
+		DEV_PR_ARG, __entry->val, __entry->mask
+	)
+);
+
 #endif
 
 #undef TRACE_INCLUDE_PATH
Signature · 1 line
2.21.0
author maintainer
#2 lore raw

PATCH 2/4 mt76: move mac_txdone tracepoint in mt76 module

In reply to Lorenzo Bianconi

Move mac_txdone tracepoint in common code in order to be reused by mt7603 and mt7615 drivers

---
 .../net/wireless/mediatek/mt76/mt7603/mac.c   |  3 ++
 .../net/wireless/mediatek/mt76/mt7615/mac.c   |  3 ++
 .../net/wireless/mediatek/mt76/mt76x02_mac.c  |  3 +-
 .../wireless/mediatek/mt76/mt76x02_trace.h    | 23 -------------
 drivers/net/wireless/mediatek/mt76/trace.c    |  1 +
 drivers/net/wireless/mediatek/mt76/trace.h    | 33 +++++++++++++++++--
 6 files changed, 39 insertions(+), 27 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7603/mac.c +3 -0
index 2a384fd0f088..8f5ca9283f7d 100644
@@ -4,6 +4,7 @@
 #include <linux/timekeeping.h>
 #include "mt7603.h"
 #include "mac.h"
+#include "../trace.h"
 
 #define MT_PSE_PAGE_SIZE	128
 
@@ -1193,6 +1194,8 @@ mt7603_mac_add_txs_skb(struct mt7603_dev *dev, struct mt7603_sta *sta, int pid,
 	if (pid < MT_PACKET_ID_FIRST)
 		return false;
 
+	trace_mac_txdone(mdev, sta->wcid.idx, pid);
+
 	mt76_tx_status_lock(mdev, &list);
 	skb = mt76_tx_status_skb_get(mdev, &sta->wcid, pid, &list);
 	if (skb) {
drivers/net/wireless/mediatek/mt76/mt7615/mac.c +3 -0
index 885a57df76eb..3819a330804c 100644
@@ -10,6 +10,7 @@
 #include <linux/etherdevice.h>
 #include <linux/timekeeping.h>
 #include "mt7615.h"
+#include "../trace.h"
 #include "../dma.h"
 #include "mac.h"
 
@@ -1218,6 +1219,8 @@ static bool mt7615_mac_add_txs_skb(struct mt7615_dev *dev,
 	if (pid < MT_PACKET_ID_FIRST)
 		return false;
 
+	trace_mac_txdone(mdev, sta->wcid.idx, pid);
+
 	mt76_tx_status_lock(mdev, &list);
 	skb = mt76_tx_status_skb_get(mdev, &sta->wcid, pid, &list);
 	if (skb) {
drivers/net/wireless/mediatek/mt76/mt76x02_mac.c +2 -1
index 6c988d779a3e..8b072277ea10 100644
@@ -6,6 +6,7 @@
 
 #include "mt76x02.h"
 #include "mt76x02_trace.h"
+#include "trace.h"
 
 void mt76x02_mac_reset_counters(struct mt76x02_dev *dev)
 {
@@ -910,7 +911,7 @@ void mt76x02_tx_complete_skb(struct mt76_dev *mdev, enum mt76_txq_id qid,
 
 	txwi_ptr = mt76_get_txwi_ptr(mdev, e->txwi);
 	txwi = (struct mt76x02_txwi *)txwi_ptr;
-	trace_mac_txdone_add(dev, txwi->wcid, txwi->pktid);
+	trace_mac_txdone(mdev, txwi->wcid, txwi->pktid);
 
 	mt76_tx_complete_skb(mdev, e->skb);
 }
drivers/net/wireless/mediatek/mt76/mt76x02_trace.h +0 -23
index eea9afe154df..6a98092e996b 100644
@@ -20,7 +20,6 @@
 #define DEV_PR_ARG	__entry->wiphy_name
 
 #define TXID_ENTRY	__field(u8, wcid) __field(u8, pktid)
-#define TXID_ASSIGN	__entry->wcid = wcid; __entry->pktid = pktid
 #define TXID_PR_FMT	" [%d:%d]"
 #define TXID_PR_ARG	__entry->wcid, __entry->pktid
 
@@ -36,28 +35,6 @@ DECLARE_EVENT_CLASS(dev_evt,
 	TP_printk(DEV_PR_FMT, DEV_PR_ARG)
 );
 
-DECLARE_EVENT_CLASS(dev_txid_evt,
-	TP_PROTO(struct mt76x02_dev *dev, u8 wcid, u8 pktid),
-	TP_ARGS(dev, wcid, pktid),
-	TP_STRUCT__entry(
-		DEV_ENTRY
-		TXID_ENTRY
-	),
-	TP_fast_assign(
-		DEV_ASSIGN;
-		TXID_ASSIGN;
-	),
-	TP_printk(
-		DEV_PR_FMT TXID_PR_FMT,
-		DEV_PR_ARG, TXID_PR_ARG
-	)
-);
-
-DEFINE_EVENT(dev_txid_evt, mac_txdone_add,
-	TP_PROTO(struct mt76x02_dev *dev, u8 wcid, u8 pktid),
-	TP_ARGS(dev, wcid, pktid)
-);
-
 DEFINE_EVENT(dev_evt, mac_txstat_poll,
 	TP_PROTO(struct mt76x02_dev *dev),
 	TP_ARGS(dev)
drivers/net/wireless/mediatek/mt76/trace.c +1 -0
index 3c63f3b8a499..f199fcd2a63d 100644
@@ -9,6 +9,7 @@
 #define CREATE_TRACE_POINTS
 #include "trace.h"
 
+EXPORT_TRACEPOINT_SYMBOL_GPL(mac_txdone);
 EXPORT_TRACEPOINT_SYMBOL_GPL(dev_irq);
 
 #endif
drivers/net/wireless/mediatek/mt76/trace.h +30 -3
index 41706a874afa..c3d0ef8e2890 100644
@@ -14,7 +14,7 @@
 
 #define MAXNAME		32
 #define DEV_ENTRY	__array(char, wiphy_name, 32)
-#define DEV_ASSIGN	strlcpy(__entry->wiphy_name,	\
+#define DEVICE_ASSIGN	strlcpy(__entry->wiphy_name,	\
 				wiphy_name(dev->hw->wiphy), MAXNAME)
 #define DEV_PR_FMT	"%s"
 #define DEV_PR_ARG	__entry->wiphy_name
@@ -24,6 +24,11 @@
 #define REG_PR_FMT	" %04x=%08x"
 #define REG_PR_ARG	__entry->reg, __entry->val
 
+#define TXID_ENTRY	__field(u8, wcid) __field(u8, pktid)
+#define TXID_ASSIGN	__entry->wcid = wcid; __entry->pktid = pktid
+#define TXID_PR_FMT	" [%d:%d]"
+#define TXID_PR_ARG	__entry->wcid, __entry->pktid
+
 DECLARE_EVENT_CLASS(dev_reg_evt,
 	TP_PROTO(struct mt76_dev *dev, u32 reg, u32 val),
 	TP_ARGS(dev, reg, val),
@@ -32,7 +37,7 @@ DECLARE_EVENT_CLASS(dev_reg_evt,
 		REG_ENTRY
 	),
 	TP_fast_assign(
-		DEV_ASSIGN;
+		DEVICE_ASSIGN;
 		REG_ASSIGN;
 	),
 	TP_printk(
@@ -63,7 +68,7 @@ TRACE_EVENT(dev_irq,
 	),
 
 	TP_fast_assign(
-		DEV_ASSIGN;
+		DEVICE_ASSIGN;
 		__entry->val = val;
 		__entry->mask = mask;
 	),
@@ -74,6 +79,28 @@ TRACE_EVENT(dev_irq,
 	)
 );
 
+DECLARE_EVENT_CLASS(dev_txid_evt,
+	TP_PROTO(struct mt76_dev *dev, u8 wcid, u8 pktid),
+	TP_ARGS(dev, wcid, pktid),
+	TP_STRUCT__entry(
+		DEV_ENTRY
+		TXID_ENTRY
+	),
+	TP_fast_assign(
+		DEVICE_ASSIGN;
+		TXID_ASSIGN;
+	),
+	TP_printk(
+		DEV_PR_FMT TXID_PR_FMT,
+		DEV_PR_ARG, TXID_PR_ARG
+	)
+);
+
+DEFINE_EVENT(dev_txid_evt, mac_txdone,
+	TP_PROTO(struct mt76_dev *dev, u8 wcid, u8 pktid),
+	TP_ARGS(dev, wcid, pktid)
+);
+
 #endif
 
 #undef TRACE_INCLUDE_PATH
Signature · 1 line
2.21.0
author maintainer
#3 lore raw

PATCH 3/4 mt76: mt7615: add tracing support

In reply to Lorenzo Bianconi

Introduce token tracing support in mt7615_mac_tx_free routine

---
 .../wireless/mediatek/mt76/mt7615/Makefile    |  4 +-
 .../net/wireless/mediatek/mt76/mt7615/mac.c   |  7 ++-
 .../mediatek/mt76/mt7615/mt7615_trace.h       | 56 +++++++++++++++++++
 .../net/wireless/mediatek/mt76/mt7615/trace.c | 12 ++++
 4 files changed, 77 insertions(+), 2 deletions(-)
 create mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/mt7615_trace.h
 create mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/trace.c
drivers/net/wireless/mediatek/mt76/mt7615/Makefile +3 -1
index 5aaac69849d6..dcd6b0e7ce84 100644
@@ -2,5 +2,7 @@
 
 obj-$(CONFIG_MT7615E) += mt7615e.o
 
+CFLAGS_trace.o := -I$(src)
+
 mt7615e-y := pci.o init.o dma.o eeprom.o main.o mcu.o mac.o \
-	     debugfs.o
+	     debugfs.o trace.o
drivers/net/wireless/mediatek/mt76/mt7615/mac.c +6 -1
index 3819a330804c..c958137465c9 100644
@@ -12,6 +12,7 @@
 #include "mt7615.h"
 #include "../trace.h"
 #include "../dma.h"
+#include "mt7615_trace.h"
 #include "mac.h"
 
 #define to_rssi(field, rxv)		((FIELD_GET(field, rxv) - 220) / 2)
@@ -1300,13 +1301,17 @@ void mt7615_mac_tx_free(struct mt7615_dev *dev, struct sk_buff *skb)
 
 	count = FIELD_GET(MT_TX_FREE_MSDU_ID_CNT, le16_to_cpu(free->ctrl));
 	for (i = 0; i < count; i++) {
+		u16 token = le16_to_cpu(free->token[i]);
+
 		spin_lock_bh(&dev->token_lock);
-		txwi = idr_remove(&dev->token, le16_to_cpu(free->token[i]));
+		txwi = idr_remove(&dev->token, token);
 		spin_unlock_bh(&dev->token_lock);
 
 		if (!txwi)
 			continue;
 
+		trace_mac_tx_free(dev, token);
+
 		mt7615_txp_skb_unmap(mdev, txwi);
 		if (txwi->skb) {
 			mt76_tx_complete_skb(mdev, txwi->skb);
drivers/net/wireless/mediatek/mt76/mt7615/mt7615_trace.h new file +56 -0

56 lines not on this page · raw message

drivers/net/wireless/mediatek/mt76/mt7615/trace.c new file +12 -0
new file mode 100644
index 000000000000..6c02d5aff68f
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: ISC
+/*
+ * Copyright (C) 2019 Lorenzo Bianconi <[email protected]>
+ */
+
+#include <linux/module.h>
+
+#ifndef __CHECKER__
+#define CREATE_TRACE_POINTS
+#include "mt7615_trace.h"
+
+#endif
Signature · 1 line
2.21.0
author maintainer
#4 lore raw

PATCH 4/4 mt76: mt76x2: get rid of leftover target

In reply to Lorenzo Bianconi

Remove tracing leftover target in mt76x2 Makefile

---
 drivers/net/wireless/mediatek/mt76/mt76x2/Makefile | 2 --
 1 file changed, 2 deletions(-)
drivers/net/wireless/mediatek/mt76/mt76x2/Makefile +0 -2
index 7b2b187fbf47..caf089538c11 100644
@@ -13,5 +13,3 @@ mt76x2e-y := \
 mt76x2u-y := \
 	usb.o usb_init.o usb_main.o usb_mac.o usb_mcu.o \
 	usb_phy.o
-
-CFLAGS_pci_trace.o := -I$(src)
Signature · 1 line
2.21.0