[dpdk-dev] [PATCH v10 0/8] ethdev: 100G and link speed API refactoring

Thomas Monjalon thomas.monjalon at 6wind.com
Mon Mar 14 22:55:38 CET 2016


Re-spin of the Marc's patchset.
The first version was sent 10 months ago!
There are still too few tests and reviews but it is now time to move
forward with this rework.
Some issues were remaining in v9 and were difficult to see because it
was mainly one big patch. That's why I've split it in several steps
and fixed/reworked some pieces.
There will be an exception to integrate this feature in 16.04-rc2.
Please test and review shortly, thanks!

--------

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 the patch 6/8, is NOT tested for
most of the drivers.
Reviewing and testing are required by PMD maintainers.

--------

Marc Sune (6):
  ethdev: use constants for link duplex
  app/testpmd: move speed and duplex parsing in a function
  ethdev: rename link speed constants
  ethdev: add speed capabilities
  ethdev: redesign link speed config
  ethdev: convert speed number to bitmap flag

Thomas Monjalon (2):
  ethdev: use constants for link state
  ethdev: add 100G link speed

v10:
    - rebase
    - rework release notes
    - rearrange patch splitting
    - fix doxygen comments
    - fix typos
    - removed log format of link.link_speed as %d (keep %u)
    - complete ETH_LINK_[DOWN/UP] replacement from 0/1
    - change ETH_LINK_SPEED_AUTONEG to 1
    - replace ETH_LINK_SPEED_NEG by ETH_LINK_SPEED_AUTONEG (1)
    - replace ETH_LINK_SPEED_NO_AUTONEG by ETH_LINK_SPEED_FIXED (0)
    - rework rte_eth_speed_to_bm_flag to rte_eth_speed_bitflag
    - complete 100G support in testpmd

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.

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.

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

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.

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.

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.

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.

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


 app/test-pipeline/init.c                           |   2 +-
 app/test-pmd/cmdline.c                             | 125 ++++++++++-----------
 app/test-pmd/testpmd.c                             |   2 +-
 app/test/test_pmd_perf.c                           |   2 +-
 app/test/virtual_pmd.c                             |   8 +-
 doc/guides/nics/overview.rst                       |   1 +
 doc/guides/rel_notes/release_16_04.rst             |  22 ++++
 doc/guides/testpmd_app_ug/testpmd_funcs.rst        |   2 +-
 drivers/net/af_packet/rte_eth_af_packet.c          |   9 +-
 drivers/net/bnx2x/bnx2x_ethdev.c                   |   7 +-
 drivers/net/bnx2x/elink.c                          |   2 +-
 drivers/net/bonding/rte_eth_bond_8023ad.c          |  14 +--
 drivers/net/bonding/rte_eth_bond_api.c             |   4 +-
 drivers/net/bonding/rte_eth_bond_pmd.c             |  12 +-
 drivers/net/cxgbe/base/t4_hw.c                     |   8 +-
 drivers/net/cxgbe/cxgbe_ethdev.c                   |   1 +
 drivers/net/e1000/em_ethdev.c                      | 111 +++++++++---------
 drivers/net/e1000/igb_ethdev.c                     | 104 +++++++++--------
 drivers/net/fm10k/fm10k_ethdev.c                   |   6 +-
 drivers/net/i40e/i40e_ethdev.c                     |  76 +++++++------
 drivers/net/i40e/i40e_ethdev_vf.c                  |  11 +-
 drivers/net/ixgbe/ixgbe_ethdev.c                   |  76 ++++++-------
 drivers/net/mlx4/mlx4.c                            |   4 +
 drivers/net/mlx5/mlx5_ethdev.c                     |   3 +
 drivers/net/mpipe/mpipe_tilegx.c                   |  18 +--
 drivers/net/nfp/nfp_net.c                          |   6 +-
 drivers/net/null/rte_eth_null.c                    |   9 +-
 drivers/net/pcap/rte_eth_pcap.c                    |   9 +-
 drivers/net/ring/rte_eth_ring.c                    |  13 ++-
 drivers/net/szedata2/rte_eth_szedata2.c            |   7 +-
 drivers/net/virtio/virtio_ethdev.c                 |   8 +-
 drivers/net/virtio/virtio_ethdev.h                 |   2 -
 drivers/net/vmxnet3/vmxnet3_ethdev.c               |   5 +-
 drivers/net/xenvirt/rte_eth_xenvirt.c              |   9 +-
 examples/exception_path/main.c                     |   2 +-
 examples/ip_fragmentation/main.c                   |   2 +-
 examples/ip_pipeline/config_parse.c                |   3 +-
 examples/ip_pipeline/init.c                        |   2 +-
 examples/ip_reassembly/main.c                      |   2 +-
 examples/ipsec-secgw/ipsec-secgw.c                 |   2 +-
 examples/ipv4_multicast/main.c                     |   2 +-
 examples/kni/main.c                                |   2 +-
 examples/l2fwd-crypto/main.c                       |   2 +-
 examples/l2fwd-ivshmem/host/host.c                 |   2 +-
 examples/l2fwd-jobstats/main.c                     |   2 +-
 examples/l2fwd-keepalive/main.c                    |   2 +-
 examples/l2fwd/main.c                              |   2 +-
 examples/l3fwd-acl/main.c                          |   2 +-
 examples/l3fwd-power/main.c                        |   2 +-
 examples/l3fwd/main.c                              |   2 +-
 examples/link_status_interrupt/main.c              |   2 +-
 examples/load_balancer/init.c                      |   2 +-
 .../client_server_mp/mp_server/init.c              |   2 +-
 examples/multi_process/l2fwd_fork/main.c           |   2 +-
 examples/multi_process/symmetric_mp/main.c         |   2 +-
 examples/performance-thread/l3fwd-thread/main.c    |   2 +-
 lib/librte_ether/rte_ethdev.c                      |  33 ++++++
 lib/librte_ether/rte_ethdev.h                      |  91 +++++++++++----
 lib/librte_ether/rte_ether_version.map             |   1 +
 59 files changed, 503 insertions(+), 365 deletions(-)

-- 
2.7.0



More information about the dev mailing list