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_stats64hNtauh1jhjohhhNhNubhdesc)}(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 noindexentrynocontentsentryuh1jhhhjohNhNubh container)}(hXp**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**. For IEEE 802.3 devices should count the length of Ethernet Frames excluding the FCS. ``tx_bytes`` Number of good transmitted bytes, corresponding to **tx_packets**. For IEEE 802.3 devices should count the length of Ethernet Frames excluding the FCS. ``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. For IEEE 802.3 devices this counter may be equivalent to: - 30.3.1.1.21 aMulticastFramesReceivedOK ``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`. 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 ``rx_over_errors`` Receiver FIFO overflow event counter. 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. ``rx_crc_errors`` Number of packets received with a CRC error. Part of aggregate "frame" errors in `/proc/net/dev`. For IEEE 802.3 devices this counter must be equivalent to: - 30.3.1.1.6 aFrameCheckSequenceErrors ``rx_frame_errors`` Receiver frame alignment errors. Part of aggregate "frame" errors in `/proc/net/dev`. For IEEE 802.3 devices this counter should be equivalent to: - 30.3.1.1.7 aAlignmentErrors ``rx_fifo_errors`` Receiver FIFO error counter. 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). ``rx_missed_errors`` Count of packets missed by the host. Folded into the "drop" counter in `/proc/net/dev`. 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. ``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: - 30.3.1.1.11 aFramesAbortedDueToXSColls High speed interfaces may use this counter as a general device discard counter. ``tx_carrier_errors`` Number of frame transmission errors due to loss of carrier during transmission. Part of aggregate "carrier" errors in `/proc/net/dev`. For IEEE 802.3 devices this counter must be equivalent to: - 30.3.1.1.13 aCarrierSenseErrors ``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`. For IEEE 802.3 devices possibly equivalent to: - 30.3.2.1.4 aSQETestErrors ``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`. For IEEE 802.3 devices this counter must be equivalent to: - 30.3.1.1.10 aLateCollisions ``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; };}hjCsbah}(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))}(hjTh]hMembers}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j(hjRubah}(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)}(hjyh]h rx_packets}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]uh1juhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhK1hjqubh 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&]uh1jhjqubeh}(h]h ]h"]h$]h&]uh1johjhK1hjlubjp)}(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](jv)}(h``tx_packets``h]j)}(hjh]h tx_packets}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1juhc/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&]uh1johjhK7hjlubjp)}(h``rx_bytes`` Number of good received bytes, corresponding to **rx_packets**. For IEEE 802.3 devices should count the length of Ethernet Frames excluding the FCS. h](jv)}(h ``rx_bytes``h]j)}(hjh]hrx_bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1juhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhj` ubh)}(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.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhK@hj` ubeh}(h]h ]h"]h$]h&]uh1jhjD ubeh}(h]h ]h"]h$]h&]uh1johj_ hKAhjlubjp)}(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](jv)}(h ``rx_errors``h]j)}(hj h]h rx_errors}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1juhc/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&]uh1johj hKFhjlubjp)}(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](jv)}(h ``tx_errors``h]j)}(hj h]h tx_errors}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1juhc/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}(hj6 hhhNhNubah}(h]h ]h"]h$]h&]uh1j(hj. ubh, }(hj. hhhNhNubj))}(h**tx_carrier_errors**h]htx_carrier_errors}(hjH hhhNhNubah}(h]h ]h"]h$]h&]uh1j(hj. ubh, }(hj. hhhNhNubj))}(h**tx_fifo_errors**h]htx_fifo_errors}(hjZ hhhNhNubah}(h]h ]h"]h$]h&]uh1j(hj. ubh, }hj. sbj))}(h**tx_heartbeat_errors**h]htx_heartbeat_errors}(hjl 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&]uh1johj* hKKhjlubjp)}(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](jv)}(h``rx_dropped``h]j)}(hj h]h rx_dropped}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1juhc/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&]uh1johj hKRhjlubjp)}(hf``tx_dropped`` Number of packets dropped on their way to transmission, e.g. due to lack of resources. h](jv)}(h``tx_dropped``h]j)}(hj h]h tx_dropped}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1juhc/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&]uh1johj hKUhjlubjp)}(hX:``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. For IEEE 802.3 devices this counter may be equivalent to: - 30.3.1.1.21 aMulticastFramesReceivedOK h](jv)}(h ``multicast``h]j)}(hj/ h]h multicast}(hj1 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj- ubah}(h]h ]h"]h$]h&]uh1juhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhK^hj) 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 }(hjH hhhNhNubj))}(h**rx_packets**h]h rx_packets}(hjP hhhNhNubah}(h]h ]h"]h$]h&]uh1j(hjH ubhA) and therefore may include packets which did not reach the host.}(hjH hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKWhjE ubh)}(h9For IEEE 802.3 devices this counter may be equivalent to:h]h9For IEEE 802.3 devices this counter may be equivalent to:}(hji hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhK\hjE ubh)}(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}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjD hK^hj ubah}(h]h ]h"]h$]h&]uh1jhj| ubah}(h]h ]h"]h$]h&]j{j|uh1hhjD hK^hjx ubah}(h]h ]h"]h$]h&]uh1hhjD hK^hjE ubeh}(h]h ]h"]h$]h&]uh1jhj) ubeh}(h]h ]h"]h$]h&]uh1johjD hK^hjlubjp)}(hA``collisions`` Number of collisions during packet transmissions. h](jv)}(h``collisions``h]j)}(hj h]h collisions}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1juhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhK`hj ubj)}(hhh]h)}(h1Number of collisions during packet transmissions.h]h1Number of collisions during packet transmissions.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK`hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1johj hK`hjlubjp)}(hXI``rx_length_errors`` Number of packets dropped due to invalid length. Part of aggregate "frame" errors in `/proc/net/dev`. 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 h](jv)}(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&]uh1juhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKjhj 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 ubh)}(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:}(hj( hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKehj ubh)}(hj- 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}(hjB hhhNhNubah}(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; ubj)}(h"30.3.1.1.24 aOutOfRangeLengthFieldh]h)}(hjX h]h"30.3.1.1.24 aOutOfRangeLengthField}(hjZ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKihjV ubah}(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}(hjr hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKjhjn ubah}(h]h ]h"]h$]h&]uh1jhj; ubeh}(h]h ]h"]h$]h&]j{j|uh1hhjO hKhhj7 ubah}(h]h ]h"]h$]h&]uh1hhjO hKhhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1johj hKjhjlubjp)}(hX``rx_over_errors`` Receiver FIFO overflow event counter. 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. h](jv)}(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&]uh1juhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhK}hj ubj)}(hhh](h)}(h%Receiver FIFO overflow event counter.h]h%Receiver FIFO overflow event counter.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKlhj ubh)}(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.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKnhj ubh)}(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.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKrhj ubh)}(h4Part of aggregate "frame" errors in `/proc/net/dev`.h](h(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.hhKwhj ubh)}(hNThis statistics was historically used interchangeably with **rx_fifo_errors**.h](h;This statistics was historically used interchangeably with }(hj hhhNhNubj))}(h**rx_fifo_errors**h]hrx_fifo_errors}(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.hhKyhj ubh)}(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.}(hj, hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhK|hj ubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1johj hK}hjlubjp)}(h``rx_crc_errors`` Number of packets received with a CRC error. Part of aggregate "frame" errors in `/proc/net/dev`. For IEEE 802.3 devices this counter must be equivalent to: - 30.3.1.1.6 aFrameCheckSequenceErrors h](jv)}(h``rx_crc_errors``h]j)}(hjM h]h rx_crc_errors}(hjO hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjK ubah}(h]h ]h"]h$]h&]uh1juhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhjG 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 }(hjf hhhNhNubj)}(h`/proc/net/dev`h]h /proc/net/dev}(hjn hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjf ubh.}(hjf hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhjc ubh)}(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:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhjc ubh)}(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&]uh1hhjb hKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]j{j|uh1hhjb hKhj ubah}(h]h ]h"]h$]h&]uh1hhjb hKhjc ubeh}(h]h ]h"]h$]h&]uh1jhjG ubeh}(h]h ]h"]h$]h&]uh1johjb hKhjlubjp)}(h``rx_frame_errors`` Receiver frame alignment errors. Part of aggregate "frame" errors in `/proc/net/dev`. For IEEE 802.3 devices this counter should be equivalent to: - 30.3.1.1.7 aAlignmentErrors h](jv)}(h``rx_frame_errors``h]j)}(hj h]hrx_frame_errors}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1juhc/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 ubh)}(hhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1juhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhj6ubj)}(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 }(hjUhhhNhNubj)}(h`/proc/net/dev`h]h /proc/net/dev}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubh]. For IEEE 802.3 devices capable of half-duplex operation this counter must be equivalent to:}(hjUhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhjRubh)}(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.hhKhj}ubah}(h]h ]h"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&]j{j|uh1hhjhKhjvubah}(h]h ]h"]h$]h&]uh1hhjhKhjRubh)}(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.hhKhjRubeh}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1johjQhKhjlubjp)}(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`. For IEEE 802.3 devices this counter must be equivalent to: - 30.3.1.1.13 aCarrierSenseErrors h](jv)}(h``tx_carrier_errors``h]j)}(hjh]htx_carrier_errors}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1juhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhjubj)}(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 }(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.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&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]j{j|uh1hhjhKhj ubah}(h]h ]h"]h$]h&]uh1hhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1johjhKhjlubjp)}(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](jv)}(h``tx_fifo_errors``h]j)}(hjIh]htx_fifo_errors}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1juhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhjCubj)}(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 }(hjbhhhNhNubj)}(h`/proc/net/dev`h]h /proc/net/dev}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubh.}(hjbhhhNhNubeh}(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&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1johj^hKhjlubjp)}(h``tx_heartbeat_errors`` Number of Heartbeat / SQE Test errors for old half-duplex Ethernet. Part of aggregate "carrier" errors in `/proc/net/dev`. For IEEE 802.3 devices possibly equivalent to: - 30.3.2.1.4 aSQETestErrors h](jv)}(h``tx_heartbeat_errors``h]j)}(hjh]htx_heartbeat_errors}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1juhc/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 }(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.hhKhjubh)}(h.For IEEE 802.3 devices possibly equivalent to:h]h.For IEEE 802.3 devices possibly 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.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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1johjhKhjlubjp)}(hX``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`. For IEEE 802.3 devices this counter must be equivalent to: - 30.3.1.1.10 aLateCollisions h](jv)}(h``tx_window_errors``h]j)}(hjh]htx_window_errors}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1juhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhjubj)}(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 }(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.hhKhj1ubh)}(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:}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhj1ubh)}(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}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hKhjkubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]j{j|uh1hhj0hKhjdubah}(h]h ]h"]h$]h&]uh1hhj0hKhj1ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1johj0hKhjlubjp)}(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](jv)}(h``rx_compressed``h]j)}(hjh]h rx_compressed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1juhc/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&]uh1johjhKhjlubjp)}(h``tx_compressed`` Number of transmitted compressed packets. This counters is only meaningful for interfaces which support packet compression (e.g. CSLIP, PPP). h](jv)}(h``tx_compressed``h]j)}(hjh]h tx_compressed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1juhc/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&]uh1johjhKhjlubjp)}(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](jv)}(h``rx_nohandler``h]j)}(hjh]h rx_nohandler}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1juhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhjubj)}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1johj*hKhjlubjp)}(h^``rx_otherhost_dropped`` Number of packets dropped due to mismatch in destination MAC address.h](jv)}(h``rx_otherhost_dropped``h]j)}(hjOh]hrx_otherhost_dropped}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1juhc/var/lib/git/docbuild/linux/Documentation/networking/statistics:199: ./include/uapi/linux/if_link.hhKhjIubj)}(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.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhKhjeubah}(h]h ]h"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]uh1johjdhKhjlubeh}(h]h ]h"]h$]h&]uh1jjhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjohhhNhNubeh}(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)}(hjh]hstruct rtnl_link_stats64}(hjhhhNhNubah}(h]h ](j!j"c-typeeh"]h$]h&]uh1jhjubah}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh / }(hjhhhNhNubj)}(h `tx_error`h]htx_error}(hj0hhhNhNubah}(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 }(hjHhhhNhNubj)}(h`.ndo_get_stats64`h]h.ndo_get_stats64}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubh0 callback can not sleep because of accesses via }(hjHhhhNhNubj)}(h`/proc/net/dev`h]h /proc/net/dev}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubh. If driver may sleep when retrieving the statistics from the device it should do so periodically asynchronously and only return a recent copy from }(hjHhhhNhNubj)}(h`.ndo_get_stats64`h]h.ndo_get_stats64}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubhj. Ethtool interrupt coalescing interface allows setting the frequency of refreshing statistics, if needed.}(hjHhhhNhNubeh}(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)}(hjh]hethtool_fec_stats()}(hjhhhNhNubah}(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_handlerj9error_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}(jjjjjjjjjRjOethtoolNjjjljijjjjjjjjj+j(jdjajjj jjju nametypes}(jjjjjRj}jjljjjjj+jdjj juh}(jhjhjjjj[jOjjFjjjUjijjjjjjjjjj\jj(jajaj.jjojjjjjju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jGKsRparse_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.