DPDK patches and discussions
 help / color / mirror / Atom feed
From: Jack Min <jackmin@nvidia.com>
To: Stephen Hemminger <stephen@networkplumber.org>,
	Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>, Matan Azrad <matan@nvidia.com>,
	"viacheslavo@nvidia.com" <viacheslavo@nvidia.com>,
	Tyler Retzlaff <roretzla@linux.microsoft.com>,
	Wathsala Wathawana Vithanage <wathsala.vithanage@arm.com>,
	nd <nd@arm.com>
Subject: Re: MLX5 PMD access ring library private data
Date: Fri, 18 Aug 2023 10:32:10 +0800	[thread overview]
Message-ID: <f46dd846-3a30-4f0f-8513-fc843baeeef9@nvidia.com> (raw)
In-Reply-To: <20230817070658.45576e6d@hermes.local>

On 2023/8/17 22:06, Stephen Hemminger wrote:
> On Thu, 17 Aug 2023 05:06:20 +0000
> Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com> wrote:
>
>> Hi Matan, Viacheslav,
>> 	Tyler pointed out that the function __mlx5_hws_cnt_pool_enqueue_revert is accessing the ring private structure members (prod.head and prod.tail) directly. Even though ' struct rte_ring' is a public structure (mainly because the library provides inline functions), the structure members are considered private to the ring library. So, this needs to be corrected.
>>
>> It looks like the function __mlx5_hws_cnt_pool_enqueue_revert is trying to revert things that were enqueued. It is not clear to me why this functionality is required. Can you provide the use case for this? We can discuss possible solutions.
> How can reverting be thread safe? Consumer could have already looked at them?

Hey,

In our case, this ring is SC/SP, only accessed by one thread 
(enqueue/dequeue/revert).

The scenario we have "revert" is:

  We use ring to manager our HW objects (counter in this case) and for 
each core (thread) has "cache" (a SC/SP ring) for sake of performance.

1. Get objects from "cache" firstly, if cache is empty, we fetch a bulk 
of free objects from global ring into cache.

2. Put (free) objects also into "cache" firstly, if cache is full, we 
flush a bulk of objects into global ring in order to make some rooms in 
cache.

However, this HW object cannot be immediately reused after free. It 
needs time to be reset and then can be used again.

So when we flush cache, we want to keep the first enqueued objects still 
stay there because they have more chance already be reset than the 
latest enqueued objects.

Only flush recently enqueued objects back into global ring, act as 
"LIFO" behavior.

This is why we require "revert" enqueued objects.

-Jack



  reply	other threads:[~2023-08-18  2:32 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-17  5:06 Honnappa Nagarahalli
2023-08-17 14:06 ` Stephen Hemminger
2023-08-18  2:32   ` Jack Min [this message]
2023-08-18  4:30     ` Honnappa Nagarahalli
2023-08-18  5:57       ` Jack Min
2023-08-18 13:59         ` Honnappa Nagarahalli
2023-08-19  1:34           ` Jack Min
2023-08-21  6:06             ` Honnappa Nagarahalli
2023-08-21  6:56               ` Jack Min
2023-08-22  4:18                 ` Honnappa Nagarahalli
2023-08-18  9:05     ` Konstantin Ananyev
2023-08-18  9:38       ` Jack Min
2023-08-19 11:57         ` Konstantin Ananyev
2023-08-20  1:41           ` Jack Min

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f46dd846-3a30-4f0f-8513-fc843baeeef9@nvidia.com \
    --to=jackmin@nvidia.com \
    --cc=Honnappa.Nagarahalli@arm.com \
    --cc=dev@dpdk.org \
    --cc=matan@nvidia.com \
    --cc=nd@arm.com \
    --cc=roretzla@linux.microsoft.com \
    --cc=stephen@networkplumber.org \
    --cc=viacheslavo@nvidia.com \
    --cc=wathsala.vithanage@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).