• Amritha Nambiar's avatar
    i40e: Enable 'channel' mode in mqprio for TC configs · a9ce82f7
    Amritha Nambiar authored
    The i40e driver is modified to enable the new mqprio hardware
    offload mode and factor the TCs and queue configuration by
    creating channel VSIs. In this mode, the priority to traffic
    class mapping and the user specified queue ranges are used
    to configure the traffic classes by setting the mode option to
    'channel'.
    
    Example:
      map 0 0 0 0 1 2 2 3 queues 2@0 2@2 1@4 1@5\
      hw 1 mode channel
    
    qdisc mqprio 8038: root  tc 4 map 0 0 0 0 1 2 2 3 0 0 0 0 0 0 0 0
                 queues:(0:1) (2:3) (4:4) (5:5)
                 mode:channel
                 shaper:dcb
    
    The HW channels created are removed and all the queue configuration
    is set to default when the qdisc is detached from the root of the
    device.
    
    This patch also disables setting up channels via ethtool (ethtool -L)
    when the TCs are configured using mqprio scheduler.
    
    The patch also limits setting ethtool Rx flow hash indirection
    (ethtool -X eth0 equal N) to max queues configured via mqprio.
    The Rx flow hash indirection input through ethtool should be
    validated so that it is within in the queue range configured via
    tc/mqprio. The bound checking is achieved by reporting the current
    rss size to the kernel when queues are configured via mqprio.
    
    Example:
      map 0 0 0 1 0 2 3 0 queues 2@0 4@2 8@6 11@14\
      hw 1 mode channel
    
    Cannot set RX flow hash configuration: Invalid argument
    Signed-off-by: default avatarAmritha Nambiar <amritha.nambiar@intel.com>
    Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    a9ce82f7
i40e_main.c 365 KB