Skip to content

Commit

Permalink
docs: net: include the new ethtool pause stats in the stats doc
Browse files Browse the repository at this point in the history
Tell people that there now is an interface for querying pause frames.
A little bit of restructuring is needed given this is a first source
of such statistics.

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Reviewed-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Jakub Kicinski authored and David S. Miller committed Sep 15, 2020
1 parent 9a27a33 commit 8c00bd9
Showing 1 changed file with 52 additions and 5 deletions.
57 changes: 52 additions & 5 deletions Documentation/networking/statistics.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,23 @@
Interface statistics
====================

Overview
========

This document is a guide to Linux network interface statistics.

There are two main sources of interface statistics in Linux:
There are three main sources of interface statistics in Linux:

- standard interface statistics based on
:c:type:`struct rtnl_link_stats64 <rtnl_link_stats64>`; and
:c:type:`struct rtnl_link_stats64 <rtnl_link_stats64>`;
- protocol-specific statistics; and
- driver-defined statistics available via ethtool.

There are multiple interfaces to reach the former. Most commonly used
is the `ip` command from `iproute2`::
Standard interface statistics
-----------------------------

There are multiple interfaces to reach the standard statistics.
Most commonly used is the `ip` command from `iproute2`::

$ ip -s -s link show dev ens4u1u1
6: ens4u1u1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
Expand All @@ -34,7 +41,26 @@ If `-s` is specified once the detailed errors won't be shown.

`ip` supports JSON formatting via the `-j` option.

Ethtool statistics can be dumped using `ethtool -S $ifc`, e.g.::
Protocol-specific statistics
----------------------------

Some of the interfaces used for configuring devices are also able
to report related statistics. For example ethtool interface used
to configure pause frames can report corresponding hardware counters::

$ ethtool --include-statistics -a eth0
Pause parameters for eth0:
Autonegotiate: on
RX: on
TX: on
Statistics:
tx_pause_frames: 1
rx_pause_frames: 1

Driver-defined statistics
-------------------------

Driver-defined ethtool statistics can be dumped using `ethtool -S $ifc`, e.g.::

$ ethtool -S ens4u1u1
NIC statistics:
Expand Down Expand Up @@ -94,6 +120,17 @@ Identifiers via `ETHTOOL_GSTRINGS` with `string_set` set to `ETH_SS_STATS`,
and values via `ETHTOOL_GSTATS`. User space should use `ETHTOOL_GDRVINFO`
to retrieve the number of statistics (`.n_stats`).

ethtool-netlink
---------------

Ethtool netlink is a replacement for the older IOCTL interface.

Protocol-related statistics can be requested in get commands by setting
the `ETHTOOL_FLAG_STATS` flag in `ETHTOOL_A_HEADER_FLAGS`. Currently
statistics are supported in the following commands:

- `ETHTOOL_MSG_PAUSE_GET`

debugfs
-------

Expand Down Expand Up @@ -130,3 +167,13 @@ user space trying to read them.

Statistics must persist across routine operations like bringing the interface
down and up.

Kernel-internal data structures
-------------------------------

The following structures are internal to the kernel, their members are
translated to netlink attributes when dumped. Drivers must not overwrite
the statistics they don't report with 0.

.. kernel-doc:: include/linux/ethtool.h
:identifiers: ethtool_pause_stats

0 comments on commit 8c00bd9

Please sign in to comment.