On 9 March 2016 at 11:09, N?lio Laranjeiro <nelio.laranjeiro at 6wind.com> 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 <marcdevel at gmail.com>: > > > > > > > > > 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 <nelio.laranjeiro at 6wind.com> > > - 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. > Thanks Neilo, It would be good that at least i40 and e1000/ixgbe is tested and acked, specially for the speed config part. Some more reviews would also help. Marc > > -- > N?lio Laranjeiro > 6WIND >