On 17/01/2019 07:26, Yan, Zhirun wrote: > > >> -----Original Message----- >> From: Kevin Traynor [mailto:ktray...@redhat.com] >> Sent: Wednesday, January 16, 2019 1:34 AM >> To: Yan, Zhirun <zhirun....@intel.com>; dev@dpdk.org; Zhang, Qi Z >> <qi.z.zh...@intel.com> >> Subject: Re: [dpdk-dev] [PATCH v1] net/i40e: support request any number of >> queues >> >> On 01/15/2019 02:57 PM, Zhirun Yan wrote: >>> Before this patch, VF must request a specific queues(1/2/4/8/16) with >>> DPDK PF. This patch align the number of requested queues to next power >>> of 2. So VF can request any number queues from 1 to 16. >>> >>> Signed-off-by: Zhirun Yan <zhirun....@intel.com> >>> --- >>> drivers/net/i40e/i40e_pf.c | 5 ++++- >>> 1 file changed, 4 insertions(+), 1 deletion(-) >>> >>> diff --git a/drivers/net/i40e/i40e_pf.c b/drivers/net/i40e/i40e_pf.c >>> index 092e0d3e9..d110dffb7 100644 >>> --- a/drivers/net/i40e/i40e_pf.c >>> +++ b/drivers/net/i40e/i40e_pf.c >>> @@ -1271,7 +1271,10 @@ >> i40e_pf_host_process_cmd_request_queues(struct i40e_pf_vf *vf, uint8_t >> *msg) >>> } else { >>> i40e_vc_notify_vf_reset(vf); >>> vf->vsi->nb_qps = req_pairs; >>> - pf->vf_nb_qps = req_pairs; >>> + if (rte_is_power_of_2(req_pairs)) >>> + pf->vf_nb_qps = req_pairs; >>> + else >>> + pf->vf_nb_qps = i40e_align_floor(req_pairs) << 1; >> >> Shouldn't you do this before you validate against the number of free queue >> pairs? or it is somehow handled > > Before PF alloc queue to VF, PF will check the queue number in > i40e_res_pool_alloc(). > Suppose there are 15 queues left in PF, this part will check 12 as a valid > value if request 12 queues, > But PF will refuse to alloc 16 queue. >
Hello. In that scenario the vsi is reset and there is a failed setup, whereas it could be caught here and max rounded value sent back to vf. I will send a patch to show what I mean (compile tested only). Please take a look. >> >>> i40e_pf_host_process_cmd_reset_vf(vf); >>> >>> return 0; >>> >