• Przemyslaw Patynowski's avatar
    iavf: Fix 'tc qdisc show' listing too many queues · 93cb804e
    Przemyslaw Patynowski authored
    Fix tc qdisc show dev <ethX> root displaying too many fq_codel qdiscs.
    tc_modify_qdisc, which is caller of ndo_setup_tc, expects driver to call
    netif_set_real_num_tx_queues, which prepares qdiscs.
    Without this patch, fq_codel qdiscs would not be adjusted to number of
    queues on VF.
    e.g.:
    tc qdisc show dev <ethX>
    qdisc mq 0: root
    qdisc fq_codel 0: parent :4 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
    qdisc fq_codel 0: parent :3 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
    qdisc fq_codel 0: parent :2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
    qdisc fq_codel 0: parent :1 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
    tc qdisc add dev <ethX> root mqprio num_tc 2 map 1 0 0 0 0 0 0 0 queues 1@0 1@1 hw 1 mode channel shaper bw_rlimit max_rate 5000Mbit 150Mbit
    tc qdisc show dev <ethX>
    qdisc mqprio 8003: root tc 2 map 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
                 queues:(0:0) (1:1)
                 mode:channel
                 shaper:bw_rlimit   max_rate:5Gbit 150Mbit
    qdisc fq_codel 0: parent 8003:4 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
    qdisc fq_codel 0: parent 8003:3 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
    qdisc fq_codel 0: parent 8003:2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
    qdisc fq_codel 0: parent 8003:1 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
    
    While after fix:
    tc qdisc add dev <ethX> root mqprio num_tc 2 map 1 0 0 0 0 0 0 0 queues 1@0 1@1 hw 1 mode channel shaper bw_rlimit max_rate 5000Mbit 150Mbit
    tc qdisc show dev <ethX> #should show 2, shows 4
    qdisc mqprio 8004: root tc 2 map 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
                 queues:(0:0) (1:1)
                 mode:channel
                 shaper:bw_rlimit   max_rate:5Gbit 150Mbit
    qdisc fq_codel 0: parent 8004:2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
    qdisc fq_codel 0: parent 8004:1 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
    
    Fixes: d5b33d02 ("i40evf: add ndo_setup_tc callback to i40evf")
    Signed-off-by: default avatarPrzemyslaw Patynowski <przemyslawx.patynowski@intel.com>
    Co-developed-by: default avatarGrzegorz Szczurek <grzegorzx.szczurek@intel.com>
    Signed-off-by: default avatarGrzegorz Szczurek <grzegorzx.szczurek@intel.com>
    Co-developed-by: default avatarKiran Patil <kiran.patil@intel.com>
    Signed-off-by: default avatarKiran Patil <kiran.patil@intel.com>
    Signed-off-by: default avatarJedrzej Jagielski <jedrzej.jagielski@intel.com>
    Tested-by: default avatarBharathi Sreenivas <bharathi.sreenivas@intel.com>
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    93cb804e
iavf_main.c 138 KB