All of lore.kernel.org
 help / color / mirror / Atom feed
* DPDK API/ABI Stability
@ 2014-04-09 18:39 Neil Horman
       [not found] ` <20140409183952.GA16493-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Neil Horman @ 2014-04-09 18:39 UTC (permalink / raw)
  To: dev-VfR2kkLFssw

Hey all-
	I was going to include this as an addendum to the packaging thread on
this list, but I can't seem to find it in my inbox, so forgive me starting a new
one.

	I wanted to broach the subject of ABI/API stability on the list here.
Given the recent great efforts to make dpdk packagable by disributions, I think
we probably need to discuss API stability in more depth and come up with a plan
to implement it.  Has anyone started looking into this?  If not, it seems to me
to be reasonable to start by placing a line in the sand with the functions
documented here:

http://dpdk.org/doc/api/

It seems to me we can start reviewing the API library by library, enusring only
those functions are exported, making sure the data types are appropriate for
export, and marking them with a linker script to version them appropriately.

Thoughts?

Neil

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: DPDK API/ABI Stability
       [not found] ` <20140409183952.GA16493-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
@ 2014-04-09 21:08   ` Stephen Hemminger
       [not found]     ` <20140409140849.176db9be-We1ePj4FEcvRI77zikRAJc56i+j3xesD0e7PPNI6Mm0@public.gmane.org>
  2014-04-11 17:33   ` Poor device abstraction's Stephen Hemminger
  1 sibling, 1 reply; 7+ messages in thread
From: Stephen Hemminger @ 2014-04-09 21:08 UTC (permalink / raw)
  To: Neil Horman; +Cc: dev-VfR2kkLFssw

On Wed, 9 Apr 2014 14:39:52 -0400
Neil Horman <nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org> wrote:

> Hey all-
> 	I was going to include this as an addendum to the packaging thread on
> this list, but I can't seem to find it in my inbox, so forgive me starting a new
> one.
> 
> 	I wanted to broach the subject of ABI/API stability on the list here.
> Given the recent great efforts to make dpdk packagable by disributions, I think
> we probably need to discuss API stability in more depth and come up with a plan
> to implement it.  Has anyone started looking into this?  If not, it seems to me
> to be reasonable to start by placing a line in the sand with the functions
> documented here:
> 
> http://dpdk.org/doc/api/
> 
> It seems to me we can start reviewing the API library by library, enusring only
> those functions are exported, making sure the data types are appropriate for
> export, and marking them with a linker script to version them appropriately.

To what level? source? binary, internal functions?

Some of the API's could be stablized without much impact but others such
as the device driver interface is incomplete and freezing it would make
live hard.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: DPDK API/ABI Stability
       [not found]     ` <20140409140849.176db9be-We1ePj4FEcvRI77zikRAJc56i+j3xesD0e7PPNI6Mm0@public.gmane.org>
@ 2014-04-10 10:54       ` Neil Horman
  0 siblings, 0 replies; 7+ messages in thread
From: Neil Horman @ 2014-04-10 10:54 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev-VfR2kkLFssw

On Wed, Apr 09, 2014 at 02:08:49PM -0700, Stephen Hemminger wrote:
> On Wed, 9 Apr 2014 14:39:52 -0400
> Neil Horman <nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org> wrote:
> 
> > Hey all-
> > 	I was going to include this as an addendum to the packaging thread on
> > this list, but I can't seem to find it in my inbox, so forgive me starting a new
> > one.
> > 
> > 	I wanted to broach the subject of ABI/API stability on the list here.
> > Given the recent great efforts to make dpdk packagable by disributions, I think
> > we probably need to discuss API stability in more depth and come up with a plan
> > to implement it.  Has anyone started looking into this?  If not, it seems to me
> > to be reasonable to start by placing a line in the sand with the functions
> > documented here:
> > 
> > http://dpdk.org/doc/api/
> > 
> > It seems to me we can start reviewing the API library by library, enusring only
> > those functions are exported, making sure the data types are appropriate for
> > export, and marking them with a linker script to version them appropriately.
> 
> To what level? source? binary, internal functions?
> 
Well, I was thinking both (hence the API/ABI comment above), but at least API
stability as a start.  Stabilizing internal functions doesn't make any sense to
me since, by definition those aren't exposed to users trying to make use of the
library.

> Some of the API's could be stablized without much impact but others such
> as the device driver interface is incomplete and freezing it would make
> live hard.

But the driver interface isn't listed on the api documentation above.  Clearly
we'd need to address that eventually, but as a start it can likely be ignored,
at least we can give applications a modicum of stability.

Neil

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Poor device abstraction's
       [not found] ` <20140409183952.GA16493-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
  2014-04-09 21:08   ` Stephen Hemminger
@ 2014-04-11 17:33   ` Stephen Hemminger
       [not found]     ` <20140411103331.060c8a7d-We1ePj4FEcvRI77zikRAJc56i+j3xesD0e7PPNI6Mm0@public.gmane.org>
  1 sibling, 1 reply; 7+ messages in thread
From: Stephen Hemminger @ 2014-04-11 17:33 UTC (permalink / raw)
  To: Neil Horman; +Cc: dev-VfR2kkLFssw

One of my pet peeve's is that the device driver config does not abstract
the properties of the Ethernet device. The existing parameters match those
of Intel's Ethernet hardware but not much else. It also makes it hard
to write generic applications.  If the application has to query the
device driver name string and insert different parameters for igb, igbvf, ixgbe
and vmxnet3 then the API was designed wrong.

Specific examples:
  * the "descriptors" argument to rx/tx is interpreted as a hardware resource
    not the number of packets. An application really wants to say "you may buffer
    up to 100us of packets" not have to guess what the underlying driver does.

  * the rthresh/wthresh/pthresh are PCI device artifacts and correct value is
    different for each HW device shouldn't be exposed to application. The API
    should be something like "device may burst up to N packets and/or T latency".

These seems like issues of a transition from a cool toy to talk to Intel hardware
to a useful application infrastructure.

That is why I would hate to see the existing Intel device centric API frozen.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Poor device abstraction's
       [not found]     ` <20140411103331.060c8a7d-We1ePj4FEcvRI77zikRAJc56i+j3xesD0e7PPNI6Mm0@public.gmane.org>
@ 2014-04-11 17:47       ` Neil Horman
       [not found]         ` <20140411174727.GF911-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Neil Horman @ 2014-04-11 17:47 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev-VfR2kkLFssw

On Fri, Apr 11, 2014 at 10:33:31AM -0700, Stephen Hemminger wrote:
> One of my pet peeve's is that the device driver config does not abstract
> the properties of the Ethernet device. The existing parameters match those
> of Intel's Ethernet hardware but not much else. It also makes it hard
> to write generic applications.  If the application has to query the
> device driver name string and insert different parameters for igb, igbvf, ixgbe
> and vmxnet3 then the API was designed wrong.
> 
I agree.  I think the patches that recently got integrated from Olivier are a
step toward fixing that, but theres some more work to be done.

Neil

> Specific examples:
>   * the "descriptors" argument to rx/tx is interpreted as a hardware resource
>     not the number of packets. An application really wants to say "you may buffer
>     up to 100us of packets" not have to guess what the underlying driver does.
> 
>   * the rthresh/wthresh/pthresh are PCI device artifacts and correct value is
>     different for each HW device shouldn't be exposed to application. The API
>     should be something like "device may burst up to N packets and/or T latency".
> 
> These seems like issues of a transition from a cool toy to talk to Intel hardware
> to a useful application infrastructure.
> 
> That is why I would hate to see the existing Intel device centric API frozen.
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Poor device abstraction's
       [not found]         ` <20140411174727.GF911-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
@ 2014-04-11 17:57           ` Venkatesan, Venky
       [not found]             ` <1FD9B82B8BF2CF418D9A1000154491D97406521E-P5GAC/sN6hlcIJlls4ac1rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Venkatesan, Venky @ 2014-04-11 17:57 UTC (permalink / raw)
  To: Neil Horman, Stephen Hemminger; +Cc: dev-VfR2kkLFssw

Agree that the patch sets are a step towards fixing that, but there is a lot more to be done on this. Could we start discussion on what the "ideal" abstraction should be? I'd like to pool those into a formal proposal that we can discuss and drive through a series of patches to make that happen. Even semi-freezing anything prior to that would be premature. 

-Venky

-----Original Message-----
From: dev [mailto:dev-bounces-VfR2kkLFssw@public.gmane.org] On Behalf Of Neil Horman
Sent: Friday, April 11, 2014 10:47 AM
To: Stephen Hemminger
Cc: dev-VfR2kkLFssw@public.gmane.org
Subject: Re: [dpdk-dev] Poor device abstraction's

On Fri, Apr 11, 2014 at 10:33:31AM -0700, Stephen Hemminger wrote:
> One of my pet peeve's is that the device driver config does not 
> abstract the properties of the Ethernet device. The existing 
> parameters match those of Intel's Ethernet hardware but not much else. 
> It also makes it hard to write generic applications.  If the 
> application has to query the device driver name string and insert 
> different parameters for igb, igbvf, ixgbe and vmxnet3 then the API was designed wrong.
> 
I agree.  I think the patches that recently got integrated from Olivier are a step toward fixing that, but theres some more work to be done.

Neil

> Specific examples:
>   * the "descriptors" argument to rx/tx is interpreted as a hardware resource
>     not the number of packets. An application really wants to say "you may buffer
>     up to 100us of packets" not have to guess what the underlying driver does.
> 
>   * the rthresh/wthresh/pthresh are PCI device artifacts and correct value is
>     different for each HW device shouldn't be exposed to application. The API
>     should be something like "device may burst up to N packets and/or T latency".
> 
> These seems like issues of a transition from a cool toy to talk to 
> Intel hardware to a useful application infrastructure.
> 
> That is why I would hate to see the existing Intel device centric API frozen.
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Poor device abstraction's
       [not found]             ` <1FD9B82B8BF2CF418D9A1000154491D97406521E-P5GAC/sN6hlcIJlls4ac1rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
@ 2014-04-11 17:59               ` Neil Horman
  0 siblings, 0 replies; 7+ messages in thread
From: Neil Horman @ 2014-04-11 17:59 UTC (permalink / raw)
  To: Venkatesan, Venky; +Cc: dev-VfR2kkLFssw

On Fri, Apr 11, 2014 at 05:57:41PM +0000, Venkatesan, Venky wrote:
> Agree that the patch sets are a step towards fixing that, but there is a lot more to be done on this. Could we start discussion on what the "ideal" abstraction should be? I'd like to pool those into a formal proposal that we can discuss and drive through a series of patches to make that happen. Even semi-freezing anything prior to that would be premature. 
> 
Well, just to throw something out there, what about starting with the net_device
structure in the kernel, and removing things that are unnecessecary?  That might
give us a good starting point to see what else is needed
Neil

> -Venky
> 
> -----Original Message-----
> From: dev [mailto:dev-bounces-VfR2kkLFssw@public.gmane.org] On Behalf Of Neil Horman
> Sent: Friday, April 11, 2014 10:47 AM
> To: Stephen Hemminger
> Cc: dev-VfR2kkLFssw@public.gmane.org
> Subject: Re: [dpdk-dev] Poor device abstraction's
> 
> On Fri, Apr 11, 2014 at 10:33:31AM -0700, Stephen Hemminger wrote:
> > One of my pet peeve's is that the device driver config does not 
> > abstract the properties of the Ethernet device. The existing 
> > parameters match those of Intel's Ethernet hardware but not much else. 
> > It also makes it hard to write generic applications.  If the 
> > application has to query the device driver name string and insert 
> > different parameters for igb, igbvf, ixgbe and vmxnet3 then the API was designed wrong.
> > 
> I agree.  I think the patches that recently got integrated from Olivier are a step toward fixing that, but theres some more work to be done.
> 
> Neil
> 
> > Specific examples:
> >   * the "descriptors" argument to rx/tx is interpreted as a hardware resource
> >     not the number of packets. An application really wants to say "you may buffer
> >     up to 100us of packets" not have to guess what the underlying driver does.
> > 
> >   * the rthresh/wthresh/pthresh are PCI device artifacts and correct value is
> >     different for each HW device shouldn't be exposed to application. The API
> >     should be something like "device may burst up to N packets and/or T latency".
> > 
> > These seems like issues of a transition from a cool toy to talk to 
> > Intel hardware to a useful application infrastructure.
> > 
> > That is why I would hate to see the existing Intel device centric API frozen.
> > 
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2014-04-11 17:59 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-04-09 18:39 DPDK API/ABI Stability Neil Horman
     [not found] ` <20140409183952.GA16493-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2014-04-09 21:08   ` Stephen Hemminger
     [not found]     ` <20140409140849.176db9be-We1ePj4FEcvRI77zikRAJc56i+j3xesD0e7PPNI6Mm0@public.gmane.org>
2014-04-10 10:54       ` Neil Horman
2014-04-11 17:33   ` Poor device abstraction's Stephen Hemminger
     [not found]     ` <20140411103331.060c8a7d-We1ePj4FEcvRI77zikRAJc56i+j3xesD0e7PPNI6Mm0@public.gmane.org>
2014-04-11 17:47       ` Neil Horman
     [not found]         ` <20140411174727.GF911-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2014-04-11 17:57           ` Venkatesan, Venky
     [not found]             ` <1FD9B82B8BF2CF418D9A1000154491D97406521E-P5GAC/sN6hlcIJlls4ac1rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-04-11 17:59               ` Neil Horman

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.