DPDK patches and discussions
 help / color / mirror / Atom feed
From: Stephen Hemminger <stephen@networkplumber.org>
To: "Wiles, Keith" <keith.wiles@intel.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] Beyond DPDK 2.0
Date: Fri, 8 May 2015 09:16:35 -0700	[thread overview]
Message-ID: <20150508091635.03872bce@urahara> (raw)
In-Reply-To: <D172173E.1F5E8%keith.wiles@intel.com>

On Fri, 8 May 2015 14:44:17 +0000
"Wiles, Keith" <keith.wiles@intel.com> wrote:

> Hi Luke,
> 
> On 5/7/15, 10:29 PM, "Luke Gorrie" <luke@snabb.co> wrote:
> 
> >On 8 May 2015 at 06:16, Wiles, Keith <keith.wiles@intel.com> wrote:
> >
> >The PMDs or drivers would not be useful without DPDK MBUFS IMO
> >
> >
> >
> >
> >
> >Surprisingly perhaps, I would find them very useful.
> >
> >
> >To me there are two parts to a driver: the hardware setup and the
> >transmit/receive.
> >
> >
> >The hardware setup is complex and generic. You have to read a
> >thousand-page data sheet and then write code to initialize the hardware,
> >setup queues, enable promisc/multicast, enable features you want like
> >vmdq or flow director, and so on. You need to accumulate
> > workarounds for hard-to-test problems like cards being discovered with
> >unsuitable values in their EEPROM. There is not much intellectual value
> >in this code being written more than once.
> >
> >
> >I would like to see this hardware setup code shared between many
> >projects. That code does not depend on a specific mbuf struct. Sharing
> >could be done with an embeddable PMD library, with a bifurcated driver in
> >the kernel, with the SR-IOV PF/VF model, or
> > surely other ways too. These all have limited applicability today.
> >
> >
> >The transmit/receive part, on the other hand, seems very
> >application-dependent. This part depends on the specific mbuf struct and
> >the way you are developing your application around it. You will need to
> >write code to suit your design for using scatter/gather,
> > allowed sizes of individual buffers, the granularity at which you are
> >keeping track of checksum validity, how you use TSO/LRO, how you use
> >interrupts, how you batch work together, and so on. This is easy or hard
> >depending on how simple or complex the application
> > is.
> >
> >
> >I am not so interested in sharing this code. I think that different
> >applications will legitimately have different designs - including mbuf
> >structs - and they all need code that suits their own design. I think
> >there is a lot of value in people being creative
> > in these areas and trying different things.
> >
> >
> >So while Avi might only mean that he wants to allocate the bytes for his
> >mbufs himself, on our side we want to design our own mbuf struct. The
> >cost of that today is to write our own device drivers from scratch but
> >for now that seems justified. Going forward
> > if there were a simpler mechanism that reduced our workload and gave us
> >access to more hardware - libixgbe, libi40e, etc - that would be
> >extremely interesting to us.  
> 
> I think I see your point about hardware setup and handling packets from
> the rings as it would be nice to allow others to utilize those parts of
> the code. The drivers (I believe) are mostly from FreeBSD and changed to
> be our PMDs, which to me they are fairly generic in some cases. I will
> have a look at the drivers when I get back home. In the past I have
> written drivers using the your suggestion around we have a upper and lower
> layer the lower layer is all hardware specific and the upper layer is all
> around the network stack interface. My point is we should be able to split
> the two and possible provide you the lower layer APIs in a cleaner way.

The point is this is BSD code, you can do with it what you will.
But the DPDK community doesn't have to care about changes breaking your
proprietary application.

That is the problem with the whole concept of making DPDK drivers
a separate component. It makes them immutable and unmaintainable.
Developers don't want to be responsible for code that is used outside
its original scope.

  reply	other threads:[~2015-05-08 16:17 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-16 10:38 O'Driscoll, Tim
2015-04-22 15:11 ` O'Driscoll, Tim
2015-04-22 15:33   ` Stephen Hemminger
2015-04-23 11:36     ` O'Driscoll, Tim
2015-04-24 21:02       ` Dave Neary
2015-05-07 14:02   ` Avi Kivity
2015-05-07 14:34     ` Ivan Boule
2015-05-07 15:27     ` Wiles, Keith
2015-05-07 15:33       ` Avi Kivity
2015-05-07 15:33       ` Avi Kivity
2015-05-07 15:49         ` Wiles, Keith
2015-05-07 16:05           ` Avi Kivity
2015-05-08  4:16             ` Wiles, Keith
2015-05-08  5:29               ` Luke Gorrie
2015-05-08  9:06                 ` Bruce Richardson
2015-05-08  9:32                   ` Luke Gorrie
2015-05-08  9:42                     ` Bruce Richardson
2015-05-08 10:02                       ` Luke Gorrie
2015-05-08 14:44                 ` Wiles, Keith
2015-05-08 16:16                   ` Stephen Hemminger [this message]
2015-05-08 10:26               ` Hobywan Kenoby
2015-05-08 13:31                 ` Neil Horman
2015-05-08 16:22                   ` Stephen Hemminger
2015-05-07 15:34     ` Luke Gorrie
2015-05-08  4:31       ` Wiles, Keith
2015-04-24  7:47 ` Luke Gorrie
2015-04-24 15:29   ` O'Driscoll, Tim
2015-04-24 17:00     ` Neil Horman
2015-04-26  9:07       ` Luke Gorrie
2015-04-24 17:39   ` Jay Rolette
2015-04-24 17:51     ` Matthew Hall
2015-04-25 13:30       ` Marc Sune
2015-04-25 16:08         ` Wiles, Keith
2015-04-26 21:56           ` Neil Horman
2015-04-27  2:29             ` Jim Thompson
2015-04-27 13:07               ` Neil Horman
2015-04-27 16:07               ` Stephen Hemminger
2015-04-28  7:20               ` Dor Laor
     [not found]             ` <D162FA4E.1DED8%keith.wiles@intel.com>
2015-04-27  9:52               ` Marc Sune
2015-04-27 13:39                 ` Wiles, Keith
2015-04-27 15:34                   ` Marc Sune
2015-04-27 10:29               ` Neil Horman
2015-04-27 13:50                 ` Wiles, Keith
2015-04-27 15:23                   ` Neil Horman
2015-04-27 12:38             ` Dave Neary
2015-04-27 13:41               ` Neil Horman
2015-04-27 16:09               ` Stephen Hemminger
2015-04-24 18:12     ` Matt Laswell
2015-04-24 18:51       ` Neil Horman
2015-04-24 19:55         ` Jay Rolette
2015-04-25 12:10           ` Neil Horman
2015-04-27 13:46             ` Jay Rolette
2015-04-28 17:26               ` Neil Horman
2015-04-28 20:02                 ` Jay Rolette
2015-04-28  6:22             ` Matthew Hall
2015-04-28 17:48   ` Stephen Hemminger
2015-04-30 21:31 Wiles, Keith
2015-04-30 21:38 ` Wiles, Keith

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=20150508091635.03872bce@urahara \
    --to=stephen@networkplumber.org \
    --cc=dev@dpdk.org \
    --cc=keith.wiles@intel.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).