Hi Jakub,
        Appreciate if you could review this series and provide any comments you 
might have.

Thank you,
Honnappa

> -----Original Message-----
> From: Honnappa Nagarahalli <[email protected]>
> Sent: Monday, September 28, 2020 2:03 PM
> To: [email protected]; Honnappa Nagarahalli <[email protected]>;
> Phil Yang <[email protected]>; [email protected]; [email protected]
> Cc: nd <[email protected]>; [email protected]
> Subject: [PATCH v2 1/8] net/memif: do not update local copy of tail in tx
> function
> 
> In the case of S2M queues, the receiver synchronizes with the sender (i.e.
> informs of the packets it has received) using ring->tail.
> Hence, the sender does not need to update last_tail.
> 
> In the case of M2S queues, the receiver uses last_tail to keep track of the
> descriptors it has received. The sender is not required to update the 
> last_tail.
> Updating the last_tail makes it a shared variable between the transmitter and
> receiver affecting the performance.
> 
> Fixes: 09c7e63a71f9 ("net/memif: introduce memory interface PMD")
> Cc: [email protected]
> Cc: [email protected]
> 
> Signed-off-by: Honnappa Nagarahalli <[email protected]>
> Reviewed-by: Phil Yang <[email protected]>
> Reviewed-by: Ruifeng Wang <[email protected]>
> ---
>  drivers/net/memif/rte_eth_memif.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/net/memif/rte_eth_memif.c
> b/drivers/net/memif/rte_eth_memif.c
> index a19c0f3e6..130099f2e 100644
> --- a/drivers/net/memif/rte_eth_memif.c
> +++ b/drivers/net/memif/rte_eth_memif.c
> @@ -580,12 +580,10 @@ eth_memif_tx(void *queue, struct rte_mbuf **bufs,
> uint16_t nb_pkts)
>       ring_size = 1 << mq->log2_ring_size;
>       mask = ring_size - 1;
> 
> -     n_free = __atomic_load_n(&ring->tail, __ATOMIC_ACQUIRE) - mq-
> >last_tail;
> -     mq->last_tail += n_free;
> -
>       if (type == MEMIF_RING_S2M) {
>               slot = __atomic_load_n(&ring->head, __ATOMIC_ACQUIRE);
> -             n_free = ring_size - slot + mq->last_tail;
> +             n_free = ring_size - slot +
> +                             __atomic_load_n(&ring->tail,
> __ATOMIC_ACQUIRE);
>       } else {
>               slot = __atomic_load_n(&ring->tail, __ATOMIC_ACQUIRE);
>               n_free = __atomic_load_n(&ring->head, __ATOMIC_ACQUIRE)
> - slot;
> --
> 2.17.1

  • Re: [dpdk-dev] [... Honnappa Nagarahalli

Reply via email to