From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f67.google.com (mail-wm0-f67.google.com [74.125.82.67]) by dpdk.org (Postfix) with ESMTP id D3D57C492 for ; Fri, 29 Jan 2016 01:42:33 +0100 (CET) Received: by mail-wm0-f67.google.com with SMTP id l66so6918223wml.2 for ; Thu, 28 Jan 2016 16:42:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=iIDSpzuSvduqa+6Nk/bdk3434Bi44qzD9gI79l0JPwg=; b=dhXJpp1ijGA6SiOzUxS+OFuNxzVBr2ikLXDTlsHBSAdBN/j9EX/mWgJMA+xlCNgAlb 3Hb3oYzcfzseEHsOUvC2sVyKxyuByZruEyAmA8wbs9E+8rG1Iiyhx9qFVZjtvklh881u yKyM/V22vy16UARXp/jVkYpTllnPk8DYwrNtyQbyy2py1v+gM/iHsLO6DUm1Ivn8uvPq tb+Oip3xwxtaId/+srJl4GilJNWz7UR6i6X7oyBfuVOrsUfW26CRhUTGC7MgbWyYTk48 5DbsgC3bAHEQULlaRBw+pDuycXpz2Pqd7wI9HLN7S4/F+1UEW/kldhqd/KGADbHMyZGp LXtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=iIDSpzuSvduqa+6Nk/bdk3434Bi44qzD9gI79l0JPwg=; b=kXVFI9hcqL75/KUgfrtoMuh1mVTO7RpNkzocAUV0v5oZqkdwKFp5XLX+qqxoE8kNFn 41wHsWlalN0sp5y8kBp5ExtyApxeZGzOoxuiqhCVWBp4HKcyJxOMjXZ8iZT5ViIpNmrb Xr+GOvEegeZyIFIYGFVO0Xs8L99KJPb6LNLLUF5TlW5IK6R22CJ3QTvr8khjvIN4OPEc reNk3lzYcK/plXz/ZeNO34T54gaw8pHpBX9x0skGihEkI6cdtNSZH9ed8pINUZ/VgWT3 2wbTNctFhUtJtl9CPiRWQ+cProJ2sPUUmLBsjh/WwcY46MQbaz2wXjKhtHX+XItSHt/E 0Zuw== X-Gm-Message-State: AG10YOScbqsJsK4IN75nCNxuxs3+x7lyTaVgVobLR4+RXIBGVSvBh0LchnyWdzzSILnsAg== X-Received: by 10.194.58.235 with SMTP id u11mr5854500wjq.52.1454028152708; Thu, 28 Jan 2016 16:42:32 -0800 (PST) Received: from localhost.localdomain (251.Red-79-159-160.dynamicIP.rima-tde.net. [79.159.160.251]) by smtp.gmail.com with ESMTPSA id c26sm4078518wmi.24.2016.01.28.16.42.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 28 Jan 2016 16:42:31 -0800 (PST) From: Marc Sune To: dev@dpdk.org, Wenzhuo Lu , Helin Zhang , Harish Patil , Jing Chen Date: Fri, 29 Jan 2016 01:42:02 +0100 Message-Id: <1454028127-10401-1-git-send-email-marcdevel@gmail.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1445810400-8978-1-git-send-email-marcdevel@gmail.com> References: <1445810400-8978-1-git-send-email-marcdevel@gmail.com> Subject: [dpdk-dev] [PATCH v7 0/5] ethdev: add speed capabilities and refactor link API X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 Jan 2016 00:42:34 -0000 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. 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