net/i40e: fix queue number error in queue region
authorWei Zhao <wei.zhao1@intel.com>
Tue, 24 Oct 2017 08:45:10 +0000 (16:45 +0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Thu, 26 Oct 2017 00:33:01 +0000 (02:33 +0200)
when VSI is enabled with smaller number of queues, for example 1 or 6,
it will cause error.

64 is the max number of queues that can be used for RSS, but VSI might
be created with only few queues.

Fixes: 7cbecc2f742 ("net/i40e: support queue region set and flush")

Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
drivers/net/i40e/rte_pmd_i40e.c

index 37da5cd..aeb92af 100644 (file)
@@ -2825,6 +2825,7 @@ i40e_flush_queue_region_all_conf(struct rte_eth_dev *dev,
 {
        int32_t ret = -EINVAL;
        struct i40e_queue_regions *info = &pf->queue_region;
+       struct i40e_vsi *main_vsi = pf->main_vsi;
 
        if (on) {
                i40e_queue_region_pf_flowtype_conf(hw, pf);
@@ -2845,7 +2846,7 @@ i40e_flush_queue_region_all_conf(struct rte_eth_dev *dev,
        }
 
        info->queue_region_number = 1;
-       info->region[0].queue_num = 64;
+       info->region[0].queue_num = main_vsi->nb_used_qps;
        info->region[0].queue_start_index = 0;
 
        ret = i40e_vsi_update_queue_region_mapping(hw, pf);