mt76: mt7921: introduce MCU_EVENT_LP_INFO event parsing
Report trace event related to MCU_EVENT_LP_INFO that is sent by the mcu when it is ready to enter in deep sleep state Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
66978204f7
commit
2afd17b4d0
5 changed files with 86 additions and 1 deletions
|
|
@ -2,4 +2,6 @@
|
|||
|
||||
obj-$(CONFIG_MT7921E) += mt7921e.o
|
||||
|
||||
mt7921e-y := pci.o mac.o mcu.o dma.o eeprom.o main.o init.o debugfs.o
|
||||
CFLAGS_trace.o := -I$(src)
|
||||
|
||||
mt7921e-y := pci.o mac.o mcu.o dma.o eeprom.o main.o init.o debugfs.o trace.o
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
#include <linux/firmware.h>
|
||||
#include <linux/fs.h>
|
||||
#include "mt7921.h"
|
||||
#include "mt7921_trace.h"
|
||||
#include "mcu.h"
|
||||
#include "mac.h"
|
||||
|
||||
|
|
@ -498,6 +499,20 @@ mt7921_mcu_debug_msg_event(struct mt7921_dev *dev, struct sk_buff *skb)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
mt7921_mcu_low_power_event(struct mt7921_dev *dev, struct sk_buff *skb)
|
||||
{
|
||||
struct mt7921_mcu_lp_event {
|
||||
u8 state;
|
||||
u8 reserved[3];
|
||||
} __packed * event;
|
||||
|
||||
skb_pull(skb, sizeof(struct mt7921_mcu_rxd));
|
||||
event = (struct mt7921_mcu_lp_event *)skb->data;
|
||||
|
||||
trace_lp_event(dev, event->state);
|
||||
}
|
||||
|
||||
static void
|
||||
mt7921_mcu_rx_unsolicited_event(struct mt7921_dev *dev, struct sk_buff *skb)
|
||||
{
|
||||
|
|
@ -521,6 +536,9 @@ mt7921_mcu_rx_unsolicited_event(struct mt7921_dev *dev, struct sk_buff *skb)
|
|||
mt76_connac_mcu_coredump_event(&dev->mt76, skb,
|
||||
&dev->coredump);
|
||||
return;
|
||||
case MCU_EVENT_LP_INFO:
|
||||
mt7921_mcu_low_power_event(dev, skb);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
@ -543,6 +561,7 @@ void mt7921_mcu_rx_event(struct mt7921_dev *dev, struct sk_buff *skb)
|
|||
rxd->eid == MCU_EVENT_SCAN_DONE ||
|
||||
rxd->eid == MCU_EVENT_DBG_MSG ||
|
||||
rxd->eid == MCU_EVENT_COREDUMP ||
|
||||
rxd->eid == MCU_EVENT_LP_INFO ||
|
||||
!rxd->seq)
|
||||
mt7921_mcu_rx_unsolicited_event(dev, skb);
|
||||
else
|
||||
|
|
|
|||
|
|
@ -79,6 +79,7 @@ struct mt7921_uni_txd {
|
|||
/* event table */
|
||||
enum {
|
||||
MCU_EVENT_REG_ACCESS = 0x05,
|
||||
MCU_EVENT_LP_INFO = 0x07,
|
||||
MCU_EVENT_SCAN_DONE = 0x0d,
|
||||
MCU_EVENT_BSS_ABSENCE = 0x11,
|
||||
MCU_EVENT_BSS_BEACON_LOSS = 0x13,
|
||||
|
|
|
|||
51
drivers/net/wireless/mediatek/mt76/mt7921/mt7921_trace.h
Normal file
51
drivers/net/wireless/mediatek/mt76/mt7921/mt7921_trace.h
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
/* SPDX-License-Identifier: ISC */
|
||||
/*
|
||||
* Copyright (C) 2021 Lorenzo Bianconi <lorenzo@kernel.org>
|
||||
*/
|
||||
|
||||
#if !defined(__MT7921_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
|
||||
#define __MT7921_TRACE_H
|
||||
|
||||
#include <linux/tracepoint.h>
|
||||
#include "mt7921.h"
|
||||
|
||||
#undef TRACE_SYSTEM
|
||||
#define TRACE_SYSTEM mt7921
|
||||
|
||||
#define MAXNAME 32
|
||||
#define DEV_ENTRY __array(char, wiphy_name, 32)
|
||||
#define DEV_ASSIGN strlcpy(__entry->wiphy_name, \
|
||||
wiphy_name(mt76_hw(dev)->wiphy), MAXNAME)
|
||||
#define DEV_PR_FMT "%s"
|
||||
#define DEV_PR_ARG __entry->wiphy_name
|
||||
#define LP_STATE_PR_ARG __entry->lp_state ? "lp ready" : "lp not ready"
|
||||
|
||||
TRACE_EVENT(lp_event,
|
||||
TP_PROTO(struct mt7921_dev *dev, u8 lp_state),
|
||||
|
||||
TP_ARGS(dev, lp_state),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
DEV_ENTRY
|
||||
__field(u8, lp_state)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
DEV_ASSIGN;
|
||||
__entry->lp_state = lp_state;
|
||||
),
|
||||
|
||||
TP_printk(
|
||||
DEV_PR_FMT " %s",
|
||||
DEV_PR_ARG, LP_STATE_PR_ARG
|
||||
)
|
||||
);
|
||||
|
||||
#endif
|
||||
|
||||
#undef TRACE_INCLUDE_PATH
|
||||
#define TRACE_INCLUDE_PATH .
|
||||
#undef TRACE_INCLUDE_FILE
|
||||
#define TRACE_INCLUDE_FILE mt7921_trace
|
||||
|
||||
#include <trace/define_trace.h>
|
||||
12
drivers/net/wireless/mediatek/mt76/mt7921/trace.c
Normal file
12
drivers/net/wireless/mediatek/mt76/mt7921/trace.c
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
// SPDX-License-Identifier: ISC
|
||||
/*
|
||||
* Copyright (C) 2021 Lorenzo Bianconi <lorenzo@kernel.org>
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
|
||||
#ifndef __CHECKER__
|
||||
#define CREATE_TRACE_POINTS
|
||||
#include "mt7921_trace.h"
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue