I'll add the inline to both dpdk_queue_flush() and dpdk_queue_flush__() and repost this patch.
Cheers, Ryan On 6/30/14 9:52 AM, "Daniele Di Proietto" <ddiproie...@vmware.com> wrote: >I don¹t know if we want to keep the inline attribute here (like Pravin >said for commit 4/5). > >Otherwise LGTM > >Daniele > >On Jun 26, 2014, at 6:16 PM, Ryan Wilson <wr...@nicira.com> wrote: > >> This patch refactors dpdk_queue_flush() to reuse code in >> dpdk_queue_pkts(). >> >> Signed-off-by: Ryan Wilson <wr...@nicira.com> >> --- >> lib/netdev-dpdk.c | 37 ++++++++++++++++--------------------- >> 1 file changed, 16 insertions(+), 21 deletions(-) >> >> diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c >> index 72add87..084e8cd 100644 >> --- a/lib/netdev-dpdk.c >> +++ b/lib/netdev-dpdk.c >> @@ -567,16 +567,12 @@ netdev_dpdk_rxq_dealloc(struct netdev_rxq *rxq_) >> rte_free(rx); >> } >> >> -inline static void >> -dpdk_queue_flush(struct netdev_dpdk *dev, int qid) >> +static void >> +dpdk_queue_flush__(struct netdev_dpdk *dev, int qid) >> { >> struct dpdk_tx_queue *txq = &dev->tx_q[qid]; >> uint32_t nb_tx; >> >> - if (txq->count == 0) { >> - return; >> - } >> - rte_spinlock_lock(&txq->tx_lock); >> nb_tx = rte_eth_tx_burst(dev->port_id, qid, txq->burst_pkts, >>txq->count); >> if (nb_tx != txq->count) { >> /* free buffers if we couldn't transmit packets */ >> @@ -585,6 +581,18 @@ dpdk_queue_flush(struct netdev_dpdk *dev, int qid) >> (txq->count - nb_tx)); >> } >> txq->count = 0; >> +} >> + >> +static void >> +dpdk_queue_flush(struct netdev_dpdk *dev, int qid) >> +{ >> + struct dpdk_tx_queue *txq = &dev->tx_q[qid]; >> + >> + if (txq->count == 0) { >> + return; >> + } >> + rte_spinlock_lock(&txq->tx_lock); >> + dpdk_queue_flush__(dev, qid); >> rte_spinlock_unlock(&txq->tx_lock); >> } >> >> @@ -619,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; >> - uint32_t nb_tx; >> >> int i = 0; >> >> @@ -635,7 +642,7 @@ dpdk_queue_pkts(struct netdev_dpdk *dev, int qid, >> i += tocopy; >> >> if (txq->count == MAX_TX_QUEUE_LEN) { >> - goto flush; >> + dpdk_queue_flush__(dev, qid); >> } >> cur_tsc = rte_get_timer_cycles(); >> if (txq->count == 1) { >> @@ -643,20 +650,8 @@ dpdk_queue_pkts(struct netdev_dpdk *dev, int qid, >> } >> diff_tsc = cur_tsc - txq->tsc; >> if (diff_tsc >= DRAIN_TSC) { >> - goto flush; >> - } >> - continue; >> - >> - flush: >> - nb_tx = rte_eth_tx_burst(dev->port_id, qid, txq->burst_pkts, >> - txq->count); >> - if (nb_tx != txq->count) { >> - /* free buffers if we couldn't transmit packets */ >> - rte_mempool_put_bulk(dev->dpdk_mp->mp, >> - (void **) &txq->burst_pkts[nb_tx], >> - (txq->count - nb_tx)); >> + dpdk_queue_flush__(dev, qid); >> } >> - txq->count = 0; >> } >> rte_spinlock_unlock(&txq->tx_lock); >> } >> -- >> 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%2 >>BU6SSA2gAfY4L%2F1HCy3VjlKU%3D%0A&m=k8OMewN%2BlH4t1D8dKSpSTmTA9pWqQAFUXVuh >>QL%2F1MZE%3D%0A&s=700107a65eb0df45bd5ddb456ab1a44352086fd48b96a6ef302a457 >>fcab16e82 > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev