linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Daney <ddaney@caviumnetworks.com>
To: Florian Fainelli <f.fainelli@gmail.com>,
	David Daney <david.daney@cavium.com>,
	linux-mips@linux-mips.org, ralf@linux-mips.org,
	James Hogan <james.hogan@mips.com>,
	netdev@vger.kernel.org, "David S. Miller" <davem@davemloft.net>,
	Rob Herring <robh+dt@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>
Cc: linux-kernel@vger.kernel.org,
	"Steven J. Hill" <steven.hill@cavium.com>,
	devicetree@vger.kernel.org, Carlos Munoz <cmunoz@cavium.com>
Subject: Re: [PATCH 4/7] MIPS: Octeon: Add Free Pointer Unit (FPA) support.
Date: Thu, 2 Nov 2017 12:12:33 -0700	[thread overview]
Message-ID: <5bb88fc9-5acd-0997-15c8-a9164c789738@caviumnetworks.com> (raw)
In-Reply-To: <70fa7ec2-3e6d-e420-ff57-b34dc7ec311e@gmail.com>

On 11/02/2017 11:04 AM, Florian Fainelli wrote:
> On 11/02/2017 09:27 AM, David Daney wrote:
>> On 11/01/2017 08:29 PM, Florian Fainelli wrote:
>>> Le 11/01/17 à 17:36, David Daney a écrit :
>>>> From: Carlos Munoz <cmunoz@cavium.com>
>>>>
>>>>   From the hardware user manual: "The FPA is a unit that maintains
>>>> pools of pointers to free L2/DRAM memory. To provide QoS, the pools
>>>> are referenced indirectly through 1024 auras. Both core software
>>>> and hardware units allocate and free pointers."
>>>
>>> This looks like a possibly similar implement to what
>>> drivers/net/ethernet/marvell/mvneta_bm.c, can you see if you can make
>>> any use of genpool_* and include/net/hwbm.h here as well?
>>
>> Yikes!  Is it permitted to put function definitions that are not "static
>> inline" in header files?
> 
> Meh well, this is not even ressembling what we initially discussed, so I
> was hoping we could build more interesting features on top of this.
> 
>>
>> The driver currently doesn't use page fragments, so I don't think that
>> the hwbm thing can be used.
>>
>> Also the FPA unit is used to control RED and back pressure in the PKI
>> (packet input processor), which are features that are features not
>> considered in hwbm.
>>
>> The OCTEON-III hardware also uses the FPA for non-packet-buffer memory
>> allocations.  So for those, it seems that hwbm is also not a good fit.
> 
> OK, let me see if I understand how FPA works, can we say that this is
> more or less a buffer tokenizer in that, you give it a buffer physical
> address and it returns an unique identifier that the FPA uses for actual
> packet passing, transmission and other manipulations?


At a high level, think of the FPA as a FIFO containing DMA addresses 
used by hardware.  The FIFO property is not guaranteed, so it is best to 
consider it as a pool of buffer addresses.

Software pushes pointers into the FPA, and the hardware RX unit (PKI) 
pops them off when it needs an RX buffer.  The TX unit (PKO) and input 
queue (SSO) also use memory obtained from the FPA as backing store for 
their internal queues.

In addition to obtaining buffers, the PKI uses the number of entries in 
an FPA pool to control RED and back pressure.

There are other features not used by the driver like threshold 
interrupts, and pointer alignment so you don't have to calculate the 
buffer address from a pointer to the middle of the buffer when freeing.


> 
> There were a few funky things in the network driver, I will comment there.
> --
> Florian
> 

  reply	other threads:[~2017-11-02 19:12 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-02  0:35 [PATCH 0/7] Cavium OCTEON-III network driver David Daney
2017-11-02  0:36 ` [PATCH 1/7] dt-bindings: Add Cavium Octeon Common Ethernet Interface David Daney
2017-11-02  1:09   ` Florian Fainelli
2017-11-02  1:26     ` David Daney
2017-11-02 12:47     ` Andrew Lunn
2017-11-02 16:06       ` David Daney
2017-11-02  0:36 ` [PATCH 2/7] MIPS: Octeon: Enable LMTDMA/LMTST operations David Daney
2017-11-02  0:36 ` [PATCH 3/7] MIPS: Octeon: Add a global resource manager David Daney
2017-11-02 12:23   ` Andrew Lunn
2017-11-02 16:03     ` David Daney
2017-11-02 17:49       ` Florian Fainelli
2017-11-02  0:36 ` [PATCH 4/7] MIPS: Octeon: Add Free Pointer Unit (FPA) support David Daney
2017-11-02  3:29   ` Florian Fainelli
2017-11-02 16:27     ` David Daney
2017-11-02 18:04       ` Florian Fainelli
2017-11-02 19:12         ` David Daney [this message]
2017-11-02 13:14   ` James Hogan
2017-11-02  0:36 ` [PATCH 5/7] MIPS: Octeon: Automatically provision CVMSEG space David Daney
2017-11-05  7:45   ` kbuild test robot
2017-11-02  0:36 ` [PATCH 6/7] netdev: octeon-ethernet: Add Cavium Octeon III support David Daney
2017-11-02 12:43   ` Andrew Lunn
2017-11-02 15:55     ` David Daney
2017-11-02 16:10       ` Andrew Lunn
2017-11-02 16:37         ` David Daney
2017-11-02 16:56           ` Andrew Lunn
2017-11-02 18:31             ` David Daney
2017-11-02 18:53               ` Florian Fainelli
2017-11-02 19:13   ` Florian Fainelli
2017-11-02 22:45     ` David Daney
2017-11-03 15:48       ` Andrew Lunn
2017-11-02  0:36 ` [PATCH 7/7] MAINTAINERS: Add entry for drivers/net/ethernet/cavium/octeon/octeon3-* David Daney

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=5bb88fc9-5acd-0997-15c8-a9164c789738@caviumnetworks.com \
    --to=ddaney@caviumnetworks.com \
    --cc=cmunoz@cavium.com \
    --cc=davem@davemloft.net \
    --cc=david.daney@cavium.com \
    --cc=devicetree@vger.kernel.org \
    --cc=f.fainelli@gmail.com \
    --cc=james.hogan@mips.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@linux-mips.org \
    --cc=mark.rutland@arm.com \
    --cc=netdev@vger.kernel.org \
    --cc=ralf@linux-mips.org \
    --cc=robh+dt@kernel.org \
    --cc=steven.hill@cavium.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).