From patchwork Thu Aug 16 09:34:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Waldekranz X-Patchwork-Id: 958219 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=waldekranz.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=waldekranz-com.20150623.gappssmtp.com header.i=@waldekranz-com.20150623.gappssmtp.com header.b="AuLjc1VP"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 41rh4M5ZGWz9s47 for ; Thu, 16 Aug 2018 19:34:27 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390522AbeHPMbi (ORCPT ); Thu, 16 Aug 2018 08:31:38 -0400 Received: from mail-lj1-f195.google.com ([209.85.208.195]:38921 "EHLO mail-lj1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727273AbeHPMbi (ORCPT ); Thu, 16 Aug 2018 08:31:38 -0400 Received: by mail-lj1-f195.google.com with SMTP id l15-v6so3124228lji.6 for ; Thu, 16 Aug 2018 02:34:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=waldekranz-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:organization; bh=1g4W4DPaKo8EPB3Yox5xayg40Vuqf10sRmiBShKv2lk=; b=AuLjc1VPGEFjCod4WjjxF2SP8PILZWQsbrohXnNsN65tzephB07/AScQv1hWE4wpbA aYx3/6Se+sMxFO/OUV+pvQDHbjunkLqA1qNPB1Ubt9LzEBcslTEPS1BbJtUSOpJiB6zb OYKn3Tz+S7EGtKN4ajhOXD7GkKhOGxfGJl0Ua3GdwzmDC0uiyY7T+gYbTr5rwYuf7qkL tx62FnGkWH70W6Xic3d/94r2QOEAXe2YpbW3t/vXVOsC8R52bZ1XND9ef9yGwWGeniXQ 0+VkfZXpQTRPJvkw3EO+wB+HYIolXQyqhtfW24GDdPohFpt+O27VEDi5Dz+NonFFTdio lz8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:organization; bh=1g4W4DPaKo8EPB3Yox5xayg40Vuqf10sRmiBShKv2lk=; b=ppbt3uZ/uM+/rcBKXRFRIby6M0edvzoebo3sQEuO9YHEHxXRoNFFaO9yAuqTnudvdb AEZvBBEuIFouttN2QqpVmWPWPTUeKL5a9/maOynCWeEMm7GBbqsQ5QQwsxeU5CD/bta+ JFnZO8vxa/g873aLgbGftglPw1wxmLKekKPZCO81LtX6a2bAOvH3FTE9PXPMZMNlwHep TwZsM0WgY7149SqqFU8bEFPMjQBBJYOUcmSUxN6Tvo2DNdJzR/zSXgs/KN1zsWeNiZxe j3Zpg/iZT6V5SLZJsFd0oF5L3cDjuHilv6fMX+OFNrvOwbmv/8pULsXo5eZW9keJYtZR 8+0g== X-Gm-Message-State: AOUpUlHkbav+39qYu8hpD/eUBGULqkmqZQXJDQbHgln/bd8K+tmLFNWq dOmCxfTdBGvOheOTyNNDLMzR8A== X-Google-Smtp-Source: AA+uWPxZelV1QGSD5lRgOSr4KWre3MO8QmzqFT+xTfq/2e2MezGNLx48nSFTqYHaso2OdNv2vCv3hg== X-Received: by 2002:a2e:2096:: with SMTP id g22-v6mr4176691lji.37.1534412059468; Thu, 16 Aug 2018 02:34:19 -0700 (PDT) Received: from wkz-wmo.labs.westermo.se (static-193-12-47-89.cust.tele2.se. [193.12.47.89]) by smtp.gmail.com with ESMTPSA id q85-v6sm4983138lfg.20.2018.08.16.02.34.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 16 Aug 2018 02:34:18 -0700 (PDT) From: Tobias Waldekranz To: tobias@waldekranz.com Cc: Andrew Lunn , Florian Fainelli , "David S. Miller" , Steven Rostedt , Ingo Molnar , linux-kernel@vger.kernel.org (open list), netdev@vger.kernel.org (open list:ETHERNET PHY LIBRARY) Subject: [PATCH] net: phy: add tracepoints Date: Thu, 16 Aug 2018 11:34:15 +0200 Message-Id: <20180816093418.2621-1-tobias@waldekranz.com> X-Mailer: git-send-email 2.17.1 Organization: Westermo Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Two tracepoints for now: * `phy_interrupt` Pretty self-explanatory. * `phy_state_change` Whenever the PHY's state machine is run, trace the old and the new state. Signed-off-by: Tobias Waldekranz --- drivers/net/phy/phy.c | 4 +++ include/trace/events/phy.h | 68 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 include/trace/events/phy.h diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 9aabfa1a455a..8d22926f3962 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -38,6 +38,9 @@ #include +#define CREATE_TRACE_POINTS +#include + #define PHY_STATE_STR(_state) \ case PHY_##_state: \ return __stringify(_state); \ @@ -1039,6 +1042,7 @@ void phy_state_machine(struct work_struct *work) if (err < 0) phy_error(phydev); + trace_phy_state_change(phydev, old_state); if (old_state != phydev->state) phydev_dbg(phydev, "PHY state change %s -> %s\n", phy_state_to_str(old_state), diff --git a/include/trace/events/phy.h b/include/trace/events/phy.h new file mode 100644 index 000000000000..7ba6c0dda47e --- /dev/null +++ b/include/trace/events/phy.h @@ -0,0 +1,68 @@ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM phy + +#if !defined(_TRACE_PHY_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_PHY_H + +#include + +TRACE_EVENT(phy_interrupt, + TP_PROTO(int irq, struct phy_device *phydev), + TP_ARGS(irq, phydev), + TP_STRUCT__entry( + __field(int, irq) + __field(int, addr) + __field(int, state) + __array(char, ifname, IFNAMSIZ) + ), + TP_fast_assign( + __entry->irq = irq; + __entry->addr = phydev->mdio.addr; + __entry->state = phydev->state; + if (phydev->attached_dev) + memcpy(__entry->ifname, + netdev_name(phydev->attached_dev), + IFNAMSIZ); + else + memset(__entry->ifname, 0, IFNAMSIZ); + ), + TP_printk("phy-%d-irq irq=%d ifname=%16s state=%d", + __entry->addr, + __entry->irq, + __entry->ifname, + __entry->state + ) + ); + +TRACE_EVENT(phy_state_change, + TP_PROTO(struct phy_device *phydev, enum phy_state old_state), + TP_ARGS(phydev, old_state), + TP_STRUCT__entry( + __field(int, addr) + __field(int, state) + __field(int, old_state) + __array(char, ifname, IFNAMSIZ) + ), + TP_fast_assign( + __entry->addr = phydev->mdio.addr; + __entry->state = phydev->state; + __entry->old_state = old_state; + if (phydev->attached_dev) + memcpy(__entry->ifname, + netdev_name(phydev->attached_dev), + IFNAMSIZ); + else + memset(__entry->ifname, 0, IFNAMSIZ); + ), + TP_printk("phy-%d-change ifname=%16s old_state=%d state=%d", + __entry->addr, + __entry->ifname, + __entry->old_state, + __entry->state + ) + ); + +#endif /* _TRACE_PHY_H */ + +/* This part must be outside protection */ +#include