batman-adv: Revert "disable ethtool link speed detection when auto negotiation off"
The commit 8c46fcd783
("batman-adv: disable ethtool link speed detection
when auto negotiation off") disabled the usage of ethtool's link_ksetting
when auto negotation was enabled due to invalid values when used with
tun/tap virtual net_devices. According to the patch, automatic measurements
should be used for these kind of interfaces.
But there are major flaws with this argumentation:
* automatic measurements are not implemented
* auto negotiation has nothing to do with the validity of the retrieved
values
The first point has to be fixed by a longer patch series. The "validity"
part of the second point must be addressed in the same patch series by
dropping the usage of ethtool's link_ksetting (thus always doing automatic
measurements over ethernet).
Drop the patch again to have more default values for various net_device
types/configurations. The user can still overwrite them using the
batadv_hardif's BATADV_ATTR_THROUGHPUT_OVERRIDE.
Reported-by: Matthias Schiffer <mschiffer@universe-factory.net>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
This commit is contained in:
parent
cf78bb0bbc
commit
9ad346c905
|
@ -127,20 +127,7 @@ static u32 batadv_v_elp_get_throughput(struct batadv_hardif_neigh_node *neigh)
|
|||
rtnl_lock();
|
||||
ret = __ethtool_get_link_ksettings(hard_iface->net_dev, &link_settings);
|
||||
rtnl_unlock();
|
||||
|
||||
/* Virtual interface drivers such as tun / tap interfaces, VLAN, etc
|
||||
* tend to initialize the interface throughput with some value for the
|
||||
* sake of having a throughput number to export via ethtool. This
|
||||
* exported throughput leaves batman-adv to conclude the interface
|
||||
* throughput is genuine (reflecting reality), thus no measurements
|
||||
* are necessary.
|
||||
*
|
||||
* Based on the observation that those interface types also tend to set
|
||||
* the link auto-negotiation to 'off', batman-adv shall check this
|
||||
* setting to differentiate between genuine link throughput information
|
||||
* and placeholders installed by virtual interfaces.
|
||||
*/
|
||||
if (ret == 0 && link_settings.base.autoneg == AUTONEG_ENABLE) {
|
||||
if (ret == 0) {
|
||||
/* link characteristics might change over time */
|
||||
if (link_settings.base.duplex == DUPLEX_FULL)
|
||||
hard_iface->bat_v.flags |= BATADV_FULL_DUPLEX;
|
||||
|
|
Loading…
Reference in New Issue