[dpdk-dev] [PATCH 0/4] Link Bonding Library

2014-05-28 Thread declan.dohe...@intel.com
From: Declan Doherty 

Initial release of Link Bonding Library (lib/librte_bond) with support for 
bonding modes :
 0 - Round Robin
 1 - Active Backup
 2 - Balance l2 / l23 / l34 
 3 - Broadcast

patches split:
 1 - library + makefile changes
 2 - Unit test suite, including code to generate packet bursts for
testing rx and tx functionality of bonded device and a
virtual/stubbed out ethdev for use as slave ethdev in testing
 3 - Link bonding integration into testpmd, including :
 - Includes the ability to  create new bonded devices.
 - Add /remove bonding slave devices. 
 - Interogate bonded device stats/configuration
 - Change bonding modes and select balance transmit polices
 4 - Add Link Bonding Library to Doxygen


 app/test-pmd/cmdline.c|  550 +
 app/test-pmd/parameters.c |4 +-
 app/test-pmd/testpmd.c|   28 +-
 app/test-pmd/testpmd.h|2 +
 app/test/Makefile |3 +
 app/test/commands.c   |3 +
 app/test/packet_burst_generator.c |  276 +++
 app/test/packet_burst_generator.h |   85 +
 app/test/test.h   |1 +
 app/test/test_link_bonding.c  | 4007 +
 app/test/virtual_pmd.c|  580 ++
 app/test/virtual_pmd.h|   74 +
 config/common_bsdapp  |5 +
 config/common_linuxapp|5 +
 doc/doxy-api-index.md |1 +
 doc/doxy-api.conf |1 +
 lib/Makefile  |1 +
 lib/librte_bond/Makefile  |   28 +
 lib/librte_bond/rte_bond.c| 1679 
 lib/librte_bond/rte_bond.h|  228 +++
 mk/rte.app.mk |5 +
 21 files changed, 7564 insertions(+), 2 deletions(-)
 create mode 100644 app/test/packet_burst_generator.c
 create mode 100644 app/test/packet_burst_generator.h
 create mode 100644 app/test/test_link_bonding.c
 create mode 100644 app/test/virtual_pmd.c
 create mode 100644 app/test/virtual_pmd.h
 create mode 100644 lib/librte_bond/Makefile
 create mode 100644 lib/librte_bond/rte_bond.c
 create mode 100644 lib/librte_bond/rte_bond.h

-- 
1.8.5.3



[dpdk-dev] [PATCH 0/4] Link Bonding Library

2014-05-28 Thread Neil Horman
On Wed, May 28, 2014 at 04:32:00PM +0100, declan.doherty at intel.com wrote:
> From: Declan Doherty 
> 
> Initial release of Link Bonding Library (lib/librte_bond) with support for 
> bonding modes :
>  0 - Round Robin
>  1 - Active Backup
>  2 - Balance l2 / l23 / l34 
>  3 - Broadcast
> 
Why make this a separate library?  That requires exposure of yet another API to
applications.  Instead, why not write a PMD that can enslave other PMD's and
treat them all as a single interface?  That way this all works with the existing
API.

Neil

> patches split:
>  1 - library + makefile changes
>  2 - Unit test suite, including code to generate packet bursts for
> testing rx and tx functionality of bonded device and a
> virtual/stubbed out ethdev for use as slave ethdev in testing
>  3 - Link bonding integration into testpmd, including :
>  - Includes the ability to  create new bonded devices.
>  - Add /remove bonding slave devices. 
>  - Interogate bonded device stats/configuration
>  - Change bonding modes and select balance transmit polices
>  4 - Add Link Bonding Library to Doxygen
> 
> 
>  app/test-pmd/cmdline.c|  550 +
>  app/test-pmd/parameters.c |4 +-
>  app/test-pmd/testpmd.c|   28 +-
>  app/test-pmd/testpmd.h|2 +
>  app/test/Makefile |3 +
>  app/test/commands.c   |3 +
>  app/test/packet_burst_generator.c |  276 +++
>  app/test/packet_burst_generator.h |   85 +
>  app/test/test.h   |1 +
>  app/test/test_link_bonding.c  | 4007 
> +
>  app/test/virtual_pmd.c|  580 ++
>  app/test/virtual_pmd.h|   74 +
>  config/common_bsdapp  |5 +
>  config/common_linuxapp|5 +
>  doc/doxy-api-index.md |1 +
>  doc/doxy-api.conf |1 +
>  lib/Makefile  |1 +
>  lib/librte_bond/Makefile  |   28 +
>  lib/librte_bond/rte_bond.c| 1679 
>  lib/librte_bond/rte_bond.h|  228 +++
>  mk/rte.app.mk |5 +
>  21 files changed, 7564 insertions(+), 2 deletions(-)
>  create mode 100644 app/test/packet_burst_generator.c
>  create mode 100644 app/test/packet_burst_generator.h
>  create mode 100644 app/test/test_link_bonding.c
>  create mode 100644 app/test/virtual_pmd.c
>  create mode 100644 app/test/virtual_pmd.h
>  create mode 100644 lib/librte_bond/Makefile
>  create mode 100644 lib/librte_bond/rte_bond.c
>  create mode 100644 lib/librte_bond/rte_bond.h
> 
> -- 
> 1.8.5.3
> 
> 


[dpdk-dev] [PATCH 0/4] Link Bonding Library

2014-05-29 Thread Cao, Waterman
Hi declan,

  Do you send out Patch 1,2, 3 for link bonding?
  Only see patch 0 and 4.

Thanks
Waterman 

-Original Message-
From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of declan.dohe...@intel.com
Sent: Wednesday, May 28, 2014 11:32 PM
To: dev at dpdk.org; dev at dpdk.org
Subject: [dpdk-dev] [PATCH 0/4] Link Bonding Library

From: Declan Doherty 

Initial release of Link Bonding Library (lib/librte_bond) with support for 
bonding modes :
 0 - Round Robin
 1 - Active Backup
 2 - Balance l2 / l23 / l34
 3 - Broadcast

patches split:
 1 - library + makefile changes
 2 - Unit test suite, including code to generate packet bursts for
testing rx and tx functionality of bonded device and a
virtual/stubbed out ethdev for use as slave ethdev in testing
 3 - Link bonding integration into testpmd, including :
 - Includes the ability to  create new bonded devices.
 - Add /remove bonding slave devices. 
 - Interogate bonded device stats/configuration
 - Change bonding modes and select balance transmit polices
 4 - Add Link Bonding Library to Doxygen


 app/test-pmd/cmdline.c|  550 +
 app/test-pmd/parameters.c |4 +-
 app/test-pmd/testpmd.c|   28 +-
 app/test-pmd/testpmd.h|2 +
 app/test/Makefile |3 +
 app/test/commands.c   |3 +
 app/test/packet_burst_generator.c |  276 +++
 app/test/packet_burst_generator.h |   85 +
 app/test/test.h   |1 +
 app/test/test_link_bonding.c  | 4007 +
 app/test/virtual_pmd.c|  580 ++
 app/test/virtual_pmd.h|   74 +
 config/common_bsdapp  |5 +
 config/common_linuxapp|5 +
 doc/doxy-api-index.md |1 +
 doc/doxy-api.conf |1 +
 lib/Makefile  |1 +
 lib/librte_bond/Makefile  |   28 +
 lib/librte_bond/rte_bond.c| 1679 
 lib/librte_bond/rte_bond.h|  228 +++
 mk/rte.app.mk |5 +
 21 files changed, 7564 insertions(+), 2 deletions(-)  create mode 100644 
app/test/packet_burst_generator.c  create mode 100644 
app/test/packet_burst_generator.h  create mode 100644 
app/test/test_link_bonding.c  create mode 100644 app/test/virtual_pmd.c  create 
mode 100644 app/test/virtual_pmd.h  create mode 100644 lib/librte_bond/Makefile 
 create mode 100644 lib/librte_bond/rte_bond.c  create mode 100644 
lib/librte_bond/rte_bond.h

--
1.8.5.3



[dpdk-dev] [PATCH 0/4] Link Bonding Library

2014-05-29 Thread Doherty, Declan
-Original Message-
> From: Neil Horman [mailto:nhorman at tuxdriver.com] 
> Sent: Wednesday, May 28, 2014 6:49 PM
> To: Doherty, Declan
> Cc: dev at dpdk.org
> Subject: Re: [dpdk-dev] [PATCH 0/4] Link Bonding Library
>
> On Wed, May 28, 2014 at 04:32:00PM +0100, declan.doherty at intel.com wrote:
> > From: Declan Doherty 
> > 
> > Initial release of Link Bonding Library (lib/librte_bond) with support 
> > for bonding modes :
> >  0 - Round Robin
> >  1 - Active Backup
> >  2 - Balance l2 / l23 / l34
> >  3 - Broadcast
> > 
> Why make this a separate library?  That requires exposure of yet another API 
> to applications.  Instead, why > not write a PMD that can enslave other PMD's 
> and treat them all as a single interface?  That way this all >  > works with 
> the existing API.
>
> Neil

Hi Neil,
the link bonding device is essentially a software PMD, and as such supports all 
the standard PMD APIs, the only new APIs which the link bonding library 
introduces  are for the control operations of the bonded device which are 
currently unsupported by the standard PMD API. Operations such as creating, 
adding/removing slaves, and configuring the modes of operation of the device 
have no analogous APIs in the current PMD API and required new ones to be 
created .

Declan
--
Intel Shannon Limited
Registered in Ireland
Registered Office: Collinstown Industrial Park, Leixlip, County Kildare
Registered Number: 308263
Business address: Dromore House, East Park, Shannon, Co. Clare

This e-mail and any attachments may contain confidential material for the sole 
use of the intended recipient(s). Any review or distribution by others is 
strictly prohibited. If you are not the intended recipient, please contact the 
sender and delete all copies.




[dpdk-dev] [PATCH 0/4] Link Bonding Library

2014-05-29 Thread Doherty, Declan
> From: Cao, Waterman 
> Sent: Thursday, May 29, 2014 4:23 AM
> To: Doherty, Declan; dev at dpdk.org; dev at dpdk.org
> Cc: Cao, Waterman
> Subject: RE: [dpdk-dev] [PATCH 0/4] Link Bonding Library
>
> Hi declan,
>
>   Do you send out Patch 1,2, 3 for link bonding?
>   Only see patch 0 and 4.
>
> Thanks
> Waterman 

Hi Waterman, 

As far as I can see all the patches have been submitted, and are visible on the 
mailing list archives.

Declan
--
Intel Shannon Limited
Registered in Ireland
Registered Office: Collinstown Industrial Park, Leixlip, County Kildare
Registered Number: 308263
Business address: Dromore House, East Park, Shannon, Co. Clare

This e-mail and any attachments may contain confidential material for the sole 
use of the intended recipient(s). Any review or distribution by others is 
strictly prohibited. If you are not the intended recipient, please contact the 
sender and delete all copies.




[dpdk-dev] [PATCH 0/4] Link Bonding Library

2014-05-29 Thread Neil Horman
On Thu, May 29, 2014 at 10:33:00AM +, Doherty, Declan wrote:
> -Original Message-
> > From: Neil Horman [mailto:nhorman at tuxdriver.com] 
> > Sent: Wednesday, May 28, 2014 6:49 PM
> > To: Doherty, Declan
> > Cc: dev at dpdk.org
> > Subject: Re: [dpdk-dev] [PATCH 0/4] Link Bonding Library
> >
> > On Wed, May 28, 2014 at 04:32:00PM +0100, declan.doherty at intel.com wrote:
> > > From: Declan Doherty 
> > > 
> > > Initial release of Link Bonding Library (lib/librte_bond) with support 
> > > for bonding modes :
> > >  0 - Round Robin
> > >  1 - Active Backup
> > >  2 - Balance l2 / l23 / l34
> > >  3 - Broadcast
> > > 
> > Why make this a separate library?  That requires exposure of yet another 
> > API to applications.  Instead, why > not write a PMD that can enslave other 
> > PMD's and treat them all as a single interface?  That way this all >  > 
> > works with the existing API.
> >
> > Neil
> 
> Hi Neil,
> the link bonding device is essentially a software PMD, and as such supports 
> all the standard PMD APIs, the only new APIs which the link bonding library 
> introduces  are for the control operations of the bonded device which are 
> currently unsupported by the standard PMD API. Operations such as creating, 
> adding/removing slaves, and configuring the modes of operation of the device 
> have no analogous APIs in the current PMD API and required new ones to be 
> created .

Thats really only true in spirit, in the sense that this library transmits and
receives frames like a PMD does.  In practice it doesn't work and isn't
architected the same way.  You don't register the driver using the same method
as the other PMDs, which means that using --vdev on the command line wont work
for this type of device.  It also implies that applications have to be made
specifically aware of the fact that they are using a bonded interface (i.e. they
need to call the bonding setup routines to create the bond).  I would recommend:

1) Register the pmd using the PMD_DRIVER_REGISTER macro, like other PMD's
2) Use the kvargs library to support configuration via the --vdev command line
option, so bonds can be created administratively, rather than just
programatically
3) Separate the command api from the PMD functionality into separate libraries
(use control mbufs to communicate configuration changes to the pmd).  This will
allow users to dynamically load the pmd functionality (without compile or run
time linking requirements), and then optionally use the programatic interface
(or not if they want to save memory)

Regards
Neil

> 
> Declan
> --
> Intel Shannon Limited
> Registered in Ireland
> Registered Office: Collinstown Industrial Park, Leixlip, County Kildare
> Registered Number: 308263
> Business address: Dromore House, East Park, Shannon, Co. Clare
> 
> This e-mail and any attachments may contain confidential material for the 
> sole use of the intended recipient(s). Any review or distribution by others 
> is strictly prohibited. If you are not the intended recipient, please contact 
> the sender and delete all copies.
> 
> 
>