[dpdk-dev] [PATCH v6 0/5] ethdev: add speed capabilities and refactor link API
Marc Sune
marcdevel at gmail.com
Sun Oct 25 22:59:55 CET 2015
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).
Minor bugs expected.
* * * * *
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.
Marc Sune (5):
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
ethdev: add rte_eth_speed_to_bm_flag() to ver. map
app/test-pmd/cmdline.c | 124 +++++++++++++++--------------
app/test/virtual_pmd.c | 4 +-
doc/guides/rel_notes/release_2_2.rst | 23 ++++++
drivers/net/af_packet/rte_eth_af_packet.c | 5 +-
drivers/net/bonding/rte_eth_bond_8023ad.c | 14 ++--
drivers/net/cxgbe/base/t4_hw.c | 8 +-
drivers/net/e1000/base/e1000_80003es2lan.c | 6 +-
drivers/net/e1000/base/e1000_82541.c | 8 +-
drivers/net/e1000/base/e1000_82543.c | 4 +-
drivers/net/e1000/base/e1000_82575.c | 11 +--
drivers/net/e1000/base/e1000_api.c | 2 +-
drivers/net/e1000/base/e1000_api.h | 2 +-
drivers/net/e1000/base/e1000_defines.h | 4 +-
drivers/net/e1000/base/e1000_hw.h | 2 +-
drivers/net/e1000/base/e1000_ich8lan.c | 4 +-
drivers/net/e1000/base/e1000_mac.c | 9 ++-
drivers/net/e1000/base/e1000_mac.h | 6 +-
drivers/net/e1000/base/e1000_vf.c | 4 +-
drivers/net/e1000/base/e1000_vf.h | 2 +-
drivers/net/e1000/em_ethdev.c | 109 ++++++++++++-------------
drivers/net/e1000/igb_ethdev.c | 104 +++++++++++++-----------
drivers/net/fm10k/fm10k_ethdev.c | 5 +-
drivers/net/i40e/i40e_ethdev.c | 78 ++++++++++--------
drivers/net/i40e/i40e_ethdev_vf.c | 11 +--
drivers/net/ixgbe/ixgbe_ethdev.c | 74 ++++++++---------
drivers/net/mlx4/mlx4.c | 6 ++
drivers/net/mpipe/mpipe_tilegx.c | 6 +-
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 ++
38 files changed, 501 insertions(+), 322 deletions(-)
--
2.1.4
More information about the dev
mailing list