sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget)/translations/zh_CN/networking/statisticsmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/zh_TW/networking/statisticsmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/it_IT/networking/statisticsmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/ja_JP/networking/statisticsmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/ko_KR/networking/statisticsmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/sp_SP/networking/statisticsmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhC/var/lib/git/docbuild/linux/Documentation/networking/statistics.rsthKubhsection)}(hhh](htitle)}(hInterface statisticsh]hInterface statistics}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hOverviewh]hOverview}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(h?This document is a guide to Linux network interface statistics.h]h?This document is a guide to Linux network interface statistics.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(h>There are three main sources of interface statistics in Linux:h]h>There are three main sources of interface statistics in Linux:}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh block_quote)}(h- standard interface statistics based on :c:type:`struct rtnl_link_stats64 `; - protocol-specific statistics; and - driver-defined statistics available via ethtool. h]h bullet_list)}(hhh](h list_item)}(h^standard interface statistics based on :c:type:`struct rtnl_link_stats64 `;h]h)}(h^standard interface statistics based on :c:type:`struct rtnl_link_stats64 `;h](h'standard interface statistics based on }(hj hhhNhNubh)}(h6:c:type:`struct rtnl_link_stats64 `h]hliteral)}(hjh]hstruct rtnl_link_stats64}(hjhhhNhNubah}(h]h ](xrefcc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocnetworking/statistics refdomainj"reftypetype refexplicitrefwarn reftargetrtnl_link_stats64uh1hhhhKhj ubh;}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h!protocol-specific statistics; andh]h)}(hjHh]h!protocol-specific statistics; and}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjFubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h1driver-defined statistics available via ethtool. h]h)}(h0driver-defined statistics available via ethtool.h]h0driver-defined statistics available via ethtool.}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj]ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]bullet-uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(hStandard interface statisticsh]hStandard interface statistics}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hxThere are multiple interfaces to reach the standard statistics. Most commonly used is the `ip` command from `iproute2`::h](hZThere are multiple interfaces to reach the standard statistics. Most commonly used is the }(hjhhhNhNubhtitle_reference)}(h`ip`h]hip}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh command from }(hjhhhNhNubj)}(h `iproute2`h]hiproute2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh literal_block)}(hXz$ ip -s -s link show dev ens4u1u1 6: ens4u1u1: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 48:2a:e3:4c:b1:d1 brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped overrun mcast 74327665117 69016965 0 0 0 0 RX errors: length crc frame fifo missed 0 0 0 0 0 TX: bytes packets errors dropped carrier collsns 21405556176 44608960 0 0 0 0 TX errors: aborted fifo window heartbeat transns 0 0 0 0 128 altname enp58s0u1u1h]hXz$ ip -s -s link show dev ens4u1u1 6: ens4u1u1: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 48:2a:e3:4c:b1:d1 brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped overrun mcast 74327665117 69016965 0 0 0 0 RX errors: length crc frame fifo missed 0 0 0 0 0 TX: bytes packets errors dropped carrier collsns 21405556176 44608960 0 0 0 0 TX errors: aborted fifo window heartbeat transns 0 0 0 0 128 altname enp58s0u1u1}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhKhjhhubh)}(hNote that `-s` has been specified twice to see all members of :c:type:`struct rtnl_link_stats64 `. If `-s` is specified once the detailed errors won't be shown.h](h Note that }(hjhhhNhNubj)}(h`-s`h]h-s}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh0 has been specified twice to see all members of }(hjhhhNhNubh)}(h6:c:type:`struct rtnl_link_stats64 `h]j)}(hjh]hstruct rtnl_link_stats64}(hjhhhNhNubah}(h]h ](j!j"c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj. refdomainj"reftypetype refexplicitrefwarnj4rtnl_link_stats64uh1hhhhK&hjubh. If }(hjhhhNhNubj)}(h`-s`h]h-s}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh8 is specified once the detailed errors won’t be shown.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK&hjhhubh)}(h2`ip` supports JSON formatting via the `-j` option.h](j)}(h`ip`h]hip}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubh" supports JSON formatting via the }(hj-hhhNhNubj)}(h`-j`h]h-j}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubh option.}(hj-hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK*hjhhubh)}(hhh](h)}(hQueue statisticsh]hQueue statistics}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[hhhhhK-ubh)}(h>Queue statistics are accessible via the netdev netlink family.h]h>Queue statistics are accessible via the netdev netlink family.}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK/hj[hhubh)}(hCurrently no widely distributed CLI exists to access those statistics. Kernel development tools (ynl) can be used to experiment with them, see `Documentation/userspace-api/netlink/intro-specs.rst`.h](hCurrently no widely distributed CLI exists to access those statistics. Kernel development tools (ynl) can be used to experiment with them, see }(hjzhhhNhNubj)}(h5`Documentation/userspace-api/netlink/intro-specs.rst`h]h3Documentation/userspace-api/netlink/intro-specs.rst}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubh.}(hjzhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK1hj[hhubeh}(h]queue-statisticsah ]h"]queue statisticsah$]h&]uh1hhjhhhhhK-ubeh}(h]standard-interface-statisticsah ]h"]standard interface statisticsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hProtocol-specific statisticsh]hProtocol-specific statistics}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK6ubh)}(htProtocol-specific statistics are exposed via relevant interfaces, the same interfaces as are used to configure them.h]htProtocol-specific statistics are exposed via relevant interfaces, the same interfaces as are used to configure them.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK8hjhhubh)}(hhh](h)}(hethtoolh]hethtool}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKhjhhubh)}(hStandard ethtool statistics can be accessed via the interfaces used for configuration. For example ethtool interface used to configure pause frames can report corresponding hardware counters::h]hStandard ethtool statistics can be accessed via the interfaces used for configuration. For example ethtool interface used to configure pause frames can report corresponding hardware counters:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKKhjhhubj)}(h$ ethtool --include-statistics -a eth0 Pause parameters for eth0: Autonegotiate: on RX: on TX: on Statistics: tx_pause_frames: 1 rx_pause_frames: 1h]h$ ethtool --include-statistics -a eth0 Pause parameters for eth0: Autonegotiate: on RX: on TX: on Statistics: tx_pause_frames: 1 rx_pause_frames: 1}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhKOhjhhubh)}(hGeneral Ethernet statistics not associated with any particular functionality are exposed via ``ethtool -S $ifc`` by specifying the ``--groups`` parameter::h](h]General Ethernet statistics not associated with any particular functionality are exposed via }(hjhhhNhNubj)}(h``ethtool -S $ifc``h]hethtool -S $ifc}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh by specifying the }(hjhhhNhNubj)}(h ``--groups``h]h--groups}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh parameter:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKXhjhhubj)}(hX9$ ethtool -S eth0 --groups eth-phy eth-mac eth-ctrl rmon Stats for eth0: eth-phy-SymbolErrorDuringCarrier: 0 eth-mac-FramesTransmittedOK: 1 eth-mac-FrameTooLongErrors: 1 eth-ctrl-MACControlFramesTransmitted: 1 eth-ctrl-MACControlFramesReceived: 0 eth-ctrl-UnsupportedOpcodesReceived: 1 rmon-etherStatsUndersizePkts: 1 rmon-etherStatsJabbers: 0 rmon-rx-etherStatsPkts64Octets: 1 rmon-rx-etherStatsPkts65to127Octets: 0 rmon-rx-etherStatsPkts128to255Octets: 0 rmon-tx-etherStatsPkts64Octets: 2 rmon-tx-etherStatsPkts65to127Octets: 3 rmon-tx-etherStatsPkts128to255Octets: 0h]hX9$ ethtool -S eth0 --groups eth-phy eth-mac eth-ctrl rmon Stats for eth0: eth-phy-SymbolErrorDuringCarrier: 0 eth-mac-FramesTransmittedOK: 1 eth-mac-FrameTooLongErrors: 1 eth-ctrl-MACControlFramesTransmitted: 1 eth-ctrl-MACControlFramesReceived: 0 eth-ctrl-UnsupportedOpcodesReceived: 1 rmon-etherStatsUndersizePkts: 1 rmon-etherStatsJabbers: 0 rmon-rx-etherStatsPkts64Octets: 1 rmon-rx-etherStatsPkts65to127Octets: 0 rmon-rx-etherStatsPkts128to255Octets: 0 rmon-tx-etherStatsPkts64Octets: 2 rmon-tx-etherStatsPkts65to127Octets: 3 rmon-tx-etherStatsPkts128to255Octets: 0}hj6sbah}(h]h ]h"]h$]h&]hhuh1jhhhK\hjhhubeh}(h]ethtoolah ]h"]h$]ethtoolah&]uh1hhjhhhhhK< referencedKubeh}(h]protocol-specific-statisticsah ]h"]protocol-specific statisticsah$]h&]uh1hhhhhhhhK6ubh)}(hhh](h)}(hDriver-defined statisticsh]hDriver-defined statistics}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhhhhhKnubh)}(hODriver-defined ethtool statistics can be dumped using `ethtool -S $ifc`, e.g.::h](h6Driver-defined ethtool statistics can be dumped using }(hjfhhhNhNubj)}(h`ethtool -S $ifc`h]hethtool -S $ifc}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubh, e.g.:}(hjfhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKphjUhhubj)}(hZ$ ethtool -S ens4u1u1 NIC statistics: tx_single_collisions: 0 tx_multi_collisions: 0h]hZ$ ethtool -S ens4u1u1 NIC statistics: tx_single_collisions: 0 tx_multi_collisions: 0}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhKrhjUhhubeh}(h]driver-defined-statisticsah ]h"]driver-defined statisticsah$]h&]uh1hhhhhhhhKnubeh}(h]overviewah ]h"]overviewah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(huAPIsh]huAPIs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKxubh)}(hhh](h)}(hprocfsh]hprocfs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK{ubh)}(hqThe historical `/proc/net/dev` text interface gives access to the list of interfaces as well as their statistics.h](hThe historical }(hjhhhNhNubj)}(h`/proc/net/dev`h]h /proc/net/dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhS text interface gives access to the list of interfaces as well as their statistics.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK}hjhhubh)}(hNote that even though this interface is using :c:type:`struct rtnl_link_stats64 ` internally it combines some of the fields.h](h.Note that even though this interface is using }(hjhhhNhNubh)}(h6:c:type:`struct rtnl_link_stats64 `h]j)}(hjh]hstruct rtnl_link_stats64}(hjhhhNhNubah}(h]h ](j!j"c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj. refdomainj"reftypetype refexplicitrefwarnj4rtnl_link_stats64uh1hhhhKhjubh+ internally it combines some of the fields.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]procfsah ]h"]procfsah$]h&]uh1hhjhhhhhK{ubh)}(hhh](h)}(hsysfsh]hsysfs}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hEach device directory in sysfs contains a `statistics` directory (e.g. `/sys/class/net/lo/statistics/`) with files corresponding to members of :c:type:`struct rtnl_link_stats64 `.h](h*Each device directory in sysfs contains a }(hj0hhhNhNubj)}(h `statistics`h]h statistics}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubh directory (e.g. }(hj0hhhNhNubj)}(h`/sys/class/net/lo/statistics/`h]h/sys/class/net/lo/statistics/}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubh)) with files corresponding to members of }(hj0hhhNhNubh)}(h6:c:type:`struct rtnl_link_stats64 `h]j)}(hj^h]hstruct rtnl_link_stats64}(hj`hhhNhNubah}(h]h ](j!j"c-typeeh"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&]refdocj. refdomainj"reftypetype refexplicitrefwarnj4rtnl_link_stats64uh1hhhhKhj0ubh.}(hj0hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hX@This simple interface is convenient especially in constrained/embedded environments without access to tools. However, it's inefficient when reading multiple stats as it internally performs a full dump of :c:type:`struct rtnl_link_stats64 ` and reports only the stat corresponding to the accessed file.h](hThis simple interface is convenient especially in constrained/embedded environments without access to tools. However, it’s inefficient when reading multiple stats as it internally performs a full dump of }(hjhhhNhNubh)}(h6:c:type:`struct rtnl_link_stats64 `h]j)}(hjh]hstruct rtnl_link_stats64}(hjhhhNhNubah}(h]h ](j!j"c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj. refdomainj"reftypetype refexplicitrefwarnj4rtnl_link_stats64uh1hhhhKhjubh> and reports only the stat corresponding to the accessed file.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hSSysfs files are documented in Documentation/ABI/testing/sysfs-class-net-statistics.h]hSSysfs files are documented in Documentation/ABI/testing/sysfs-class-net-statistics.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]sysfsah ]h"]sysfsah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hnetlinkh]hnetlink}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(h`rtnetlink` (`NETLINK_ROUTE`) is the preferred method of accessing :c:type:`struct rtnl_link_stats64 ` stats.h](j)}(h `rtnetlink`h]h rtnetlink}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh (}(hjhhhNhNubj)}(h`NETLINK_ROUTE`h]h NETLINK_ROUTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh') is the preferred method of accessing }(hjhhhNhNubh)}(h6:c:type:`struct rtnl_link_stats64 `h]j)}(hjh]hstruct rtnl_link_stats64}(hj hhhNhNubah}(h]h ](j!j"c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj. refdomainj"reftypetype refexplicitrefwarnj4rtnl_link_stats64uh1hhhhKhjubh stats.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hStatistics are reported both in the responses to link information requests (`RTM_GETLINK`) and statistic requests (`RTM_GETSTATS`, when `IFLA_STATS_LINK_64` bit is set in the `.filter_mask` of the request).h](hLStatistics are reported both in the responses to link information requests (}(hj.hhhNhNubj)}(h `RTM_GETLINK`h]h RTM_GETLINK}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubh) and statistic requests (}(hj.hhhNhNubj)}(h`RTM_GETSTATS`h]h RTM_GETSTATS}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubh, when }(hj.hhhNhNubj)}(h`IFLA_STATS_LINK_64`h]hIFLA_STATS_LINK_64}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubh bit is set in the }(hj.hhhNhNubj)}(h`.filter_mask`h]h .filter_mask}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubh of the request).}(hj.hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hhh](h)}(hnetdev (netlink)h]hnetdev (netlink)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hT`netdev` generic netlink family allows accessing page pool and per queue statistics.h](j)}(h`netdev`h]hnetdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhL generic netlink family allows accessing page pool and per queue statistics.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]netdev-netlinkah ]h"]netdev (netlink)ah$]h&]uh1hhjhhhhhKubeh}(h]netlinkah ]h"]netlinkah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hethtoolh]hethtool}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hXEthtool IOCTL interface allows drivers to report implementation specific statistics. Historically it has also been used to report statistics for which other APIs did not exist, like per-device-queue statistics, or standard-based statistics (e.g. RFC 2863).h]hXEthtool IOCTL interface allows drivers to report implementation specific statistics. Historically it has also been used to report statistics for which other APIs did not exist, like per-device-queue statistics, or standard-based statistics (e.g. RFC 2863).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hX Statistics and their string identifiers are retrieved separately. 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`).h](hRStatistics and their string identifiers are retrieved separately. Identifiers via }(hjhhhNhNubj)}(h`ETHTOOL_GSTRINGS`h]hETHTOOL_GSTRINGS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh with }(hjhhhNhNubj)}(h `string_set`h]h string_set}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh set to }(hjhhhNhNubj)}(h`ETH_SS_STATS`h]h ETH_SS_STATS}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, and values via }(hjhhhNhNubj)}(h`ETHTOOL_GSTATS`h]hETHTOOL_GSTATS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh. User space should use }(hjhhhNhNubj)}(h`ETHTOOL_GDRVINFO`h]hETHTOOL_GDRVINFO}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh' to retrieve the number of statistics (}(hjhhhNhNubj)}(h `.n_stats`h]h.n_stats}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]id1ah ]h"]h$]jJah&]uh1hhjhhhhhKjLKubh)}(hhh](h)}(hethtool-netlinkh]hethtool-netlink}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjahhhhhKubh)}(h?Ethtool netlink is a replacement for the older IOCTL interface.h]h?Ethtool netlink is a replacement for the older IOCTL interface.}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjahhubh)}(hProtocol-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:h](hLProtocol-related statistics can be requested in get commands by setting the }(hjhhhNhNubj)}(h`ETHTOOL_FLAG_STATS`h]hETHTOOL_FLAG_STATS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh flag in }(hjhhhNhNubj)}(h`ETHTOOL_A_HEADER_FLAGS`h]hETHTOOL_A_HEADER_FLAGS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh?. Currently statistics are supported in the following commands:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjahhubh)}(hI- `ETHTOOL_MSG_PAUSE_GET` - `ETHTOOL_MSG_FEC_GET` - `ETHTOOL_MSG_MM_GET` h]h)}(hhh](j)}(h`ETHTOOL_MSG_PAUSE_GET`h]h)}(hjh]j)}(hjh]hETHTOOL_MSG_PAUSE_GET}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h`ETHTOOL_MSG_FEC_GET`h]h)}(hjh]j)}(hjh]hETHTOOL_MSG_FEC_GET}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h`ETHTOOL_MSG_MM_GET` h]h)}(h`ETHTOOL_MSG_MM_GET`h]j)}(hjh]hETHTOOL_MSG_MM_GET}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]j{j|uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjahhubeh}(h]ethtool-netlinkah ]h"]ethtool-netlinkah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hdebugfsh]hdebugfs}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hhhhhKubh)}(h3Some drivers expose extra statistics via `debugfs`.h](h)Some drivers expose extra statistics via }(hj?hhhNhNubj)}(h `debugfs`h]hdebugfs}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubh.}(hj?hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj.hhubeh}(h]debugfsah ]h"]debugfsah$]h&]uh1hhjhhhhhKubeh}(h]uapisah ]h"]uapisah$]h&]uh1hhhhhhhhKxubh)}(hhh](h)}(hstruct rtnl_link_stats64h]hstruct rtnl_link_stats64}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohhhhhKubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singlertnl_link_stats64 (C struct)c.rtnl_link_stats64hNtauh1jhjohhhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhNubhdesc)}(hhh](hdesc_signature)}(hrtnl_link_stats64h]hdesc_signature_line)}(hstruct rtnl_link_stats64h](hdesc_sig_keyword)}(hstructh]hstruct}(hjhhhNhNubah}(h]h ]kah"]h$]h&]uh1jhjhhhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhjhhhjhKubh desc_name)}(hrtnl_link_stats64h]h desc_sig_name)}(hjh]hrtnl_link_stats64}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hh add_permalinkuh1jsphinx_line_type declaratorhjhhhjhKubah}(h]jah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jhjhKhjhhubh desc_content)}(hhh]h)}(h%The main device statistics structure.h]h%The main device statistics structure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhK+hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](j"structeh"]h$]h&]domainj"objtypejdesctypejnoindex noindexentrynocontentsentryuh1jhhhjohjhNubh container)}(hX**Definition**:: struct rtnl_link_stats64 { __u64 rx_packets; __u64 tx_packets; __u64 rx_bytes; __u64 tx_bytes; __u64 rx_errors; __u64 tx_errors; __u64 rx_dropped; __u64 tx_dropped; __u64 multicast; __u64 collisions; __u64 rx_length_errors; __u64 rx_over_errors; __u64 rx_crc_errors; __u64 rx_frame_errors; __u64 rx_fifo_errors; __u64 rx_missed_errors; __u64 tx_aborted_errors; __u64 tx_carrier_errors; __u64 tx_fifo_errors; __u64 tx_heartbeat_errors; __u64 tx_window_errors; __u64 rx_compressed; __u64 tx_compressed; __u64 rx_nohandler; __u64 rx_otherhost_dropped; }; **Members** ``rx_packets`` Number of good packets received by the interface. For hardware interfaces counts all good packets received from the device by the host, including packets which host had to drop at various stages of processing (even in the driver). ``tx_packets`` Number of packets successfully transmitted. For hardware interfaces counts packets which host was able to successfully hand over to the device, which does not necessarily mean that packets had been successfully transmitted out of the device, only that device acknowledged it copied them out of host memory. ``rx_bytes`` Number of good received bytes, corresponding to **rx_packets**. ``tx_bytes`` Number of good transmitted bytes, corresponding to **tx_packets**. ``rx_errors`` Total number of bad packets received on this network device. This counter must include events counted by **rx_length_errors**, **rx_crc_errors**, **rx_frame_errors** and other errors not otherwise counted. ``tx_errors`` Total number of transmit problems. This counter must include events counter by **tx_aborted_errors**, **tx_carrier_errors**, **tx_fifo_errors**, **tx_heartbeat_errors**, **tx_window_errors** and other errors not otherwise counted. ``rx_dropped`` Number of packets received but not processed, e.g. due to lack of resources or unsupported protocol. For hardware interfaces this counter may include packets discarded due to L2 address filtering but should not include packets dropped by the device due to buffer exhaustion which are counted separately in **rx_missed_errors** (since procfs folds those two counters together). ``tx_dropped`` Number of packets dropped on their way to transmission, e.g. due to lack of resources. ``multicast`` Multicast packets received. For hardware interfaces this statistic is commonly calculated at the device level (unlike **rx_packets**) and therefore may include packets which did not reach the host. ``collisions`` Number of collisions during packet transmissions. ``rx_length_errors`` Number of packets dropped due to invalid length. Part of aggregate "frame" errors in `/proc/net/dev`. ``rx_over_errors`` Receiver FIFO overflow event counter. ``rx_crc_errors`` Number of packets received with a CRC error. Part of aggregate "frame" errors in `/proc/net/dev`. ``rx_frame_errors`` Receiver frame alignment errors. Part of aggregate "frame" errors in `/proc/net/dev`. ``rx_fifo_errors`` Receiver FIFO error counter. ``rx_missed_errors`` Count of packets missed by the host. Folded into the "drop" counter in `/proc/net/dev`. ``tx_aborted_errors`` Part of aggregate "carrier" errors in `/proc/net/dev`. For IEEE 802.3 devices capable of half-duplex operation this counter must be equivalent to: ``tx_carrier_errors`` Number of frame transmission errors due to loss of carrier during transmission. Part of aggregate "carrier" errors in `/proc/net/dev`. ``tx_fifo_errors`` Number of frame transmission errors due to device FIFO underrun / underflow. This condition occurs when the device begins transmission of a frame but is unable to deliver the entire frame to the transmitter in time for transmission. Part of aggregate "carrier" errors in `/proc/net/dev`. ``tx_heartbeat_errors`` Number of Heartbeat / SQE Test errors for old half-duplex Ethernet. Part of aggregate "carrier" errors in `/proc/net/dev`. ``tx_window_errors`` Number of frame transmission errors due to late collisions (for Ethernet - after the first 64B of transmission). Part of aggregate "carrier" errors in `/proc/net/dev`. ``rx_compressed`` Number of correctly received compressed packets. This counters is only meaningful for interfaces which support packet compression (e.g. CSLIP, PPP). ``tx_compressed`` Number of transmitted compressed packets. This counters is only meaningful for interfaces which support packet compression (e.g. CSLIP, PPP). ``rx_nohandler`` Number of packets received on the interface but dropped by the networking stack because the device is not designated to receive packets (e.g. backup link in a bond). ``rx_otherhost_dropped`` Number of packets dropped due to mismatch in destination MAC address.h](h)}(h**Definition**::h](hstrong)}(h**Definition**h]h Definition}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j)hj%ubh:}(hj%hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhK/hj!ubj)}(hXstruct rtnl_link_stats64 { __u64 rx_packets; __u64 tx_packets; __u64 rx_bytes; __u64 tx_bytes; __u64 rx_errors; __u64 tx_errors; __u64 rx_dropped; __u64 tx_dropped; __u64 multicast; __u64 collisions; __u64 rx_length_errors; __u64 rx_over_errors; __u64 rx_crc_errors; __u64 rx_frame_errors; __u64 rx_fifo_errors; __u64 rx_missed_errors; __u64 tx_aborted_errors; __u64 tx_carrier_errors; __u64 tx_fifo_errors; __u64 tx_heartbeat_errors; __u64 tx_window_errors; __u64 rx_compressed; __u64 tx_compressed; __u64 rx_nohandler; __u64 rx_otherhost_dropped; };h]hXstruct rtnl_link_stats64 { __u64 rx_packets; __u64 tx_packets; __u64 rx_bytes; __u64 tx_bytes; __u64 rx_errors; __u64 tx_errors; __u64 rx_dropped; __u64 tx_dropped; __u64 multicast; __u64 collisions; __u64 rx_length_errors; __u64 rx_over_errors; __u64 rx_crc_errors; __u64 rx_frame_errors; __u64 rx_fifo_errors; __u64 rx_missed_errors; __u64 tx_aborted_errors; __u64 tx_carrier_errors; __u64 tx_fifo_errors; __u64 tx_heartbeat_errors; __u64 tx_window_errors; __u64 rx_compressed; __u64 tx_compressed; __u64 rx_nohandler; __u64 rx_otherhost_dropped; };}hjDsbah}(h]h ]h"]h$]h&]hhuh1jhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhK1hj!ubh)}(h **Members**h]j*)}(hjUh]hMembers}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j)hjSubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKMhj!ubhdefinition_list)}(hhh](hdefinition_list_item)}(h``rx_packets`` Number of good packets received by the interface. For hardware interfaces counts all good packets received from the device by the host, including packets which host had to drop at various stages of processing (even in the driver). h](hterm)}(h``rx_packets``h]j)}(hjzh]h rx_packets}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhK1hjrubh definition)}(hhh]h)}(hNumber of good packets received by the interface. For hardware interfaces counts all good packets received from the device by the host, including packets which host had to drop at various stages of processing (even in the driver).h]hNumber of good packets received by the interface. For hardware interfaces counts all good packets received from the device by the host, including packets which host had to drop at various stages of processing (even in the driver).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhK.hjubah}(h]h ]h"]h$]h&]uh1jhjrubeh}(h]h ]h"]h$]h&]uh1jphjhK1hjmubjq)}(hXB``tx_packets`` Number of packets successfully transmitted. For hardware interfaces counts packets which host was able to successfully hand over to the device, which does not necessarily mean that packets had been successfully transmitted out of the device, only that device acknowledged it copied them out of host memory. h](jw)}(h``tx_packets``h]j)}(hjh]h tx_packets}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhK7hjubj)}(hhh]h)}(hX2Number of packets successfully transmitted. For hardware interfaces counts packets which host was able to successfully hand over to the device, which does not necessarily mean that packets had been successfully transmitted out of the device, only that device acknowledged it copied them out of host memory.h]hX2Number of packets successfully transmitted. For hardware interfaces counts packets which host was able to successfully hand over to the device, which does not necessarily mean that packets had been successfully transmitted out of the device, only that device acknowledged it copied them out of host memory.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhK3hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jphjhK7hjmubjq)}(hM``rx_bytes`` Number of good received bytes, corresponding to **rx_packets**. h](jw)}(h ``rx_bytes``h]j)}(hjh]hrx_bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhK9hjubj)}(hhh]h)}(h?Number of good received bytes, corresponding to **rx_packets**.h](h0Number of good received bytes, corresponding to }(hj hhhNhNubj*)}(h**rx_packets**h]h rx_packets}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j)hj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hK9hj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jphj hK9hjmubjq)}(hP``tx_bytes`` Number of good transmitted bytes, corresponding to **tx_packets**. h](jw)}(h ``tx_bytes``h]j)}(hj; h]htx_bytes}(hj= hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9 ubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhK>hj5 ubj)}(hhh]h)}(hBNumber of good transmitted bytes, corresponding to **tx_packets**.h](h3Number of good transmitted bytes, corresponding to }(hjT hhhNhNubj*)}(h**tx_packets**h]h tx_packets}(hj\ hhhNhNubah}(h]h ]h"]h$]h&]uh1j)hjT ubh.}(hjT hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjP hK>hjQ ubah}(h]h ]h"]h$]h&]uh1jhj5 ubeh}(h]h ]h"]h$]h&]uh1jphjP hK>hjmubjq)}(h``rx_errors`` Total number of bad packets received on this network device. This counter must include events counted by **rx_length_errors**, **rx_crc_errors**, **rx_frame_errors** and other errors not otherwise counted. h](jw)}(h ``rx_errors``h]j)}(hj h]h rx_errors}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKFhj ubj)}(hhh]h)}(hTotal number of bad packets received on this network device. This counter must include events counted by **rx_length_errors**, **rx_crc_errors**, **rx_frame_errors** and other errors not otherwise counted.h](hiTotal number of bad packets received on this network device. This counter must include events counted by }(hj hhhNhNubj*)}(h**rx_length_errors**h]hrx_length_errors}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j)hj ubh, }(hj hhhNhNubj*)}(h**rx_crc_errors**h]h rx_crc_errors}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j)hj ubh, }(hj hhhNhNubj*)}(h**rx_frame_errors**h]hrx_frame_errors}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j)hj ubh( and other errors not otherwise counted.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKChj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jphj hKFhjmubjq)}(h``tx_errors`` Total number of transmit problems. This counter must include events counter by **tx_aborted_errors**, **tx_carrier_errors**, **tx_fifo_errors**, **tx_heartbeat_errors**, **tx_window_errors** and other errors not otherwise counted. h](jw)}(h ``tx_errors``h]j)}(hj h]h tx_errors}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKKhj ubj)}(hhh]h)}(hTotal number of transmit problems. This counter must include events counter by **tx_aborted_errors**, **tx_carrier_errors**, **tx_fifo_errors**, **tx_heartbeat_errors**, **tx_window_errors** and other errors not otherwise counted.h](hOTotal number of transmit problems. This counter must include events counter by }(hj hhhNhNubj*)}(h**tx_aborted_errors**h]htx_aborted_errors}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j)hj ubh, }(hj hhhNhNubj*)}(h**tx_carrier_errors**h]htx_carrier_errors}(hj) hhhNhNubah}(h]h ]h"]h$]h&]uh1j)hj ubh, }(hj hhhNhNubj*)}(h**tx_fifo_errors**h]htx_fifo_errors}(hj; hhhNhNubah}(h]h ]h"]h$]h&]uh1j)hj ubh, }hj sbj*)}(h**tx_heartbeat_errors**h]htx_heartbeat_errors}(hjM hhhNhNubah}(h]h ]h"]h$]h&]uh1j)hj ubh, }hj sbj*)}(h**tx_window_errors**h]htx_window_errors}(hj_ hhhNhNubah}(h]h ]h"]h$]h&]uh1j)hj ubh( and other errors not otherwise counted.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKHhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jphj hKKhjmubjq)}(hX``rx_dropped`` Number of packets received but not processed, e.g. due to lack of resources or unsupported protocol. For hardware interfaces this counter may include packets discarded due to L2 address filtering but should not include packets dropped by the device due to buffer exhaustion which are counted separately in **rx_missed_errors** (since procfs folds those two counters together). h](jw)}(h``rx_dropped``h]j)}(hj h]h rx_dropped}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKRhj ubj)}(hhh]h)}(hXxNumber of packets received but not processed, e.g. due to lack of resources or unsupported protocol. For hardware interfaces this counter may include packets discarded due to L2 address filtering but should not include packets dropped by the device due to buffer exhaustion which are counted separately in **rx_missed_errors** (since procfs folds those two counters together).h](hX2Number of packets received but not processed, e.g. due to lack of resources or unsupported protocol. For hardware interfaces this counter may include packets discarded due to L2 address filtering but should not include packets dropped by the device due to buffer exhaustion which are counted separately in }(hj hhhNhNubj*)}(h**rx_missed_errors**h]hrx_missed_errors}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j)hj ubh2 (since procfs folds those two counters together).}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKMhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jphj hKRhjmubjq)}(hf``tx_dropped`` Number of packets dropped on their way to transmission, e.g. due to lack of resources. h](jw)}(h``tx_dropped``h]j)}(hj h]h tx_dropped}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKUhj ubj)}(hhh]h)}(hVNumber of packets dropped on their way to transmission, e.g. due to lack of resources.h]hVNumber of packets dropped on their way to transmission, e.g. due to lack of resources.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKThj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jphj hKUhjmubjq)}(h``multicast`` Multicast packets received. For hardware interfaces this statistic is commonly calculated at the device level (unlike **rx_packets**) and therefore may include packets which did not reach the host. h](jw)}(h ``multicast``h]j)}(hj h]h multicast}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKZhj ubj)}(hhh]h)}(hMulticast packets received. For hardware interfaces this statistic is commonly calculated at the device level (unlike **rx_packets**) and therefore may include packets which did not reach the host.h](hvMulticast packets received. For hardware interfaces this statistic is commonly calculated at the device level (unlike }(hj) hhhNhNubj*)}(h**rx_packets**h]h rx_packets}(hj1 hhhNhNubah}(h]h ]h"]h$]h&]uh1j)hj) ubhA) and therefore may include packets which did not reach the host.}(hj) hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKWhj& ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jphj% hKZhjmubjq)}(hA``collisions`` Number of collisions during packet transmissions. h](jw)}(h``collisions``h]j)}(hj\ h]h collisions}(hj^ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZ ubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhK`hjV ubj)}(hhh]h)}(h1Number of collisions during packet transmissions.h]h1Number of collisions during packet transmissions.}(hju hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjq hK`hjr ubah}(h]h ]h"]h$]h&]uh1jhjV ubeh}(h]h ]h"]h$]h&]uh1jphjq hK`hjmubjq)}(h{``rx_length_errors`` Number of packets dropped due to invalid length. Part of aggregate "frame" errors in `/proc/net/dev`. h](jw)}(h``rx_length_errors``h]j)}(hj h]hrx_length_errors}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKchj ubj)}(hhh]h)}(heNumber of packets dropped due to invalid length. Part of aggregate "frame" errors in `/proc/net/dev`.h](hYNumber of packets dropped due to invalid length. Part of aggregate “frame” errors in }(hj hhhNhNubj)}(h`/proc/net/dev`h]h /proc/net/dev}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKbhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jphj hKchjmubjq)}(h9``rx_over_errors`` Receiver FIFO overflow event counter. h](jw)}(h``rx_over_errors``h]j)}(hj h]hrx_over_errors}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKlhj ubj)}(hhh]h)}(h%Receiver FIFO overflow event counter.h]h%Receiver FIFO overflow event counter.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKlhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jphj hKlhjmubjq)}(ht``rx_crc_errors`` Number of packets received with a CRC error. Part of aggregate "frame" errors in `/proc/net/dev`. h](jw)}(h``rx_crc_errors``h]j)}(hj h]h rx_crc_errors}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhj ubj)}(hhh]h)}(haNumber of packets received with a CRC error. Part of aggregate "frame" errors in `/proc/net/dev`.h](hUNumber of packets received with a CRC error. Part of aggregate “frame” errors in }(hj3 hhhNhNubj)}(h`/proc/net/dev`h]h /proc/net/dev}(hj; hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3 ubh.}(hj3 hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhj0 ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jphj/ hKhjmubjq)}(hj``rx_frame_errors`` Receiver frame alignment errors. Part of aggregate "frame" errors in `/proc/net/dev`. h](jw)}(h``rx_frame_errors``h]j)}(hjf h]hrx_frame_errors}(hjh hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjd ubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhj` ubj)}(hhh]h)}(hUReceiver frame alignment errors. Part of aggregate "frame" errors in `/proc/net/dev`.h](hIReceiver frame alignment errors. Part of aggregate “frame” errors in }(hj hhhNhNubj)}(h`/proc/net/dev`h]h /proc/net/dev}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhj| ubah}(h]h ]h"]h$]h&]uh1jhj` ubeh}(h]h ]h"]h$]h&]uh1jphj{ hKhjmubjq)}(h0``rx_fifo_errors`` Receiver FIFO error counter. h](jw)}(h``rx_fifo_errors``h]j)}(hj h]hrx_fifo_errors}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhj ubj)}(hhh]h)}(hReceiver FIFO error counter.h]hReceiver FIFO error counter.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jphj hKhjmubjq)}(hm``rx_missed_errors`` Count of packets missed by the host. Folded into the "drop" counter in `/proc/net/dev`. h](jw)}(h``rx_missed_errors``h]j)}(hj h]hrx_missed_errors}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhj ubj)}(hhh]h)}(hWCount of packets missed by the host. Folded into the "drop" counter in `/proc/net/dev`.h](hKCount of packets missed by the host. Folded into the “drop” counter in }(hj hhhNhNubj)}(h`/proc/net/dev`h]h /proc/net/dev}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jphj hKhjmubjq)}(h``tx_aborted_errors`` Part of aggregate "carrier" errors in `/proc/net/dev`. For IEEE 802.3 devices capable of half-duplex operation this counter must be equivalent to: h](jw)}(h``tx_aborted_errors``h]j)}(hj7 h]htx_aborted_errors}(hj9 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5 ubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhj1 ubj)}(hhh]h)}(hPart of aggregate "carrier" errors in `/proc/net/dev`. For IEEE 802.3 devices capable of half-duplex operation this counter must be equivalent to:h](h*Part of aggregate “carrier” errors in }(hjP hhhNhNubj)}(h`/proc/net/dev`h]h /proc/net/dev}(hjX hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjP ubh]. For IEEE 802.3 devices capable of half-duplex operation this counter must be equivalent to:}(hjP hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhjM ubah}(h]h ]h"]h$]h&]uh1jhj1 ubeh}(h]h ]h"]h$]h&]uh1jphjL hKhjmubjq)}(h``tx_carrier_errors`` Number of frame transmission errors due to loss of carrier during transmission. Part of aggregate "carrier" errors in `/proc/net/dev`. h](jw)}(h``tx_carrier_errors``h]j)}(hj h]htx_carrier_errors}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhj} ubj)}(hhh]h)}(hNumber of frame transmission errors due to loss of carrier during transmission. Part of aggregate "carrier" errors in `/proc/net/dev`.h](hzNumber of frame transmission errors due to loss of carrier during transmission. Part of aggregate “carrier” errors in }(hj hhhNhNubj)}(h`/proc/net/dev`h]h /proc/net/dev}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhj ubah}(h]h ]h"]h$]h&]uh1jhj} ubeh}(h]h ]h"]h$]h&]uh1jphj hKhjmubjq)}(hX3``tx_fifo_errors`` Number of frame transmission errors due to device FIFO underrun / underflow. This condition occurs when the device begins transmission of a frame but is unable to deliver the entire frame to the transmitter in time for transmission. Part of aggregate "carrier" errors in `/proc/net/dev`. h](jw)}(h``tx_fifo_errors``h]j)}(hj h]htx_fifo_errors}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhj ubj)}(hhh]h)}(hXNumber of frame transmission errors due to device FIFO underrun / underflow. This condition occurs when the device begins transmission of a frame but is unable to deliver the entire frame to the transmitter in time for transmission. Part of aggregate "carrier" errors in `/proc/net/dev`.h](hXNumber of frame transmission errors due to device FIFO underrun / underflow. This condition occurs when the device begins transmission of a frame but is unable to deliver the entire frame to the transmitter in time for transmission. Part of aggregate “carrier” errors in }(hj hhhNhNubj)}(h`/proc/net/dev`h]h /proc/net/dev}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jphj hKhjmubjq)}(h``tx_heartbeat_errors`` Number of Heartbeat / SQE Test errors for old half-duplex Ethernet. Part of aggregate "carrier" errors in `/proc/net/dev`. h](jw)}(h``tx_heartbeat_errors``h]j)}(hjh]htx_heartbeat_errors}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhjubj)}(hhh]h)}(hzNumber of Heartbeat / SQE Test errors for old half-duplex Ethernet. Part of aggregate "carrier" errors in `/proc/net/dev`.h](hnNumber of Heartbeat / SQE Test errors for old half-duplex Ethernet. Part of aggregate “carrier” errors in }(hj4hhhNhNubj)}(h`/proc/net/dev`h]h /proc/net/dev}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubh.}(hj4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhj1ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jphj0hKhjmubjq)}(h``tx_window_errors`` Number of frame transmission errors due to late collisions (for Ethernet - after the first 64B of transmission). Part of aggregate "carrier" errors in `/proc/net/dev`. h](jw)}(h``tx_window_errors``h]j)}(hjgh]htx_window_errors}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhjaubj)}(hhh]h)}(hNumber of frame transmission errors due to late collisions (for Ethernet - after the first 64B of transmission). Part of aggregate "carrier" errors in `/proc/net/dev`.h](hNumber of frame transmission errors due to late collisions (for Ethernet - after the first 64B of transmission). Part of aggregate “carrier” errors in }(hjhhhNhNubj)}(h`/proc/net/dev`h]h /proc/net/dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhj}ubah}(h]h ]h"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]uh1jphj|hKhjmubjq)}(h``rx_compressed`` Number of correctly received compressed packets. This counters is only meaningful for interfaces which support packet compression (e.g. CSLIP, PPP). h](jw)}(h``rx_compressed``h]j)}(hjh]h rx_compressed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhjubj)}(hhh]h)}(hNumber of correctly received compressed packets. This counters is only meaningful for interfaces which support packet compression (e.g. CSLIP, PPP).h]hNumber of correctly received compressed packets. This counters is only meaningful for interfaces which support packet compression (e.g. CSLIP, PPP).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jphjhKhjmubjq)}(h``tx_compressed`` Number of transmitted compressed packets. This counters is only meaningful for interfaces which support packet compression (e.g. CSLIP, PPP). h](jw)}(h``tx_compressed``h]j)}(hjh]h tx_compressed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhjubj)}(hhh]h)}(hNumber of transmitted compressed packets. This counters is only meaningful for interfaces which support packet compression (e.g. CSLIP, PPP).h]hNumber of transmitted compressed packets. This counters is only meaningful for interfaces which support packet compression (e.g. CSLIP, PPP).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jphjhKhjmubjq)}(h``rx_nohandler`` Number of packets received on the interface but dropped by the networking stack because the device is not designated to receive packets (e.g. backup link in a bond). h](jw)}(h``rx_nohandler``h]j)}(hj'h]h rx_nohandler}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhj!ubj)}(hhh]h)}(hNumber of packets received on the interface but dropped by the networking stack because the device is not designated to receive packets (e.g. backup link in a bond).h]hNumber of packets received on the interface but dropped by the networking stack because the device is not designated to receive packets (e.g. backup link in a bond).}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhj=ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jphj<hKhjmubjq)}(h^``rx_otherhost_dropped`` Number of packets dropped due to mismatch in destination MAC address.dh](jw)}(h``rx_otherhost_dropped``h]j)}(hjah]hrx_otherhost_dropped}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]uh1jvhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhj[ubj)}(hhh]h)}(hENumber of packets dropped due to mismatch in destination MAC address.h]hENumber of packets dropped due to mismatch in destination MAC address.}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvhKhjwubah}(h]h ]h"]h$]h&]uh1jhj[ubeh}(h]h ]h"]h$]h&]uh1jphjvhKhjmubeh}(h]h ]h"]h$]h&]uh1jkhj!ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhjhNubh)}(h**Description**h]j*)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j)hjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhjohhubh)}(hX For IEEE 802.3 devices should count the length of Ethernet Frames excluding the FCS. For IEEE 802.3 devices should count the length of Ethernet Frames excluding the FCS. For IEEE 802.3 devices this counter may be equivalent to: - 30.3.1.1.21 aMulticastFramesReceivedOK For IEEE 802.3 devices this counter should be equivalent to a sum of the following attributes: - 30.3.1.1.23 aInRangeLengthErrors - 30.3.1.1.24 aOutOfRangeLengthField - 30.3.1.1.25 aFrameTooLongErrors Historically the count of overflow events. Such events may be reported in the receive descriptors or via interrupts, and may not correspond one-to-one with dropped packets. The recommended interpretation for high speed interfaces is - number of packets dropped because they did not fit into buffers provided by the host, e.g. packets larger than MTU or next buffer in the ring was not available for a scatter transfer. Part of aggregate "frame" errors in `/proc/net/dev`. This statistics was historically used interchangeably with **rx_fifo_errors**. This statistic corresponds to hardware events and is not commonly used on software devices. For IEEE 802.3 devices this counter must be equivalent to: - 30.3.1.1.6 aFrameCheckSequenceErrors For IEEE 802.3 devices this counter should be equivalent to: - 30.3.1.1.7 aAlignmentErrors Historically the count of overflow events. Those events may be reported in the receive descriptors or via interrupts, and may not correspond one-to-one with dropped packets. This statistics was used interchangeably with **rx_over_errors**. Not recommended for use in drivers for high speed interfaces. This statistic is used on software devices, e.g. to count software packet queue overflow (can) or sequencing errors (GRE). Counts number of packets dropped by the device due to lack of buffer space. This usually indicates that the host interface is slower than the network interface, or host is not keeping up with the receive packet rate. This statistic corresponds to hardware events and is not used on software devices. - 30.3.1.1.11 aFramesAbortedDueToXSColls High speed interfaces may use this counter as a general device discard counter. For IEEE 802.3 devices this counter must be equivalent to: - 30.3.1.1.13 aCarrierSenseErrors For IEEE 802.3 devices possibly equivalent to: - 30.3.2.1.4 aSQETestErrors For IEEE 802.3 devices this counter must be equivalent to: - 30.3.1.1.10 aLateCollisions h](h)}(hTFor IEEE 802.3 devices should count the length of Ethernet Frames excluding the FCS.h]hTFor IEEE 802.3 devices should count the length of Ethernet Frames excluding the FCS.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhK9hjubh)}(hTFor IEEE 802.3 devices should count the length of Ethernet Frames excluding the FCS.h]hTFor IEEE 802.3 devices should count the length of Ethernet Frames excluding the FCS.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhK=hjubh)}(h9For IEEE 802.3 devices this counter may be equivalent to:h]h9For IEEE 802.3 devices this counter may be equivalent to:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKAhjubh)}(h*- 30.3.1.1.21 aMulticastFramesReceivedOK h]h)}(hhh]j)}(h(30.3.1.1.21 aMulticastFramesReceivedOK h]h)}(h&30.3.1.1.21 aMulticastFramesReceivedOKh]h&30.3.1.1.21 aMulticastFramesReceivedOK}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKChjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]j{j|uh1hhjhKChjubah}(h]h ]h"]h$]h&]uh1hhjhKChjubh)}(h^For IEEE 802.3 devices this counter should be equivalent to a sum of the following attributes:h]h^For IEEE 802.3 devices this counter should be equivalent to a sum of the following attributes:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKFhjubh)}(hk- 30.3.1.1.23 aInRangeLengthErrors - 30.3.1.1.24 aOutOfRangeLengthField - 30.3.1.1.25 aFrameTooLongErrors h]h)}(hhh](j)}(h 30.3.1.1.23 aInRangeLengthErrorsh]h)}(hj.h]h 30.3.1.1.23 aInRangeLengthErrors}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKIhj,ubah}(h]h ]h"]h$]h&]uh1jhj)ubj)}(h"30.3.1.1.24 aOutOfRangeLengthFieldh]h)}(hjFh]h"30.3.1.1.24 aOutOfRangeLengthField}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKJhjDubah}(h]h ]h"]h$]h&]uh1jhj)ubj)}(h!30.3.1.1.25 aFrameTooLongErrors h]h)}(h30.3.1.1.25 aFrameTooLongErrorsh]h30.3.1.1.25 aFrameTooLongErrors}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKKhj\ubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]j{j|uh1hhj=hKIhj%ubah}(h]h ]h"]h$]h&]uh1hhj=hKIhjubh)}(hHistorically the count of overflow events. Such events may be reported in the receive descriptors or via interrupts, and may not correspond one-to-one with dropped packets.h]hHistorically the count of overflow events. Such events may be reported in the receive descriptors or via interrupts, and may not correspond one-to-one with dropped packets.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKNhjubh)}(hThe recommended interpretation for high speed interfaces is - number of packets dropped because they did not fit into buffers provided by the host, e.g. packets larger than MTU or next buffer in the ring was not available for a scatter transfer.h]hThe recommended interpretation for high speed interfaces is - number of packets dropped because they did not fit into buffers provided by the host, e.g. packets larger than MTU or next buffer in the ring was not available for a scatter transfer.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKRhjubh)}(h4Part of aggregate "frame" errors in `/proc/net/dev`.h](h(Part of aggregate “frame” errors in }(hjhhhNhNubj)}(h`/proc/net/dev`h]h /proc/net/dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKWhjubh)}(hNThis statistics was historically used interchangeably with **rx_fifo_errors**.h](h;This statistics was historically used interchangeably with }(hjhhhNhNubj*)}(h**rx_fifo_errors**h]hrx_fifo_errors}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j)hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKYhjubh)}(h[This statistic corresponds to hardware events and is not commonly used on software devices.h]h[This statistic corresponds to hardware events and is not commonly used on software devices.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhK\hjubh)}(h:For IEEE 802.3 devices this counter must be equivalent to:h]h:For IEEE 802.3 devices this counter must be equivalent to:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhK`hjubh)}(h(- 30.3.1.1.6 aFrameCheckSequenceErrors h]h)}(hhh]j)}(h&30.3.1.1.6 aFrameCheckSequenceErrors h]h)}(h$30.3.1.1.6 aFrameCheckSequenceErrorsh]h$30.3.1.1.6 aFrameCheckSequenceErrors}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKbhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]j{j|uh1hhjhKbhjubah}(h]h ]h"]h$]h&]uh1hhjhKbhjubh)}(hubah}(h]h ]h"]h$]h&]j{j|uh1hhjShKghj:ubah}(h]h ]h"]h$]h&]uh1hhjShKghjubh)}(hHistorically the count of overflow events. Those events may be reported in the receive descriptors or via interrupts, and may not correspond one-to-one with dropped packets.h]hHistorically the count of overflow events. Those events may be reported in the receive descriptors or via interrupts, and may not correspond one-to-one with dropped packets.}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKjhjubh)}(hThis statistics was used interchangeably with **rx_over_errors**. Not recommended for use in drivers for high speed interfaces.h](h.This statistics was used interchangeably with }(hjuhhhNhNubj*)}(h**rx_over_errors**h]hrx_over_errors}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1j)hjuubh?. Not recommended for use in drivers for high speed interfaces.}(hjuhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKnhjubh)}(hzThis statistic is used on software devices, e.g. to count software packet queue overflow (can) or sequencing errors (GRE).h]hzThis statistic is used on software devices, e.g. to count software packet queue overflow (can) or sequencing errors (GRE).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKqhjubh)}(hCounts number of packets dropped by the device due to lack of buffer space. This usually indicates that the host interface is slower than the network interface, or host is not keeping up with the receive packet rate.h]hCounts number of packets dropped by the device due to lack of buffer space. This usually indicates that the host interface is slower than the network interface, or host is not keeping up with the receive packet rate.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKuhjubh)}(hRThis statistic corresponds to hardware events and is not used on software devices.h]hRThis statistic corresponds to hardware events and is not used on software devices.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKzhjubh)}(h)- 30.3.1.1.11 aFramesAbortedDueToXSColls h]h)}(hhh]j)}(h'30.3.1.1.11 aFramesAbortedDueToXSColls h]h)}(h&30.3.1.1.11 aFramesAbortedDueToXSCollsh]h&30.3.1.1.11 aFramesAbortedDueToXSColls}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhK~hjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]j{j|uh1hhjhK~hjubah}(h]h ]h"]h$]h&]uh1hhjhK~hjubh)}(hOHigh speed interfaces may use this counter as a general device discard counter.h]hOHigh speed interfaces may use this counter as a general device discard counter.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhjubh)}(h:For IEEE 802.3 devices this counter must be equivalent to:h]h:For IEEE 802.3 devices this counter must be equivalent to:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhjubh)}(h#- 30.3.1.1.13 aCarrierSenseErrors h]h)}(hhh]j)}(h!30.3.1.1.13 aCarrierSenseErrors h]h)}(h30.3.1.1.13 aCarrierSenseErrorsh]h30.3.1.1.13 aCarrierSenseErrors}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]j{j|uh1hhj&hKhj ubah}(h]h ]h"]h$]h&]uh1hhj&hKhjubh)}(h.For IEEE 802.3 devices possibly equivalent to:h]h.For IEEE 802.3 devices possibly equivalent to:}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhjubh)}(h- 30.3.2.1.4 aSQETestErrors h]h)}(hhh]j)}(h30.3.2.1.4 aSQETestErrors h]h)}(h30.3.2.1.4 aSQETestErrorsh]h30.3.2.1.4 aSQETestErrors}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhjOubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]j{j|uh1hhjahKhjHubah}(h]h ]h"]h$]h&]uh1hhjahKhjubh)}(h:For IEEE 802.3 devices this counter must be equivalent to:h]h:For IEEE 802.3 devices this counter must be equivalent to:}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhjubh)}(h- 30.3.1.1.10 aLateCollisions h]h)}(hhh]j)}(h30.3.1.1.10 aLateCollisions h]h)}(h30.3.1.1.10 aLateCollisionsh]h30.3.1.1.10 aLateCollisions}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]j{j|uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1hhjhKhjubeh}(h]h ]h"]h$]h&]uh1hhjhK9hjohhubeh}(h]struct-rtnl-link-stats64ah ]h"]struct rtnl_link_stats64ah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hNotes for driver authorsh]hNotes for driver authors}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hDrivers should report all statistics which have a matching member in :c:type:`struct rtnl_link_stats64 ` exclusively via `.ndo_get_stats64`. Reporting such standard stats via ethtool or debugfs will not be accepted.h](hEDrivers should report all statistics which have a matching member in }(hjhhhNhNubh)}(h6:c:type:`struct rtnl_link_stats64 `h]j)}(hjh]hstruct rtnl_link_stats64}(hjhhhNhNubah}(h]h ](j!j"c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj. refdomainj"reftypetype refexplicitrefwarn c:parent_keysphinx.domains.c LookupKey)}data]sbj4rtnl_link_stats64uh1hhhhKhjubh exclusively via }(hjhhhNhNubj)}(h`.ndo_get_stats64`h]h.ndo_get_stats64}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhL. Reporting such standard stats via ethtool or debugfs will not be accepted.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hDrivers must ensure best possible compliance with :c:type:`struct rtnl_link_stats64 `. Please note for example that detailed error statistics must be added into the general `rx_error` / `tx_error` counters.h](h2Drivers must ensure best possible compliance with }(hjhhhNhNubh)}(h6:c:type:`struct rtnl_link_stats64 `h]j)}(hj#h]hstruct rtnl_link_stats64}(hj%hhhNhNubah}(h]h ](j!j"c-typeeh"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]refdocj. refdomainj"reftypetype refexplicitrefwarnjjj4rtnl_link_stats64uh1hhhhKhjubhX. Please note for example that detailed error statistics must be added into the general }(hjhhhNhNubj)}(h `rx_error`h]hrx_error}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh / }(hjhhhNhNubj)}(h `tx_error`h]htx_error}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh counters.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hXeThe `.ndo_get_stats64` callback can not sleep because of accesses via `/proc/net/dev`. If driver may sleep when retrieving the statistics from the device it should do so periodically asynchronously and only return a recent copy from `.ndo_get_stats64`. Ethtool interrupt coalescing interface allows setting the frequency of refreshing statistics, if needed.h](hThe }(hjnhhhNhNubj)}(h`.ndo_get_stats64`h]h.ndo_get_stats64}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubh0 callback can not sleep because of accesses via }(hjnhhhNhNubj)}(h`/proc/net/dev`h]h /proc/net/dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubh. If driver may sleep when retrieving the statistics from the device it should do so periodically asynchronously and only return a recent copy from }(hjnhhhNhNubj)}(h`.ndo_get_stats64`h]h.ndo_get_stats64}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubhj. Ethtool interrupt coalescing interface allows setting the frequency of refreshing statistics, if needed.}(hjnhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hRetrieving ethtool statistics is a multi-syscall process, drivers are advised to keep the number of statistics constant to avoid race conditions with user space trying to read them.h]hRetrieving ethtool statistics is a multi-syscall process, drivers are advised to keep the number of statistics constant to avoid race conditions with user space trying to read them.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hZStatistics must persist across routine operations like bringing the interface down and up.h]hZStatistics must persist across routine operations like bringing the interface down and up.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hhh](h)}(hKernel-internal data structuresh]hKernel-internal data structures}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hThe 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.h]hThe 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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hhh](j)}(hethtool_pause_stats()h]h)}(hjh]hethtool_pause_stats()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hethtool_fec_stats()h]h)}(hj h]hethtool_fec_stats()}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h]h ]h"]h$]h&]j{j|uh1hhhhKhjhhubeh}(h]kernel-internal-data-structuresah ]h"]kernel-internal data structuresah$]h&]uh1hhjhhhhhKubeh}(h]notes-for-driver-authorsah ]h"]notes for driver authorsah$]h&]uh1hhhhhhhhKubeh}(h]interface-statisticsah ]h"]interface statisticsah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj_error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j9j6jjjjjjjRjOethtoolNjjjljijjjjjjjjj+j(jdjajjj1j.j)j&u nametypes}(j9jjjjRjjjljjjjj+jdjj1j)uh}(j6hjhjjjj[jOjjFjjjUjijjjjjjjjjj\jj(jajaj.jjojjj.jj&ju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jmKsRparse_messages]hsystem_message)}(hhh]h)}(h*Duplicate implicit target name: "ethtool".h]h.Duplicate implicit target name: “ethtool”.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]j\alevelKtypeINFOsourcehlineKuh1jhjhhhhhKubatransform_messages] transformerN include_log] decorationNhhub.