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%2BU6SSA2gAfY4L%2F1HCy3VjlKU%3D%0A&m=k8OMewN%2BlH4t1D8dKSpSTmTA9pWqQAFUXVuhQL%2F1MZE%3D%0A&s=700107a65eb0df45bd5ddb456ab1a44352086fd48b96a6ef302a457fcab16e82

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to