[Linux] net_if_stats()
returns an incorrect speed value for 100GbE network cards
#2096
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
net_if_stats()
returns incorrect interface speed for 100GbE network cards #2095Description
Properly handle the speed variable from
ethtool.h
to support interface speed that are greater than UINT16_MAX. Since ethtool returns the interface speed as two separateuint16_t
values, in order to determine the actual interface speed, you must combine and bit-shift the two values.Testing
All testing done on Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-100-generic x86_64) with Python 3.8.10.
System with 100GbE network interface up (
eth2
). Confirmed that interfaces that are down show a speed of 0, and the 100GbE interface that is up properly returns 100,000 Mb/s.System with 10GbE network interface up (
eth1
)