lkml.org 
[lkml]   [2020]   [Jun]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.4 051/175] batman-adv: Revert "disable ethtool link speed detection when auto negotiation off"
    Date
    From: Sven Eckelmann <sven@narfation.org>

    [ Upstream commit 9ad346c90509ebd983f60da7d082f261ad329507 ]

    The commit 8c46fcd78308 ("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>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/batman-adv/bat_v_elp.c | 15 +--------------
    1 file changed, 1 insertion(+), 14 deletions(-)

    diff --git a/net/batman-adv/bat_v_elp.c b/net/batman-adv/bat_v_elp.c
    index 2614a9caee00..a39af0eefad3 100644
    --- a/net/batman-adv/bat_v_elp.c
    +++ b/net/batman-adv/bat_v_elp.c
    @@ -120,20 +120,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;
    --
    2.25.1
    \
     
     \ /
      Last update: 2020-06-09 01:52    [W:4.021 / U:0.868 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site