ethtool: add FEC statistics
authorJakub Kicinski <kuba@kernel.org>
Thu, 15 Apr 2021 22:53:15 +0000 (15:53 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 16 Apr 2021 00:08:29 +0000 (17:08 -0700)
commitbe85dbfeb37c8c4d4344da2ee594d78034b82489
tree972fb6fe03f43402a5e71dc827bbb276cd1bb43d
parent3d7cc109ecf76afc74f40eb71d5c9baa03c167a3
ethtool: add FEC statistics

Similarly to pause statistics add stats for FEC.

The IEEE standard mandates two sets of counters:
 - 30.5.1.1.17 aFECCorrectedBlocks
 - 30.5.1.1.18 aFECUncorrectableBlocks
where block is a block of bits FEC operates on.
Each of these counters is defined per lane (PCS instance).

Multiple vendors provide number of corrected _bits_ rather
than/as well as blocks.

This set adds the 2 standard-based block counters and a extra
one for corrected bits.

Counters are exposed to user space via netlink in new attributes.
Each attribute carries an array of u64s, first element is
the total count, and the following ones are a per-lane break down.

Much like with pause stats the operation will not fail when driver
does not implement the get_fec_stats callback (nor can the driver
fail the operation by returning an error). If stats can't be
reported the relevant attributes will be empty.

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Documentation/networking/ethtool-netlink.rst
Documentation/networking/statistics.rst
include/linux/ethtool.h
include/uapi/linux/ethtool_netlink.h
net/ethtool/fec.c