Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
vmxnet3: multiple TX queues support
[vpp.git]
/
src
/
plugins
/
vmxnet3
/
output.c
diff --git
a/src/plugins/vmxnet3/output.c
b/src/plugins/vmxnet3/output.c
index
2a6418d
..
5c48549
100644
(file)
--- a/
src/plugins/vmxnet3/output.c
+++ b/
src/plugins/vmxnet3/output.c
@@
-108,8
+108,7
@@
VNET_DEVICE_CLASS_TX_FN (vmxnet3_device_class) (vlib_main_t * vm,
u16 space_left;
u16 n_left = frame->n_vectors;
vmxnet3_txq_t *txq;
u16 space_left;
u16 n_left = frame->n_vectors;
vmxnet3_txq_t *txq;
- u32 thread_index = vm->thread_index;
- u16 qid = thread_index, produce;
+ u16 qid = vm->thread_index % vd->num_tx_queues, produce;
if (PREDICT_FALSE (!(vd->flags & VMXNET3_DEVICE_F_LINK_UP)))
{
if (PREDICT_FALSE (!(vd->flags & VMXNET3_DEVICE_F_LINK_UP)))
{
@@
-119,7
+118,7
@@
VNET_DEVICE_CLASS_TX_FN (vmxnet3_device_class) (vlib_main_t * vm,
return (0);
}
return (0);
}
- txq = vec_elt_at_index (vd->txqs, qid
% vd->num_tx_queues
);
+ txq = vec_elt_at_index (vd->txqs, qid);
clib_spinlock_lock_if_init (&txq->lock);
vmxnet3_txq_release (vm, vd, txq);
clib_spinlock_lock_if_init (&txq->lock);
vmxnet3_txq_release (vm, vd, txq);
@@
-202,8
+201,7
@@
VNET_DEVICE_CLASS_TX_FN (vmxnet3_device_class) (vlib_main_t * vm,
}
if (PREDICT_TRUE (produce != txq->tx_ring.produce))
}
if (PREDICT_TRUE (produce != txq->tx_ring.produce))
- vmxnet3_reg_write_inline (vd, 0, VMXNET3_REG_TXPROD,
- txq->tx_ring.produce);
+ vmxnet3_reg_write_inline (vd, 0, txq->reg_txprod, txq->tx_ring.produce);
clib_spinlock_unlock_if_init (&txq->lock);
clib_spinlock_unlock_if_init (&txq->lock);