• Ivan Vecera's avatar
    be2net: Fix number of Rx queues used for flow hashing · 718f4a25
    Ivan Vecera authored
    Number of Rx queues used for flow hashing returned by the driver is
    incorrect and this bug prevents user to use the last Rx queue in
    indirection table.
    
    Let's say we have a NIC with 6 combined queues:
    
    [root@sm-03 ~]# ethtool -l enp4s0f0
    Channel parameters for enp4s0f0:
    Pre-set maximums:
    RX:             5
    TX:             5
    Other:          0
    Combined:       6
    Current hardware settings:
    RX:             0
    TX:             0
    Other:          0
    Combined:       6
    
    Default indirection table maps all (6) queues equally but the driver
    reports only 5 rings available.
    
    [root@sm-03 ~]# ethtool -x enp4s0f0
    RX flow hash indirection table for enp4s0f0 with 5 RX ring(s):
        0:      0     1     2     3     4     5     0     1
        8:      2     3     4     5     0     1     2     3
       16:      4     5     0     1     2     3     4     5
       24:      0     1     2     3     4     5     0     1
    ...
    
    Now change indirection table somehow:
    
    [root@sm-03 ~]# ethtool -X enp4s0f0 weight 1 1
    [root@sm-03 ~]# ethtool -x enp4s0f0
    RX flow hash indirection table for enp4s0f0 with 6 RX ring(s):
        0:      0     0     0     0     0     0     0     0
    ...
       64:      1     1     1     1     1     1     1     1
    ...
    
    Now it is not possible to change mapping back to equal (default) state:
    
    [root@sm-03 ~]# ethtool -X enp4s0f0 equal 6
    Cannot set RX flow hash configuration: Invalid argument
    
    Fixes: 594ad54a ("be2net: Add support for setting and getting rx flow hash options")
    Reported-by: default avatarTianhao <tizhao@redhat.com>
    Signed-off-by: default avatarIvan Vecera <ivecera@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    718f4a25
be_ethtool.c 38.7 KB