From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wi0-f175.google.com (mail-wi0-f175.google.com [209.85.212.175]) by dpdk.org (Postfix) with ESMTP id 07B5E8D99 for ; Sun, 4 Oct 2015 23:13:53 +0200 (CEST) Received: by wicgb1 with SMTP id gb1so94481350wic.1 for ; Sun, 04 Oct 2015 14:13:52 -0700 (PDT) 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=6CWWg9NleyxyiorwRMwFPetCRacqiuzvNirZ4xhz1EA=; b=mNyUw37LdZdBpYoi5vEOBbw1yT9G4Gj9o6bx32STJ2ljXwBtlTdFfuMeqlXyWowRIF r8ksmorEizrKodMYn0Mo+lvB0WYksuMGedjftMbBsal0NUWX3LcPVV9KGvmNJSoJl9Fn Pet+CsSFvYgs9vkZqkBHjfTZY5HlGMs0xN9yBxkxbDZGRYydiQew+mS086xrSZhftQtG 89cE9u5XFm4d9i4lzyvvmVbI032S34vTYTdMbTEONmY6Bc1o/QoEhn2XUQTFbksfSa4l c7YvcIPaWrb/o4v+qJLHl+fw3MPAtBlM//HM/QNLGoQLbZNMtfuWgtAKWxPksPPL3HfN kheQ== X-Received: by 10.194.176.6 with SMTP id ce6mr26538160wjc.101.1443993232896; Sun, 04 Oct 2015 14:13:52 -0700 (PDT) Received: from localhost.localdomain (22.Red-83-53-192.dynamicIP.rima-tde.net. [83.53.192.22]) by smtp.gmail.com with ESMTPSA id uq5sm23401596wjc.3.2015.10.04.14.13.51 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 04 Oct 2015 14:13:52 -0700 (PDT) From: Marc Sune To: dev@dpdk.org Date: Sun, 4 Oct 2015 23:12:43 +0200 Message-Id: <1443993167-1150-1-git-send-email-marcdevel@gmail.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1440807373-24770-1-git-send-email-marc.sune@bisdn.de> References: <1440807373-24770-1-git-send-email-marc.sune@bisdn.de> Subject: [dpdk-dev] [PATCH v5 0/4] 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: Sun, 04 Oct 2015 21:13:53 -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). 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. 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-pmd/cmdline.c | 124 +++++++++++++++-------------- app/test/virtual_pmd.c | 4 +- doc/guides/rel_notes/release_2_2.rst | 22 ++++- 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 | 104 ++++++++++++------------ drivers/net/e1000/igb_ethdev.c | 99 ++++++++++++----------- drivers/net/fm10k/fm10k_ethdev.c | 5 +- drivers/net/i40e/i40e_ethdev.c | 75 +++++++++-------- 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/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 +++++++++++++++++----- 35 files changed, 481 insertions(+), 318 deletions(-) -- 2.1.4