[dpdk-dev] [PATCH v9 0/4] ethdev: add speed capabilities and refactor link API

2016-03-09 Thread Marc
On 9 March 2016 at 11:09, N?lio Laranjeiro 
wrote:

> On Wed, Mar 09, 2016 at 10:29:38AM +0100, N?lio Laranjeiro wrote:
> > On Tue, Mar 08, 2016 at 05:53:05PM +0100, N?lio Laranjeiro wrote:
> > > On Tue, Mar 08, 2016 at 04:00:29PM +0100, Marc Sune wrote:
> > > > 2016-03-01 1:45 GMT+01:00 Marc Sune :
> > > >
> > > > > The current rte_eth_dev_info abstraction does not provide any
> mechanism to
> > > > > get the supported speed(s) of an ethdev.
> > > > >
> > > > > For some drivers (e.g. ixgbe), an educated guess could be done
> based on the
> > > > > driver's name (driver_name in rte_eth_dev_info), see:
> > > > >
> > > > > http://dpdk.org/ml/archives/dev/2013-August/000412.html
> > > > >
> > > > > However, i) doing string comparisons is annoying, and can silently
> > > > > break existing applications if PMDs change their names ii) it does
> not
> > > > > provide all the supported capabilities of the ethdev iii) for some
> drivers
> > > > > it
> > > > > is impossible determine correctly the (max) speed by the
> application
> > > > > (e.g. in i40, distinguish between XL710 and X710).
> > > > >
> > > > > In addition, the link APIs do not allow to define a set of
> advertised link
> > > > > speeds for autonegociation.
> > > > >
> > > > > This series of patches adds the following capabilities:
> > > > >
> > > > > * speed_capa bitmap in rte_eth_dev_info, which is filled by the
> PMDs
> > > > >   according to the physical device capabilities.
> > > > > * refactors link API in ethdev to allow the definition of the
> advertised
> > > > >   link speeds, fix speed (no auto-negociation) or advertise all
> supported
> > > > >   speeds (default).
> > > > >
> > > > > WARNING: this patch series, specifically 3/4, is NOT tested for
> most of the
> > > > > PMDs, due to the lack of hardware. Only generic EM is tested (VM).
> > > > > Reviewing
> > > > > and testing required by PMD maintainers.
> > > > >
> > > > > * * * * *
> > > > >
> > > > > v2: rebase, converted speed_capa into 32 bits bitmap, fixed
> alignment
> > > > > (checkpatch).
> > > > >
> > > > > v3: rebase to v2.1. unified ETH_LINK_SPEED and ETH_SPEED_CAP into
> > > > > ETH_SPEED.
> > > > > Converted field speed in struct rte_eth_conf to speed, to
> allow a
> > > > > bitmap
> > > > > for defining the announced speeds, as suggested M. Brorup.
> Fixed
> > > > > spelling
> > > > > issues.
> > > > >
> > > > > v4: fixed errata in the documentation of field speeds of
> rte_eth_conf, and
> > > > > commit 1/2 message. rebased to v2.1.0. v3 was incorrectly
> based on
> > > > > ~2.1.0-rc1.
> > > > >
> > > > > v5: revert to v2 speed capabilities patch. Fixed MLX4 speed
> capabilities
> > > > > (thanks N. Laranjeiro). Refactored link speed API to allow
> setting
> > > > > advertised speeds (3/4). Added NO_AUTONEG option to
> explicitely disable
> > > > > auto-negociation. Updated 2.2 rel. notes (4/4). Rebased to
> current
> > > > > HEAD.
> > > > >
> > > > > v6: Move link_duplex to be part of bitfield. Fixed i40 autoneg
> flag link
> > > > > update code. Added rte_eth_speed_to_bm_flag() to .map file.
> Fixed other
> > > > > spelling issues. Rebased to current HEAD.
> > > > >
> > > > > v7: Rebased to current HEAD. Moved documentation to v2.3. Still
> needs
> > > > > testing
> > > > > from PMD maintainers.
> > > > >
> > > > > v8: Rebased to current HEAD. Modified em driver impl. to not touch
> base
> > > > > files.
> > > > > Merged patch 5 into 3 (map file). Changed numeric speed to a
> 64 bit
> > > > > value.
> > > > > Filled-in speed capabilities for drivers bnx2x, cxgbe, mlx5
> and nfp in
> > > > > addition to the ones of previous patch sets.
> > > > >
> > > > > v9: rebased to current HEAD. Reverted numeric speed to 32 bit in
> struct
> > > > > rte_eth_link (no atomic link get > 64bit). Fixed mlx5 driver
> > > > > compilation
> > > > > and link speeds. Moved documentation to release_16_04.rst and
> fixed
> > > > > several
> > > > > issues. Upgrade NIC notes with speed capabilities.
> > > > >
> > > >
> > > > Anyone interested in reviewing and _testing_ this series?
> > > >
> > > > Thank you
> > > > Marc
> > >
> > > Hi Marc,
> > >
> > > I will take a look tomorrow morning and run test on Mellanox NICs
> > > (ConnectX 3 and 4).
> > >
> > > I do not have access to the others NICs, if those who have can do
> > > it, could be really great.
> > >
> > > Regards,
> >
> > It works as expected with Mellanox NICs.
> >
> > Regards,
> >
> > --
> > N?lio Laranjeiro
> > 6WIND
>
> Tested-by: Nelio Laranjeiro 
>
> - OS/Kernel: Debian 8/3.16.0-4-amd64
> - GCC: gcc (Debian 4.9.2-10) 4.9.2
> - CPU: Intel(R) Xeon(R) CPU E5-2697 v2 @ 2.70GHz
> - MLNX OFED: 3.2-2.0.0.0
> - NIC: ConnectX 4 100G
>
> - OS/Kernel: Debian 7/3.16.0-0.bpo.4-amd64
> - GCC: gcc (Debian 4.7.2-5) 4.7.2
> - CPU: Intel(R) Xeon(R) CPU E5-2648L 0 @ 1.80GHz
> - MLNX OFED: 3.2-2.0.0.0
> - NIC: ConnectX 3 Pro
>
>
> 1. Link displayed at the correct negotiated speed:

[dpdk-dev] [PATCH v9 0/4] ethdev: add speed capabilities and refactor link API

2016-03-09 Thread Nélio Laranjeiro
On Wed, Mar 09, 2016 at 10:29:38AM +0100, N?lio Laranjeiro wrote:
> On Tue, Mar 08, 2016 at 05:53:05PM +0100, N?lio Laranjeiro wrote:
> > On Tue, Mar 08, 2016 at 04:00:29PM +0100, Marc Sune wrote:
> > > 2016-03-01 1:45 GMT+01:00 Marc Sune :
> > > 
> > > > The current rte_eth_dev_info abstraction does not provide any mechanism 
> > > > to
> > > > get the supported speed(s) of an ethdev.
> > > >
> > > > For some drivers (e.g. ixgbe), an educated guess could be done based on 
> > > > the
> > > > driver's name (driver_name in rte_eth_dev_info), see:
> > > >
> > > > http://dpdk.org/ml/archives/dev/2013-August/000412.html
> > > >
> > > > However, i) doing string comparisons is annoying, and can silently
> > > > break existing applications if PMDs change their names ii) it does not
> > > > provide all the supported capabilities of the ethdev iii) for some 
> > > > drivers
> > > > it
> > > > is impossible determine correctly the (max) speed by the application
> > > > (e.g. in i40, distinguish between XL710 and X710).
> > > >
> > > > In addition, the link APIs do not allow to define a set of advertised 
> > > > link
> > > > speeds for autonegociation.
> > > >
> > > > This series of patches adds the following capabilities:
> > > >
> > > > * speed_capa bitmap in rte_eth_dev_info, which is filled by the PMDs
> > > >   according to the physical device capabilities.
> > > > * refactors link API in ethdev to allow the definition of the advertised
> > > >   link speeds, fix speed (no auto-negociation) or advertise all 
> > > > supported
> > > >   speeds (default).
> > > >
> > > > WARNING: this patch series, specifically 3/4, is NOT tested for most of 
> > > > the
> > > > PMDs, due to the lack of hardware. Only generic EM is tested (VM).
> > > > Reviewing
> > > > and testing required by PMD maintainers.
> > > >
> > > > * * * * *
> > > >
> > > > v2: rebase, converted speed_capa into 32 bits bitmap, fixed alignment
> > > > (checkpatch).
> > > >
> > > > v3: rebase to v2.1. unified ETH_LINK_SPEED and ETH_SPEED_CAP into
> > > > ETH_SPEED.
> > > > Converted field speed in struct rte_eth_conf to speed, to allow a
> > > > bitmap
> > > > for defining the announced speeds, as suggested M. Brorup. Fixed
> > > > spelling
> > > > issues.
> > > >
> > > > v4: fixed errata in the documentation of field speeds of rte_eth_conf, 
> > > > and
> > > > commit 1/2 message. rebased to v2.1.0. v3 was incorrectly based on
> > > > ~2.1.0-rc1.
> > > >
> > > > v5: revert to v2 speed capabilities patch. Fixed MLX4 speed capabilities
> > > > (thanks N. Laranjeiro). Refactored link speed API to allow setting
> > > > advertised speeds (3/4). Added NO_AUTONEG option to explicitely 
> > > > disable
> > > > auto-negociation. Updated 2.2 rel. notes (4/4). Rebased to current
> > > > HEAD.
> > > >
> > > > v6: Move link_duplex to be part of bitfield. Fixed i40 autoneg flag link
> > > > update code. Added rte_eth_speed_to_bm_flag() to .map file. Fixed 
> > > > other
> > > > spelling issues. Rebased to current HEAD.
> > > >
> > > > v7: Rebased to current HEAD. Moved documentation to v2.3. Still needs
> > > > testing
> > > > from PMD maintainers.
> > > >
> > > > v8: Rebased to current HEAD. Modified em driver impl. to not touch base
> > > > files.
> > > > Merged patch 5 into 3 (map file). Changed numeric speed to a 64 bit
> > > > value.
> > > > Filled-in speed capabilities for drivers bnx2x, cxgbe, mlx5 and nfp 
> > > > in
> > > > addition to the ones of previous patch sets.
> > > >
> > > > v9: rebased to current HEAD. Reverted numeric speed to 32 bit in struct
> > > > rte_eth_link (no atomic link get > 64bit). Fixed mlx5 driver
> > > > compilation
> > > > and link speeds. Moved documentation to release_16_04.rst and fixed
> > > > several
> > > > issues. Upgrade NIC notes with speed capabilities.
> > > >
> > > 
> > > Anyone interested in reviewing and _testing_ this series?
> > > 
> > > Thank you
> > > Marc
> > 
> > Hi Marc,
> > 
> > I will take a look tomorrow morning and run test on Mellanox NICs
> > (ConnectX 3 and 4).
> > 
> > I do not have access to the others NICs, if those who have can do
> > it, could be really great.
> > 
> > Regards,
> 
> It works as expected with Mellanox NICs.
> 
> Regards,
> 
> -- 
> N?lio Laranjeiro
> 6WIND

Tested-by: Nelio Laranjeiro 

- OS/Kernel: Debian 8/3.16.0-4-amd64
- GCC: gcc (Debian 4.9.2-10) 4.9.2
- CPU: Intel(R) Xeon(R) CPU E5-2697 v2 @ 2.70GHz
- MLNX OFED: 3.2-2.0.0.0
- NIC: ConnectX 4 100G

- OS/Kernel: Debian 7/3.16.0-0.bpo.4-amd64
- GCC: gcc (Debian 4.7.2-5) 4.7.2
- CPU: Intel(R) Xeon(R) CPU E5-2648L 0 @ 1.80GHz
- MLNX OFED: 3.2-2.0.0.0
- NIC: ConnectX 3 Pro


1. Link displayed at the correct negotiated speed:
   - 40Gbps for ConnectX3 Pro
   - 100Gbps for ConnectX4 100G
   - 40Gbps for ConnectX4 100G on a 40G link.

2. Configuring speed:
   - Not supported yet for Mellanox as expected.

-- 
N?lio Laranjeiro
6WIND


[dpdk-dev] [PATCH v9 0/4] ethdev: add speed capabilities and refactor link API

2016-03-09 Thread Nélio Laranjeiro
On Tue, Mar 08, 2016 at 05:53:05PM +0100, N?lio Laranjeiro wrote:
> On Tue, Mar 08, 2016 at 04:00:29PM +0100, Marc Sune wrote:
> > 2016-03-01 1:45 GMT+01:00 Marc Sune :
> > 
> > > The current rte_eth_dev_info abstraction does not provide any mechanism to
> > > get the supported speed(s) of an ethdev.
> > >
> > > For some drivers (e.g. ixgbe), an educated guess could be done based on 
> > > the
> > > driver's name (driver_name in rte_eth_dev_info), see:
> > >
> > > http://dpdk.org/ml/archives/dev/2013-August/000412.html
> > >
> > > However, i) doing string comparisons is annoying, and can silently
> > > break existing applications if PMDs change their names ii) it does not
> > > provide all the supported capabilities of the ethdev iii) for some drivers
> > > it
> > > is impossible determine correctly the (max) speed by the application
> > > (e.g. in i40, distinguish between XL710 and X710).
> > >
> > > In addition, the link APIs do not allow to define a set of advertised link
> > > speeds for autonegociation.
> > >
> > > This series of patches adds the following capabilities:
> > >
> > > * speed_capa bitmap in rte_eth_dev_info, which is filled by the PMDs
> > >   according to the physical device capabilities.
> > > * refactors link API in ethdev to allow the definition of the advertised
> > >   link speeds, fix speed (no auto-negociation) or advertise all supported
> > >   speeds (default).
> > >
> > > WARNING: this patch series, specifically 3/4, is NOT tested for most of 
> > > the
> > > PMDs, due to the lack of hardware. Only generic EM is tested (VM).
> > > Reviewing
> > > and testing required by PMD maintainers.
> > >
> > > * * * * *
> > >
> > > v2: rebase, converted speed_capa into 32 bits bitmap, fixed alignment
> > > (checkpatch).
> > >
> > > v3: rebase to v2.1. unified ETH_LINK_SPEED and ETH_SPEED_CAP into
> > > ETH_SPEED.
> > > Converted field speed in struct rte_eth_conf to speed, to allow a
> > > bitmap
> > > for defining the announced speeds, as suggested M. Brorup. Fixed
> > > spelling
> > > issues.
> > >
> > > v4: fixed errata in the documentation of field speeds of rte_eth_conf, and
> > > commit 1/2 message. rebased to v2.1.0. v3 was incorrectly based on
> > > ~2.1.0-rc1.
> > >
> > > v5: revert to v2 speed capabilities patch. Fixed MLX4 speed capabilities
> > > (thanks N. Laranjeiro). Refactored link speed API to allow setting
> > > advertised speeds (3/4). Added NO_AUTONEG option to explicitely 
> > > disable
> > > auto-negociation. Updated 2.2 rel. notes (4/4). Rebased to current
> > > HEAD.
> > >
> > > v6: Move link_duplex to be part of bitfield. Fixed i40 autoneg flag link
> > > update code. Added rte_eth_speed_to_bm_flag() to .map file. Fixed 
> > > other
> > > spelling issues. Rebased to current HEAD.
> > >
> > > v7: Rebased to current HEAD. Moved documentation to v2.3. Still needs
> > > testing
> > > from PMD maintainers.
> > >
> > > v8: Rebased to current HEAD. Modified em driver impl. to not touch base
> > > files.
> > > Merged patch 5 into 3 (map file). Changed numeric speed to a 64 bit
> > > value.
> > > Filled-in speed capabilities for drivers bnx2x, cxgbe, mlx5 and nfp in
> > > addition to the ones of previous patch sets.
> > >
> > > v9: rebased to current HEAD. Reverted numeric speed to 32 bit in struct
> > > rte_eth_link (no atomic link get > 64bit). Fixed mlx5 driver
> > > compilation
> > > and link speeds. Moved documentation to release_16_04.rst and fixed
> > > several
> > > issues. Upgrade NIC notes with speed capabilities.
> > >
> > 
> > Anyone interested in reviewing and _testing_ this series?
> > 
> > Thank you
> > Marc
> 
> Hi Marc,
> 
> I will take a look tomorrow morning and run test on Mellanox NICs
> (ConnectX 3 and 4).
> 
> I do not have access to the others NICs, if those who have can do
> it, could be really great.
> 
> Regards,

It works as expected with Mellanox NICs.

Regards,

-- 
N?lio Laranjeiro
6WIND


[dpdk-dev] [PATCH v9 0/4] ethdev: add speed capabilities and refactor link API

2016-03-08 Thread Nélio Laranjeiro
On Tue, Mar 08, 2016 at 04:00:29PM +0100, Marc Sune wrote:
> 2016-03-01 1:45 GMT+01:00 Marc Sune :
> 
> > The current rte_eth_dev_info abstraction does not provide any mechanism to
> > get the supported speed(s) of an ethdev.
> >
> > For some drivers (e.g. ixgbe), an educated guess could be done based on the
> > driver's name (driver_name in rte_eth_dev_info), see:
> >
> > http://dpdk.org/ml/archives/dev/2013-August/000412.html
> >
> > However, i) doing string comparisons is annoying, and can silently
> > break existing applications if PMDs change their names ii) it does not
> > provide all the supported capabilities of the ethdev iii) for some drivers
> > it
> > is impossible determine correctly the (max) speed by the application
> > (e.g. in i40, distinguish between XL710 and X710).
> >
> > In addition, the link APIs do not allow to define a set of advertised link
> > speeds for autonegociation.
> >
> > This series of patches adds the following capabilities:
> >
> > * speed_capa bitmap in rte_eth_dev_info, which is filled by the PMDs
> >   according to the physical device capabilities.
> > * refactors link API in ethdev to allow the definition of the advertised
> >   link speeds, fix speed (no auto-negociation) or advertise all supported
> >   speeds (default).
> >
> > WARNING: this patch series, specifically 3/4, is NOT tested for most of the
> > PMDs, due to the lack of hardware. Only generic EM is tested (VM).
> > Reviewing
> > and testing required by PMD maintainers.
> >
> > * * * * *
> >
> > v2: rebase, converted speed_capa into 32 bits bitmap, fixed alignment
> > (checkpatch).
> >
> > v3: rebase to v2.1. unified ETH_LINK_SPEED and ETH_SPEED_CAP into
> > ETH_SPEED.
> > Converted field speed in struct rte_eth_conf to speed, to allow a
> > bitmap
> > for defining the announced speeds, as suggested M. Brorup. Fixed
> > spelling
> > issues.
> >
> > v4: fixed errata in the documentation of field speeds of rte_eth_conf, and
> > commit 1/2 message. rebased to v2.1.0. v3 was incorrectly based on
> > ~2.1.0-rc1.
> >
> > v5: revert to v2 speed capabilities patch. Fixed MLX4 speed capabilities
> > (thanks N. Laranjeiro). Refactored link speed API to allow setting
> > advertised speeds (3/4). Added NO_AUTONEG option to explicitely disable
> > auto-negociation. Updated 2.2 rel. notes (4/4). Rebased to current
> > HEAD.
> >
> > v6: Move link_duplex to be part of bitfield. Fixed i40 autoneg flag link
> > update code. Added rte_eth_speed_to_bm_flag() to .map file. Fixed other
> > spelling issues. Rebased to current HEAD.
> >
> > v7: Rebased to current HEAD. Moved documentation to v2.3. Still needs
> > testing
> > from PMD maintainers.
> >
> > v8: Rebased to current HEAD. Modified em driver impl. to not touch base
> > files.
> > Merged patch 5 into 3 (map file). Changed numeric speed to a 64 bit
> > value.
> > Filled-in speed capabilities for drivers bnx2x, cxgbe, mlx5 and nfp in
> > addition to the ones of previous patch sets.
> >
> > v9: rebased to current HEAD. Reverted numeric speed to 32 bit in struct
> > rte_eth_link (no atomic link get > 64bit). Fixed mlx5 driver
> > compilation
> > and link speeds. Moved documentation to release_16_04.rst and fixed
> > several
> > issues. Upgrade NIC notes with speed capabilities.
> >
> 
> Anyone interested in reviewing and _testing_ this series?
> 
> Thank you
> Marc

Hi Marc,

I will take a look tomorrow morning and run test on Mellanox NICs
(ConnectX 3 and 4).

I do not have access to the others NICs, if those who have can do
it, could be really great.

Regards,

-- 
N?lio Laranjeiro
6WIND


[dpdk-dev] [PATCH v9 0/4] ethdev: add speed capabilities and refactor link API

2016-03-08 Thread Marc Sune
2016-03-01 1:45 GMT+01:00 Marc Sune :

> The current rte_eth_dev_info abstraction does not provide any mechanism to
> get the supported speed(s) of an ethdev.
>
> For some drivers (e.g. ixgbe), an educated guess could be done based on the
> driver's name (driver_name in rte_eth_dev_info), see:
>
> http://dpdk.org/ml/archives/dev/2013-August/000412.html
>
> However, i) doing string comparisons is annoying, and can silently
> break existing applications if PMDs change their names ii) it does not
> provide all the supported capabilities of the ethdev iii) for some drivers
> it
> is impossible determine correctly the (max) speed by the application
> (e.g. in i40, distinguish between XL710 and X710).
>
> In addition, the link APIs do not allow to define a set of advertised link
> speeds for autonegociation.
>
> This series of patches adds the following capabilities:
>
> * speed_capa bitmap in rte_eth_dev_info, which is filled by the PMDs
>   according to the physical device capabilities.
> * refactors link API in ethdev to allow the definition of the advertised
>   link speeds, fix speed (no auto-negociation) or advertise all supported
>   speeds (default).
>
> WARNING: this patch series, specifically 3/4, is NOT tested for most of the
> PMDs, due to the lack of hardware. Only generic EM is tested (VM).
> Reviewing
> and testing required by PMD maintainers.
>
> * * * * *
>
> v2: rebase, converted speed_capa into 32 bits bitmap, fixed alignment
> (checkpatch).
>
> v3: rebase to v2.1. unified ETH_LINK_SPEED and ETH_SPEED_CAP into
> ETH_SPEED.
> Converted field speed in struct rte_eth_conf to speed, to allow a
> bitmap
> for defining the announced speeds, as suggested M. Brorup. Fixed
> spelling
> issues.
>
> v4: fixed errata in the documentation of field speeds of rte_eth_conf, and
> commit 1/2 message. rebased to v2.1.0. v3 was incorrectly based on
> ~2.1.0-rc1.
>
> v5: revert to v2 speed capabilities patch. Fixed MLX4 speed capabilities
> (thanks N. Laranjeiro). Refactored link speed API to allow setting
> advertised speeds (3/4). Added NO_AUTONEG option to explicitely disable
> auto-negociation. Updated 2.2 rel. notes (4/4). Rebased to current
> HEAD.
>
> v6: Move link_duplex to be part of bitfield. Fixed i40 autoneg flag link
> update code. Added rte_eth_speed_to_bm_flag() to .map file. Fixed other
> spelling issues. Rebased to current HEAD.
>
> v7: Rebased to current HEAD. Moved documentation to v2.3. Still needs
> testing
> from PMD maintainers.
>
> v8: Rebased to current HEAD. Modified em driver impl. to not touch base
> files.
> Merged patch 5 into 3 (map file). Changed numeric speed to a 64 bit
> value.
> Filled-in speed capabilities for drivers bnx2x, cxgbe, mlx5 and nfp in
> addition to the ones of previous patch sets.
>
> v9: rebased to current HEAD. Reverted numeric speed to 32 bit in struct
> rte_eth_link (no atomic link get > 64bit). Fixed mlx5 driver
> compilation
> and link speeds. Moved documentation to release_16_04.rst and fixed
> several
> issues. Upgrade NIC notes with speed capabilities.
>

Anyone interested in reviewing and _testing_ this series?

Thank you
Marc


>
> Marc Sune (4):
>   ethdev: Added ETH_SPEED_CAP bitmap for ports
>   ethdev: Fill speed capability bitmaps in the PMDs
>   ethdev: redesign link speed config API
>   doc: update with link changes
>
>  app/test-pipeline/init.c  |   2 +-
>  app/test-pmd/cmdline.c| 124
> +++---
>  app/test-pmd/config.c |   4 +-
>  app/test/virtual_pmd.c|   4 +-
>  doc/guides/nics/overview.rst  |   1 +
>  doc/guides/rel_notes/release_16_04.rst|  27 +++
>  drivers/net/af_packet/rte_eth_af_packet.c |   5 +-
>  drivers/net/bnx2x/bnx2x_ethdev.c  |   7 +-
>  drivers/net/bonding/rte_eth_bond_8023ad.c |  14 ++--
>  drivers/net/cxgbe/base/t4_hw.c|   8 +-
>  drivers/net/cxgbe/cxgbe_ethdev.c  |   1 +
>  drivers/net/e1000/em_ethdev.c | 112
> ++-
>  drivers/net/e1000/igb_ethdev.c| 107 +++---
>  drivers/net/fm10k/fm10k_ethdev.c  |   6 +-
>  drivers/net/i40e/i40e_ethdev.c|  78 +++
>  drivers/net/i40e/i40e_ethdev_vf.c |  11 +--
>  drivers/net/ixgbe/ixgbe_ethdev.c  |  80 +--
>  drivers/net/mlx4/mlx4.c   |   6 ++
>  drivers/net/mlx5/mlx5_ethdev.c|   7 ++
>  drivers/net/mpipe/mpipe_tilegx.c  |   6 +-
>  drivers/net/nfp/nfp_net.c |   4 +-
>  drivers/net/null/rte_eth_null.c   |   5 +-
>  drivers/net/pcap/rte_eth_pcap.c   |   9 ++-
>  drivers/net/ring/rte_eth_ring.c   |   5 +-
>  drivers/net/virtio/virtio_ethdev.c|   2 +-
>  drivers/net/virtio/virtio_ethdev.h|   2 -
>  drivers/net/vmxnet3/vmxnet3_ethdev.c  |   5 +-
>  

[dpdk-dev] [PATCH v9 0/4] ethdev: add speed capabilities and refactor link API

2016-03-01 Thread Marc Sune
The current rte_eth_dev_info abstraction does not provide any mechanism to
get the supported speed(s) of an ethdev.

For some drivers (e.g. ixgbe), an educated guess could be done based on the
driver's name (driver_name in rte_eth_dev_info), see:

http://dpdk.org/ml/archives/dev/2013-August/000412.html

However, i) doing string comparisons is annoying, and can silently
break existing applications if PMDs change their names ii) it does not
provide all the supported capabilities of the ethdev iii) for some drivers it
is impossible determine correctly the (max) speed by the application
(e.g. in i40, distinguish between XL710 and X710).

In addition, the link APIs do not allow to define a set of advertised link
speeds for autonegociation.

This series of patches adds the following capabilities:

* speed_capa bitmap in rte_eth_dev_info, which is filled by the PMDs
  according to the physical device capabilities.
* refactors link API in ethdev to allow the definition of the advertised
  link speeds, fix speed (no auto-negociation) or advertise all supported
  speeds (default).

WARNING: this patch series, specifically 3/4, is NOT tested for most of the
PMDs, due to the lack of hardware. Only generic EM is tested (VM). Reviewing
and testing required by PMD maintainers.

* * * * *

v2: rebase, converted speed_capa into 32 bits bitmap, fixed alignment
(checkpatch).

v3: rebase to v2.1. unified ETH_LINK_SPEED and ETH_SPEED_CAP into ETH_SPEED.
Converted field speed in struct rte_eth_conf to speed, to allow a bitmap
for defining the announced speeds, as suggested M. Brorup. Fixed spelling
issues.

v4: fixed errata in the documentation of field speeds of rte_eth_conf, and
commit 1/2 message. rebased to v2.1.0. v3 was incorrectly based on
~2.1.0-rc1.

v5: revert to v2 speed capabilities patch. Fixed MLX4 speed capabilities
(thanks N. Laranjeiro). Refactored link speed API to allow setting
advertised speeds (3/4). Added NO_AUTONEG option to explicitely disable
auto-negociation. Updated 2.2 rel. notes (4/4). Rebased to current HEAD.

v6: Move link_duplex to be part of bitfield. Fixed i40 autoneg flag link
update code. Added rte_eth_speed_to_bm_flag() to .map file. Fixed other
spelling issues. Rebased to current HEAD.

v7: Rebased to current HEAD. Moved documentation to v2.3. Still needs testing
from PMD maintainers.

v8: Rebased to current HEAD. Modified em driver impl. to not touch base files.
Merged patch 5 into 3 (map file). Changed numeric speed to a 64 bit value.
Filled-in speed capabilities for drivers bnx2x, cxgbe, mlx5 and nfp in
addition to the ones of previous patch sets.

v9: rebased to current HEAD. Reverted numeric speed to 32 bit in struct
rte_eth_link (no atomic link get > 64bit). Fixed mlx5 driver compilation
and link speeds. Moved documentation to release_16_04.rst and fixed several
issues. Upgrade NIC notes with speed capabilities.

Marc Sune (4):
  ethdev: Added ETH_SPEED_CAP bitmap for ports
  ethdev: Fill speed capability bitmaps in the PMDs
  ethdev: redesign link speed config API
  doc: update with link changes

 app/test-pipeline/init.c  |   2 +-
 app/test-pmd/cmdline.c| 124 +++---
 app/test-pmd/config.c |   4 +-
 app/test/virtual_pmd.c|   4 +-
 doc/guides/nics/overview.rst  |   1 +
 doc/guides/rel_notes/release_16_04.rst|  27 +++
 drivers/net/af_packet/rte_eth_af_packet.c |   5 +-
 drivers/net/bnx2x/bnx2x_ethdev.c  |   7 +-
 drivers/net/bonding/rte_eth_bond_8023ad.c |  14 ++--
 drivers/net/cxgbe/base/t4_hw.c|   8 +-
 drivers/net/cxgbe/cxgbe_ethdev.c  |   1 +
 drivers/net/e1000/em_ethdev.c | 112 ++-
 drivers/net/e1000/igb_ethdev.c| 107 +++---
 drivers/net/fm10k/fm10k_ethdev.c  |   6 +-
 drivers/net/i40e/i40e_ethdev.c|  78 +++
 drivers/net/i40e/i40e_ethdev_vf.c |  11 +--
 drivers/net/ixgbe/ixgbe_ethdev.c  |  80 +--
 drivers/net/mlx4/mlx4.c   |   6 ++
 drivers/net/mlx5/mlx5_ethdev.c|   7 ++
 drivers/net/mpipe/mpipe_tilegx.c  |   6 +-
 drivers/net/nfp/nfp_net.c |   4 +-
 drivers/net/null/rte_eth_null.c   |   5 +-
 drivers/net/pcap/rte_eth_pcap.c   |   9 ++-
 drivers/net/ring/rte_eth_ring.c   |   5 +-
 drivers/net/virtio/virtio_ethdev.c|   2 +-
 drivers/net/virtio/virtio_ethdev.h|   2 -
 drivers/net/vmxnet3/vmxnet3_ethdev.c  |   5 +-
 drivers/net/xenvirt/rte_eth_xenvirt.c |   5 +-
 examples/ip_pipeline/config_parse.c   |   3 +-
 lib/librte_ether/rte_ethdev.c |  49 
 lib/librte_ether/rte_ethdev.h |  97 ++-
 lib/librte_ether/rte_ether_version.map|   6 ++
 32 files changed, 501 insertions(+),