DPDK patches and discussions
 help / color / mirror / Atom feed
From: Neil Horman <nhorman@tuxdriver.com>
To: "Richardson, Bruce" <bruce.richardson@intel.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH v2 07/11 1/2] vdev: new registration API
Date: Sat, 12 Apr 2014 10:06:05 -0400	[thread overview]
Message-ID: <20140412140605.GA832@hmsreliant.think-freely.org> (raw)
In-Reply-To: <59AF69C657FD0841A61C55336867B5B01A9FC150@IRSMSX103.ger.corp.intel.com>

On Sat, Apr 12, 2014 at 11:23:50AM +0000, Richardson, Bruce wrote:
> 
> 
> > -----Original Message-----
> > From: Neil Horman [mailto:nhorman@tuxdriver.com]
> > Sent: Saturday, April 12, 2014 12:03 PM
> > To: Thomas Monjalon
> > Cc: Richardson, Bruce; dev@dpdk.org
> > Subject: Re: [dpdk-dev] [PATCH v2 07/11 1/2] vdev: new registration API
> > 
> > On Sat, Apr 12, 2014 at 08:05:22AM +0200, Thomas Monjalon wrote:
> > > Hi Bruce,
> > >
> > > 11/04/2014 20:08, Richardson, Bruce :
> > > > From: Neil Horman
> > > > > On Fri, Apr 11, 2014 at 06:18:08PM +0200, Thomas Monjalon wrote:
> > > > > > It seems that your patch is not removing
> > > > > > rte_eth_ring_pair_create/rte_eth_ring_pair_attach so I'm not
> > > > > > sure you can dynamically change the PMD in this case.
> > > > >
> > > > > Ew, I had missed those calls.  Yes, those should be encapsulated
> > > > > as some driver ops or some such.  I'll look at that when I rebase.
> > > > > Regardless however, I didn't mean to state that pmds could be
> > > > > switched while running, only that the pmd to use could be specified at run
> > time.
> > > > > Though, you're correct, pmd_ring doesn't seem to hold in line with
> > > > > the other pmds in their isolation.
> > > >
> > > > The ring PMD is probably best treated separately from the other PMDs
> > > > as it's not really a device poll-mode driver. Instead, it's a
> > > > general library that presents an API to make a ring, or set of
> > > > rings, appear as a poll-mode driver ethdev. The EAL command to have
> > > > one created at startup time was just an addon after-the-fact in case
> > > > someone might find it useful :-). However, it's primary purpose was
> > > > to allow applications to be written which could use physical NICs or
> > > > rings interchangeably. For example, an app with multiple stages in a
> > > > pipeline, where each stage just reads from an ethdev without caring
> > > > if it's actually reading from a port or from packets sent from
> > > > another lcore/function etc. Another example might be where an
> > > > application wishes to sometimes loop packets back to itself, in this
> > > > case it uses the C API to create an additional ring ethdev which it
> > > > uses as output port for any packets it wants looped back - no
> > > > special handling needed, everything is an ethdev to it on which it
> > > > calls rx_burst or tx_burst. It's also likely that in future we will
> > > > develop other libraries which wish to present their functionality via
> > rx_burst/tx_burst functions i.e. as an ethdev.
> > >
> > > I think you are describing a vdev and you want to be able to
> > > instantiate this vdev in your application code. Right?
> > > So why not make a generic API to be able to instantiate a vdev?
> > >
> > +1, thats exactly what you're describing richard, an ethernet device
> > +thats
> > backed by rings (or pipes, or whatever other non-phycial transport you want to
> > use).  Though we already have a method to generically instantiate a vdev, its the
> > --vdev option in the eal library.  It seems to me the simplest solution here is to
> > remove the ring_create/attach api from public accessibility, and call it directly
> > from the pmd init routine by passing parameters to it through the --vdev
> > command line argument.  I've actually got that in the patch series that I'm
> > rebasing for the PMD DSO cleanups.
> > 
> The issue with that approach, is how do you create vdevs which are actually backed by physical ethdevs, for example a vdev that is a set of bonded ethdevs e.g. for active/passive failover, or a vdev that actually does post-processing on packets received from a physical ethdev?
> 
I'm not sure I see your point, or more specifically how it relates to what we're
discussing here.  All I'm suggesting is that, instead of exposing two functions
( rte_eth_ring_pair_create and rte_eth_ring_pair_attach ), we call them from
within the pmd init routine, encoding the parameters to pass to the functions as
arguments to the --vdev command line option.  If you plan to do other things
between those two calls, then what you problably want is to add an ioctl type
interface (or perhaps some other dev-specific type of type-checked interface)
that is implemented in the rte_ethdev api, to let you call down to the pmd
without needing to link directly to it.  If you're hope is to back ethdevs into
bonded configurations, that definately seems to be the sort of thing for which
you need additional infrastructure code, and possibly a bonded pmd (like the
bonding driver in the linux kernel).  Either way, I'm not sure I see the
relation to doing such things, and hiding direct linkage of pmd defined
functions to an application.

Regards
Neil

  reply	other threads:[~2014-04-12 14:04 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-28 17:25 [dpdk-dev] [PATCH 00/11] eal: allow virtual pmd drivers as shared lib Olivier Matz
2014-02-28 17:25 ` [dpdk-dev] [PATCH 01/11] mk: use whole-archive option when creating dpdk binaries Olivier Matz
2014-04-10 13:58   ` Thomas Monjalon
2014-02-28 17:25 ` [dpdk-dev] [PATCH 02/11] devices-args: introduce rte_devargs in eal Olivier Matz
2014-02-28 21:39   ` Stephen Hemminger
2014-03-01 12:02     ` Olivier MATZ
2014-03-01 12:14       ` [dpdk-dev] [PATCH v2 " Olivier Matz
2014-04-10 13:59         ` Thomas Monjalon
2014-02-28 17:25 ` [dpdk-dev] [PATCH 03/11] devices-args: use rte_devargs and remove old whitelist code Olivier Matz
2014-03-01 12:14   ` [dpdk-dev] [PATCH v2 " Olivier Matz
2014-04-10 14:01     ` Thomas Monjalon
2014-02-28 17:25 ` [dpdk-dev] [PATCH 04/11] devices-args: add a dump_devargs command in basic test application Olivier Matz
2014-04-10 14:02   ` Thomas Monjalon
2014-02-28 17:25 ` [dpdk-dev] [PATCH 05/11] pci: rename device_list as pci_device_list Olivier Matz
2014-04-10 14:03   ` Thomas Monjalon
2014-02-28 17:25 ` [dpdk-dev] [PATCH 06/11] vdev: rename eal_common_nonpci_devs.c as eal_common_vdev.c Olivier Matz
2014-04-10 14:39   ` Thomas Monjalon
2014-04-11  7:36     ` [dpdk-dev] [PATCH v2 06/11] vdev: rename nonpci_devs as vdev Olivier Matz
2014-04-11 11:25       ` Thomas Monjalon
2014-04-11 11:45         ` [dpdk-dev] [PATCH v3 " Olivier Matz
2014-04-11 12:37           ` Thomas Monjalon
2014-02-28 17:25 ` [dpdk-dev] [PATCH 07/11] vdev: allow external registration of virtual device drivers Olivier Matz
2014-04-10 14:55   ` Thomas Monjalon
2014-04-11  7:36     ` [dpdk-dev] [PATCH v2 07/11 1/2] vdev: new registration API Olivier Matz
2014-04-11  7:36       ` [dpdk-dev] [PATCH v2 07/11 2/2] vdev: allow external registration of virtual device drivers Olivier Matz
2014-04-11 14:31         ` Thomas Monjalon
2014-04-11 10:49       ` [dpdk-dev] [PATCH v2 07/11 1/2] vdev: new registration API Neil Horman
2014-04-11 13:11         ` Thomas Monjalon
2014-04-11 15:50           ` Neil Horman
2014-04-11 16:18             ` Thomas Monjalon
2014-04-11 17:44               ` Neil Horman
2014-04-11 20:08                 ` Richardson, Bruce
2014-04-12  6:05                   ` Thomas Monjalon
2014-04-12 11:03                     ` Neil Horman
2014-04-12 11:23                       ` Richardson, Bruce
2014-04-12 14:06                         ` Neil Horman [this message]
2014-04-14 13:20                     ` John W. Linville
2014-04-14 13:45                       ` Thomas Monjalon
2014-04-14 13:54                         ` Neil Horman
2014-04-14 14:10                         ` John W. Linville
2014-04-14 14:39                           ` Thomas Monjalon
2014-04-11 14:31       ` Thomas Monjalon
2014-02-28 17:25 ` [dpdk-dev] [PATCH 08/11] device-args: use a comma instead of semicolon to separate key/values Olivier Matz
2014-04-10 14:05   ` Thomas Monjalon
2014-02-28 17:25 ` [dpdk-dev] [PATCH 09/11] device-args: replace use-device eal option by pci-whitelist and vdev Olivier Matz
2014-03-01 12:14   ` [dpdk-dev] [PATCH v2 " Olivier Matz
2014-04-10 14:06     ` Thomas Monjalon
2014-03-03 17:14   ` [dpdk-dev] [PATCH " Richardson, Bruce
2014-03-04 13:09     ` Olivier MATZ
2014-03-04 13:14       ` Richardson, Bruce
2014-03-24 22:39         ` Thomas Monjalon
2014-02-28 17:25 ` [dpdk-dev] [PATCH 10/11] device-args: allow to provide per pci device command line arguments Olivier Matz
2014-03-01 12:14   ` [dpdk-dev] [PATCH v2 " Olivier Matz
2014-04-10 14:06     ` Thomas Monjalon
2014-02-28 17:25 ` [dpdk-dev] [PATCH 11/11] testpmd: add several dump commands, useful for debug Olivier Matz
2014-03-01 12:15   ` [dpdk-dev] [PATCH v2 " Olivier Matz
2014-04-10 14:08     ` Thomas Monjalon

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=20140412140605.GA832@hmsreliant.think-freely.org \
    --to=nhorman@tuxdriver.com \
    --cc=bruce.richardson@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).