i40e: adjust the number of queues for RSS
authorHelin Zhang <helin.zhang@intel.com>
Tue, 3 Nov 2015 15:40:27 +0000 (23:40 +0800)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Tue, 3 Nov 2015 21:58:45 +0000 (22:58 +0100)
It adjusts the number of queues for RSS from power of 2 to any as
long as it does not exceeds the hardware allowed.

Signed-off-by: Helin Zhang <helin.zhang@intel.com>
drivers/net/i40e/i40e_ethdev.c
drivers/net/i40e/i40e_ethdev_vf.c

index 144e566..8430760 100644 (file)
@@ -5728,12 +5728,12 @@ i40e_pf_config_rss(struct i40e_pf *pf)
         * If both VMDQ and RSS enabled, not all of PF queues are configured.
         * It's necessary to calulate the actual PF queues that are configured.
         */
-       if (pf->dev_data->dev_conf.rxmode.mq_mode & ETH_MQ_RX_VMDQ_FLAG) {
+       if (pf->dev_data->dev_conf.rxmode.mq_mode & ETH_MQ_RX_VMDQ_FLAG)
                num = i40e_pf_calc_configured_queues_num(pf);
-               num = i40e_align_floor(num);
-       } else
-               num = i40e_align_floor(pf->dev_data->nb_rx_queues);
+       else
+               num = pf->dev_data->nb_rx_queues;
 
+       num = RTE_MIN(num, I40E_MAX_Q_PER_TC);
        PMD_INIT_LOG(INFO, "Max of contiguous %u PF queues are configured",
                        num);
 
index a6f4373..18ec46e 100644 (file)
@@ -2171,7 +2171,7 @@ i40evf_config_rss(struct i40e_vf *vf)
                return 0;
        }
 
-       num = i40e_align_floor(vf->dev_data->nb_rx_queues);
+       num = RTE_MIN(vf->dev_data->nb_rx_queues, I40E_MAX_QP_NUM_PER_VF);
        /* Fill out the look up table */
        for (i = 0, j = 0; i < nb_q; i++, j++) {
                if (j >= num)