[ovs-dev] [PATCH v2 2/5] netdev-dpdk: Set current timestamp when flushing TX queue.

Pravin Shelar pshelar at nicira.com
Mon Jun 30 18:08:59 UTC 2014


On Mon, Jun 30, 2014 at 9:56 AM, Daniele Di Proietto
<ddiproietto at 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 <wryan at 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 <wryan at 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 at 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 at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev



More information about the dev mailing list