avf: fix queue enable issue
It is actually a bitmap.... Change-Id: Ie359e085df3f371512f773600f8d7460b2232b3e Signed-off-by: Damjan Marion <damjan.marion@gmail.com>
This commit is contained in:
Damjan Marion
committed by
Damjan Marion
parent
b2962715e6
commit
9124874e2e
@ -653,14 +653,19 @@ clib_error_t *
|
|||||||
avf_op_enable_queues (vlib_main_t * vm, avf_device_t * ad, u32 rx, u32 tx)
|
avf_op_enable_queues (vlib_main_t * vm, avf_device_t * ad, u32 rx, u32 tx)
|
||||||
{
|
{
|
||||||
virtchnl_queue_select_t qs = { 0 };
|
virtchnl_queue_select_t qs = { 0 };
|
||||||
int i;
|
int i = 0;
|
||||||
qs.vsi_id = ad->vsi_id;
|
qs.vsi_id = ad->vsi_id;
|
||||||
qs.rx_queues = rx;
|
qs.rx_queues = rx;
|
||||||
qs.tx_queues = tx;
|
qs.tx_queues = tx;
|
||||||
for (i = 0; i < ad->n_rx_queues; i++)
|
while (rx)
|
||||||
{
|
{
|
||||||
avf_rxq_t *rxq = vec_elt_at_index (ad->rxqs, i);
|
if (rx & (1 << i))
|
||||||
avf_reg_write (ad, AVF_QRX_TAIL (i), rxq->n_enqueued);
|
{
|
||||||
|
avf_rxq_t *rxq = vec_elt_at_index (ad->rxqs, i);
|
||||||
|
avf_reg_write (ad, AVF_QRX_TAIL (i), rxq->n_enqueued);
|
||||||
|
rx &= ~(1 << i);
|
||||||
|
}
|
||||||
|
i++;
|
||||||
}
|
}
|
||||||
return avf_send_to_pf (vm, ad, VIRTCHNL_OP_ENABLE_QUEUES, &qs,
|
return avf_send_to_pf (vm, ad, VIRTCHNL_OP_ENABLE_QUEUES, &qs,
|
||||||
sizeof (virtchnl_queue_select_t), 0, 0);
|
sizeof (virtchnl_queue_select_t), 0, 0);
|
||||||
@ -850,10 +855,8 @@ avf_device_init (vlib_main_t * vm, avf_main_t * am, avf_device_t * ad,
|
|||||||
if ((error = avf_op_add_eth_addr (vm, ad, 1, ad->hwaddr)))
|
if ((error = avf_op_add_eth_addr (vm, ad, 1, ad->hwaddr)))
|
||||||
return error;
|
return error;
|
||||||
|
|
||||||
if ((error = avf_op_enable_queues (vm, ad, ad->n_rx_queues, 0)))
|
if ((error = avf_op_enable_queues (vm, ad, pow2_mask (ad->n_rx_queues),
|
||||||
return error;
|
pow2_mask (ad->n_tx_queues))))
|
||||||
|
|
||||||
if ((error = avf_op_enable_queues (vm, ad, 0, ad->n_tx_queues)))
|
|
||||||
return error;
|
return error;
|
||||||
|
|
||||||
ad->flags |= AVF_DEVICE_F_INITIALIZED;
|
ad->flags |= AVF_DEVICE_F_INITIALIZED;
|
||||||
|
Reference in New Issue
Block a user