• Jarod Wilson's avatar
    net/core: fix for_each_netdev_feature · 5ba3f7d6
    Jarod Wilson authored
    As pointed out by Nikolay and further explained by Geert, the initial
    for_each_netdev_feature macro was broken, as feature would get set outside
    of the block of code it was intended to run in, thus only ever working for
    the first feature bit in the mask. While less pretty this way, this is
    tested and confirmed functional with multiple feature bits set in
    NETIF_F_UPPER_DISABLES.
    
    [root@dell-per730-01 ~]# ethtool -K bond0 lro off
    ...
    [  242.761394] bond0: Disabling feature 0x0000000000008000 on lower dev p5p2.
    [  243.552178] bnx2x 0000:06:00.1 p5p2: using MSI-X  IRQs: sp 74  fp[0] 76 ... fp[7] 83
    [  244.353978] bond0: Disabling feature 0x0000000000008000 on lower dev p5p1.
    [  245.147420] bnx2x 0000:06:00.0 p5p1: using MSI-X  IRQs: sp 62  fp[0] 64 ... fp[7] 71
    
    [root@dell-per730-01 ~]# ethtool -K bond0 gro off
    ...
    [  251.925645] bond0: Disabling feature 0x0000000000004000 on lower dev p5p2.
    [  252.713693] bnx2x 0000:06:00.1 p5p2: using MSI-X  IRQs: sp 74  fp[0] 76 ... fp[7] 83
    [  253.499085] bond0: Disabling feature 0x0000000000004000 on lower dev p5p1.
    [  254.290922] bnx2x 0000:06:00.0 p5p1: using MSI-X  IRQs: sp 62  fp[0] 64 ... fp[7] 71
    
    Fixes: fd867d51 ("net/core: generic support for disabling netdev features down stack")
    CC: "David S. Miller" <davem@davemloft.net>
    CC: Eric Dumazet <edumazet@google.com>
    CC: Jay Vosburgh <j.vosburgh@gmail.com>
    CC: Veaceslav Falico <vfalico@gmail.com>
    CC: Andy Gospodarek <gospo@cumulusnetworks.com>
    CC: Jiri Pirko <jiri@resnulli.us>
    CC: Nikolay Aleksandrov <razor@blackwall.org>
    CC: Michal Kubecek <mkubecek@suse.cz>
    CC: Alexander Duyck <alexander.duyck@gmail.com>
    CC: Geert Uytterhoeven <geert@linux-m68k.org>
    CC: netdev@vger.kernel.org
    Signed-off-by: default avatarJarod Wilson <jarod@redhat.com>
    Acked-by: default avatarNikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    5ba3f7d6
dev.c 194 KB