On Mon, Jun 30, 2014 at 9:56 AM, Daniele Di Proietto <ddiproie...@vmware.com> wrote: > I was happier with the previous approach, i.e. setting the timestamp on the > first queued packet. > Maybe there are issues I don’t see, can you elaborate a little? >
tsc is set conditionally when count is one, but the count might not set to one in a loop due to batched packets. So I think this fixes a bug. I pushed this patch. But I think we can further improve this flush time-stamp. > Thanks, > > Daniele > > On Jun 26, 2014, at 6:16 PM, Ryan Wilson <wr...@nicira.com> wrote: > >> The current timestamp should be set every time the queue is flushed. >> Thus, if DRAIN_TSC timer cycles have passed since the last timestamp, >> the send queue should be flushed again. >> >> Signed-off-by: Ryan Wilson <wr...@nicira.com> >> --- >> lib/netdev-dpdk.c | 8 ++------ >> 1 file changed, 2 insertions(+), 6 deletions(-) >> >> diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c >> index 084e8cd..6e1d293 100644 >> --- a/lib/netdev-dpdk.c >> +++ b/lib/netdev-dpdk.c >> @@ -581,6 +581,7 @@ dpdk_queue_flush__(struct netdev_dpdk *dev, int qid) >> (txq->count - nb_tx)); >> } >> txq->count = 0; >> + txq->tsc = rte_get_timer_cycles(); >> } >> >> static void >> @@ -626,7 +627,6 @@ dpdk_queue_pkts(struct netdev_dpdk *dev, int qid, >> { >> struct dpdk_tx_queue *txq = &dev->tx_q[qid]; >> uint64_t diff_tsc; >> - uint64_t cur_tsc; >> >> int i = 0; >> >> @@ -644,11 +644,7 @@ dpdk_queue_pkts(struct netdev_dpdk *dev, int qid, >> if (txq->count == MAX_TX_QUEUE_LEN) { >> dpdk_queue_flush__(dev, qid); >> } >> - cur_tsc = rte_get_timer_cycles(); >> - if (txq->count == 1) { >> - txq->tsc = cur_tsc; >> - } >> - diff_tsc = cur_tsc - txq->tsc; >> + diff_tsc = rte_get_timer_cycles() - txq->tsc; >> if (diff_tsc >= DRAIN_TSC) { >> dpdk_queue_flush__(dev, qid); >> } >> -- >> 1.7.9.5 >> >> _______________________________________________ >> dev mailing list >> dev@openvswitch.org >> https://urldefense.proofpoint.com/v1/url?u=http://openvswitch.org/mailman/listinfo/dev&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=MV9BdLjtFIdhBDBaw5z%2BU6SSA2gAfY4L%2F1HCy3VjlKU%3D%0A&m=CtFeOvayf%2FFdGR8E3K%2Bq8k57QZOfY3azsWO1qjDWcTE%3D%0A&s=253d27d2e4572741659f572d3ed31b1e8b5bd9fad9bbc54cab525d6df48ed413 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev