DPDK patches and discussions
 help / color / mirror / Atom feed
From: Adrien Mazarguil <adrien.mazarguil@6wind.com>
To: Declan Doherty <declan.doherty@intel.com>
Cc: dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v6 1/8] doc: add switch representation documentation
Date: Tue, 3 Apr 2018 17:52:50 +0200	[thread overview]
Message-ID: <20180403155250.GE4957@6wind.com> (raw)
In-Reply-To: <20180328135433.20203-2-declan.doherty@intel.com>

Hi Declan,

On Wed, Mar 28, 2018 at 02:54:26PM +0100, Declan Doherty wrote:
> From: Adrien Mazarguil <adrien.mazarguil@6wind.com>
> 
> Add document to describe a model for representing switching capable
> devices in DPDK, using a general ethdev port model and through port
> representors.This document also details the port model and the
> rte_flow semantics required for flow programming, as well as listing
> some example use cases.
> 
> Signed-off-by: Declan Doherty <declan.doherty@intel.com>

OK for using the text of my original RFC, however since I'm not the *commit*
author, I suggest to make it yours with:

 git commit --amend --reset-author

You can then include my SoB line:

 Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>

Thanks. More cosmetic comments below.

<snip>
> +Port Representors
> +-----------------
> +
> +In many cases, traffic steering rules cannot be determined in advance;
> +applications usually have to process a bit of traffic in software before
> +thinking about offloading specific flows to hardware.
> +
> +Applications therefore need the ability to receive and inject traffic to
> +various device endpoints (other VFs, PFs or physical ports) before
> +connecting them together. Device drivers must provide means to hook the
> +"other end" of these endpoints and to refer them when configuring flow
> +rules.
> +
> +This role is left to so-called "port representors" (also known as "VF
> +representors" in the specific context of VFs), which are to DPDK what the
> +Ethernet switch device driver model (**switchdev**) [1]_ is to Linux, and
> +which can be thought as a software "patch panel" front-end for applications.
> +
> +- DPDK port representors are implemented as additional virtual Ethernet
> +  device (**ethdev**) instances, spawned on an as needed basis through
> +  configuration parameters passed to the driver of the underlying
> +  device using devargs.
> +
> +::
> +
> +   -w pci:dbdf,representor=0
> +   -w pci:dbdf,representor=[0-3]
> +   -w pci:dbdf,representor=[0,5-11]
> +
> +- As virtual devices, they may be more limited than their physical
> +  counterparts, for instance by exposing only a subset of device
> +  configuration callbacks and/or by not necessarily having Rx/Tx capability.
> +
> +- Among other things, they can be used to assign MAC addresses to the
> +  resource they represent.
> +
> +- Applications can tell port representors apart from other physcial of virtual
> +  port by checking the dev_flags field within their device information
> +  structure for the RTE_ETH_DEV_REPRESENTOR bit-field.
> +
> +.. code-block:: c
> +
> +  struct rte_eth_dev_info {
> +	..
> +	uint32_t dev_flags; /**< Device flags */
> +	..
> +  };
> +
> +- The device or group relationship of ports can be discovered using the
> +  switch_id field within the device information structure. By default the
> +  switch_id of a port will be it's port_id but ports within the same switch
> +  domain will share the same *switch_id* which in the case of SR-IOV devices
> +  would align to the port_id of the physical function port.
> +
> +.. code-block:: c
> +
> +  struct rte_eth_dev_info {
> +	..
> +	uint16_t switch_id; /**< Switch Domain Id */
> +	..
> +  };
> +

OK for these additions, note this section may have to be updated later
depending on how the API settles (especially on the devargs side) according
to discussions which are still going on.

<snip>
> +VF representors
> +~~~~~~~~~~~~~~~

Looks like you capitalized all words in some section titles but missed
others such as this one. I'm not a huge fan of capitalization in the middle
of sentences and actually prefer the original form, but I know it's very
common.

So I don't mind which you choose, however it should be consistent across all
section titles.

<snip>
> +Switching Examples
> +------------------
> +
> +This section provides practical examples based on the established Testpmd
> +flow command syntax [2]_, in the context described in `traffic steering`_
> +
> +::
> +
> +      .-------------.                 .-------------. .-------------.
> +      | hypervisor  |                 |    VM 1     | |    VM 2     |
> +      | application |                 | application | | application |
> +      `--+---+---+--'                 `----------+--' `--+----------'
> +         |   |   |                               |       |
> +         |   |   `-------------------.           |       |
> +         |   `---------.             |           |       |
> +         |             |             |           |       |
> +   .----(A)----. .----(B)----. .----(C)----.     |       |
> +   | port_id 3 | | port_id 4 | | port_id 5 |     |       |
> +   `-----+-----' `-----+-----' `-----+-----'     |       |
> +        |             |             |           |       |
> +      .-+--.    .-----+-----. .-----+-----. .---+--. .--+---.
> +      | PF |    | VF 1 rep. | | VF 2 rep. | | VF 1 | | VF 2 |
> +      `-+--'    `-----+-----' `-----+-----' `--(D)-' `-(E)--'
> +        |             |             |           |       |
> +        |             |   .---------'           |       |
> +        `-----.       |   |   .-----------------'       |
> +              |       |   |   |   .---------------------'
> +              |       |   |   |   |
> +           .--|-------|---|---|---|--.
> +           |  |       |   `---|---'  |
> +           |  |       `-------'      |
> +           |  `---------.            |
> +           `------------|------------'
> +                        |
> +                   .---(F)----.
> +                   | physical |
> +                   |  port 0  |
> +                   `----------'

This diagram is a somewhat broken horizontally.

> +
> +By default, PF (**A**) can communicate with the physical port it is
> +associated with (**F**), while VF 1 (**D**) and VF 2 (**E**) are isolated
> +and restricted to communicate with the hypervisor application through their
> +respective representors (**B** and **C**) if supported.
> +
> +Examples in subsequent sections apply to hypervisor applications only and
> +are based on port representors **A**, **B** and **C**.
> +
> +.. [2] `Flow syntax
> +    <http://dpdk.org/doc/guides/testpmd_app_ug/testpmd_funcs.html#flow-syntax>`

Internal documentation links should not go through HTTP where possible but
use the ":ref:`foo`" syntax, see doc/guides/contributing/documentation.rst.

-- 
Adrien Mazarguil
6WIND

  parent reply	other threads:[~2018-04-03 15:53 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-28 13:54 [dpdk-dev] [PATCH v6 0/7] switching device representation Declan Doherty
2018-03-28 13:54 ` [dpdk-dev] [PATCH v6 1/8] doc: add switch representation documentation Declan Doherty
2018-03-28 14:53   ` Thomas Monjalon
2018-03-28 15:05     ` Doherty, Declan
2018-04-03 15:52   ` Adrien Mazarguil [this message]
2018-03-28 13:54 ` [dpdk-dev] [PATCH v6 2/8] ethdev: add switch identifier parameter to port Declan Doherty
2018-03-29  6:13   ` Shahaf Shuler
2018-03-29  9:13     ` Doherty, Declan
2018-03-29 10:12       ` Shahaf Shuler
2018-03-29 15:12         ` Doherty, Declan
2018-04-01  6:10           ` Shahaf Shuler
2018-03-28 13:54 ` [dpdk-dev] [PATCH v6 3/8] ethdev: add generic create/destroy ethdev APIs Declan Doherty
2018-03-29  6:13   ` Shahaf Shuler
2018-03-29  9:22     ` Doherty, Declan
2018-03-28 13:54 ` [dpdk-dev] [PATCH v6 4/8] ethdev: Add port representor device flag Declan Doherty
2018-03-29  6:13   ` Shahaf Shuler
2018-03-29  7:34     ` Thomas Monjalon
2018-03-29 14:53     ` Doherty, Declan
2018-04-01  6:14       ` Shahaf Shuler
2018-03-28 13:54 ` [dpdk-dev] [PATCH v6 5/8] app/testpmd: add port name to device info Declan Doherty
2018-03-28 13:54 ` [dpdk-dev] [PATCH v6 6/8] ethdev: add common devargs parser Declan Doherty
2018-03-29 12:12   ` Gaëtan Rivet
2018-03-28 13:54 ` [dpdk-dev] [PATCH v6 7/8] net/i40e: add support for representor ports Declan Doherty
2018-03-28 13:54 ` [dpdk-dev] [PATCH v6 8/8] net/ixgbe: " Declan Doherty
2018-04-16 13:05 ` [dpdk-dev] [PATCH v7 0/9] switching devices representation Declan Doherty
2018-04-16 13:05   ` [dpdk-dev] [PATCH v7 1/9] doc: add switch representation documentation Declan Doherty
2018-04-16 15:55     ` Kovacevic, Marko
2018-04-16 13:05   ` [dpdk-dev] [PATCH v7 2/9] ethdev: add switch identifier parameter to port Declan Doherty
2018-04-24 16:38     ` Thomas Monjalon
2018-04-16 13:05   ` [dpdk-dev] [PATCH v7 3/9] ethdev: add generic create/destroy ethdev APIs Declan Doherty
2018-04-20 13:01     ` Ananyev, Konstantin
2018-04-24 17:48     ` Thomas Monjalon
2018-04-16 13:06   ` [dpdk-dev] [PATCH v7 4/9] ethdev: Add port representor device flag Declan Doherty
2018-04-24 19:37     ` Thomas Monjalon
2018-04-25 12:17       ` Doherty, Declan
2018-04-25 12:23         ` Thomas Monjalon
2018-04-16 13:06   ` [dpdk-dev] [PATCH v7 5/9] app/testpmd: add port name to device info Declan Doherty
2018-04-16 13:06   ` [dpdk-dev] [PATCH v7 6/9] ethdev: add common devargs parser Declan Doherty
2018-04-20 13:16     ` Ananyev, Konstantin
2018-04-24 19:53     ` Thomas Monjalon
2018-04-25  9:40       ` Remy Horton
2018-04-25 10:06         ` Thomas Monjalon
2018-04-25 10:45           ` Remy Horton
2018-04-16 13:06   ` [dpdk-dev] [PATCH v7 7/9] ethdev: add switch domain allocator Declan Doherty
2018-04-20 13:22     ` Ananyev, Konstantin
2018-04-24 19:58     ` Thomas Monjalon
2018-04-16 13:06   ` [dpdk-dev] [PATCH v7 8/9] net/i40e: add support for representor ports Declan Doherty
2018-04-16 13:06   ` [dpdk-dev] [PATCH v7 9/9] net/ixgbe: " Declan Doherty
2018-04-20 13:29     ` Ananyev, Konstantin
2018-04-26 10:40   ` [dpdk-dev] [dpdk=-dev][PATCH v8 0/9] switching devices representation Declan Doherty
2018-04-26 10:40     ` [dpdk-dev] [PATCH v8 1/9] doc: add switch representation documentation Declan Doherty
2018-04-26 10:40     ` [dpdk-dev] [PATCH v8 2/9] ethdev: add switch identifier parameter to port Declan Doherty
2018-04-26 12:02       ` Thomas Monjalon
2018-04-26 14:26         ` Thomas Monjalon
2018-04-27 16:29       ` Ferruh Yigit
2018-04-26 10:40     ` [dpdk-dev] [PATCH v8 3/9] ethdev: add generic create/destroy ethdev APIs Declan Doherty
2018-04-26 12:16       ` Ferruh Yigit
2018-04-26 10:41     ` [dpdk-dev] [PATCH v8 4/9] ethdev: Add port representor device flag Declan Doherty
2018-04-26 10:41     ` [dpdk-dev] [PATCH v8 5/9] app/testpmd: add port name to device info Declan Doherty
2018-04-26 10:41     ` [dpdk-dev] [PATCH v8 6/9] ethdev: add common devargs parser Declan Doherty
2018-04-26 12:03       ` Ananyev, Konstantin
2018-04-26 14:21         ` Ferruh Yigit
2018-04-26 14:28         ` Doherty, Declan
2018-04-26 14:44           ` Thomas Monjalon
2018-04-26 14:48           ` Ananyev, Konstantin
2018-04-26 14:30         ` Remy Horton
2018-04-26 12:15       ` Ferruh Yigit
2018-04-26 10:41     ` [dpdk-dev] [PATCH v8 7/9] ethdev: add switch domain allocator Declan Doherty
2018-04-26 12:27       ` Ananyev, Konstantin
2018-04-26 10:41     ` [dpdk-dev] [PATCH v8 8/9] net/i40e: add support for representor ports Declan Doherty
2018-04-26 10:41     ` [dpdk-dev] [PATCH v8 9/9] net/ixgbe: " Declan Doherty
2018-04-26 16:24     ` [dpdk-dev] [dpdk=-dev][PATCH v8 0/9] switching devices representation Ferruh Yigit
2018-04-26 16:35       ` Ferruh Yigit

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=20180403155250.GE4957@6wind.com \
    --to=adrien.mazarguil@6wind.com \
    --cc=declan.doherty@intel.com \
    --cc=dev@dpdk.org \
    /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).