X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fi40e%2Fi40e_pf.c;h=91be45027ac53165419c11cd45d8fefc2c26af8a;hb=a1cdb4f884730204b89feec394de801badf47847;hp=d6e83e3403b45d0bc73194eeb10bf5b96f614c00;hpb=cc0ed2f849e7ec14e0da69f716ce6ad784a1725a;p=dpdk.git diff --git a/drivers/net/i40e/i40e_pf.c b/drivers/net/i40e/i40e_pf.c index d6e83e3403..91be45027a 100644 --- a/drivers/net/i40e/i40e_pf.c +++ b/drivers/net/i40e/i40e_pf.c @@ -1250,11 +1250,12 @@ i40e_pf_host_process_cmd_request_queues(struct i40e_pf_vf *vf, uint8_t *msg) pf = vf->pf; - if (req_pairs <= 0) { - PMD_DRV_LOG(ERR, - "VF %d tried to request %d queues. Ignoring.\n", - vf->vf_idx, - I40E_MAX_QP_NUM_PER_VF); + if (!rte_is_power_of_2(req_pairs)) + req_pairs = i40e_align_floor(req_pairs) << 1; + + if (req_pairs == 0) { + PMD_DRV_LOG(ERR, "VF %d tried to request 0 queues. Ignoring.\n", + vf->vf_idx); } else if (req_pairs > I40E_MAX_QP_NUM_PER_VF) { PMD_DRV_LOG(ERR, "VF %d tried to request more than %d queues.\n", @@ -1262,12 +1263,14 @@ i40e_pf_host_process_cmd_request_queues(struct i40e_pf_vf *vf, uint8_t *msg) I40E_MAX_QP_NUM_PER_VF); vfres->num_queue_pairs = I40E_MAX_QP_NUM_PER_VF; } else if (req_pairs > cur_pairs + pf->qp_pool.num_free) { - PMD_DRV_LOG(ERR, - "VF %d requested %d more queues, but noly %d left\n", - vf->vf_idx, - req_pairs - cur_pairs, - pf->qp_pool.num_free); - vfres->num_queue_pairs = pf->qp_pool.num_free + cur_pairs; + PMD_DRV_LOG(ERR, "VF %d requested %d queues (rounded to %d) " + "but only %d available\n", + vf->vf_idx, + vfres->num_queue_pairs, + req_pairs, + cur_pairs + pf->qp_pool.num_free); + vfres->num_queue_pairs = i40e_align_floor(pf->qp_pool.num_free + + cur_pairs); } else { i40e_vc_notify_vf_reset(vf); vf->vsi->nb_qps = req_pairs;