Introduce tracing support to mt7615 driver
Subsystems (2)
Lorenzo Bianconi
maintainercover 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
Lorenzo Bianconi
maintainerPATCH 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
Lorenzo Bianconi
maintainerPATCH 2/4 mt76: move mac_txdone tracepoint in mt76 module
In reply to Lorenzo BianconiMove 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
Lorenzo Bianconi
maintainerPATCH 3/4 mt76: mt7615: add tracing support
In reply to Lorenzo BianconiIntroduce 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
@@ -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
@@ -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
@@ -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
Lorenzo Bianconi
maintainerPATCH 4/4 mt76: mt76x2: get rid of leftover target
In reply to Lorenzo BianconiRemove 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
@@ -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