On Fri, 2020-09-11 at 16:28 -0700, Jakub Kicinski wrote: > 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 <k...@kernel.org> > --- > Documentation/networking/statistics.rst | 57 ++++++++++++++++++++++- > -- > 1 file changed, 52 insertions(+), 5 deletions(-) > > diff --git a/Documentation/networking/statistics.rst > b/Documentation/networking/statistics.rst > index d490b535cd14..8e15bc98830b 100644 > --- a/Documentation/networking/statistics.rst > +++ b/Documentation/networking/statistics.rst > @@ -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 > @@ -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 > +
this will require to access the HW twice per stats request to read both stats and current parameters, maybe this is not a big deal, but sharp accuracy can be important for some performance enthusiasts. Do we need an API that only reports statistics without the current parameters ?