From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f68.google.com (mail-wm0-f68.google.com [74.125.82.68]) by dpdk.org (Postfix) with ESMTP id 78C347EB0 for ; Tue, 1 Mar 2016 01:46:05 +0100 (CET) Received: by mail-wm0-f68.google.com with SMTP id l68so1507782wml.3 for ; Mon, 29 Feb 2016 16:46:05 -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=uSQglTJ5SWGuElpzoHsTrTmQzNUZCiUQGY2m7+2WvRA=; b=kZK6Asqpiq3EpKvrJqcmBQKEF9GugveVq+PQ0f+8P2H97utZLW4N9I7rIOvn5ydc8r WaYMA8Dg//L5SrbausiLtQGtRX9oQQBMsGG+dn+wjteRKYxqFiHzIyQ5V7Bnl3KYUPp+ fyfXIJyxt+BmTvYGUptEUGTMn77RaYS/mvUYIUowNEliPZyC+xZbRhkIDLIPiWap1O+B VUxm0DYrb8YVjJ3eTIANunUitaOvTmJ32OUnd/jT3QmAOcCFDYXLVGAaC7M0VKdmK8GK k5W+xG2dDAOuZfwrJ21foCJr3Z7632/RLkD+KLaFLYmG0Nll+pdV8dHT3ftAENDiPujq gixA== 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=uSQglTJ5SWGuElpzoHsTrTmQzNUZCiUQGY2m7+2WvRA=; b=kxQxfv4/D0P0wj6bFiru507f7ZTreZ9/PHUb8cmoSceoZ/9hYL82k3XTcuP8GrbWFH gWJgzzoaDw+BiwfgOp1yXNfH5nYZIKS0Y6Bhvz3pczok+FOE19iHBrQerI3x7srjTvXt Y/MV2VAuAjwjS4GHIKMQL6C9O1FzVflR73obDOPmy7nIBEHYKafunw9iHQYBEvp/RJYM lnEhwolVK3c3Fswkff9UBd6yyjzFMZWZ21N940rJ6LQu+QV6dpQGObPjpFg6ouoQa0Mi SAPX1pNqvZe9Af5/pB2ZUUKlMuNY6ZT96Hg6NW3jX50Rc74x8HAESsdSOA+YMm6B8V2U sO/g== X-Gm-Message-State: AD7BkJJHD8RSGY3K8Wnj0WToGVNChXHJfkok4tuU2VwlgbHIKhNODUJBkIhEAdLFCr61DA== X-Received: by 10.28.60.11 with SMTP id j11mr580376wma.99.1456793165303; Mon, 29 Feb 2016 16:46:05 -0800 (PST) Received: from localhost.localdomain (84.Red-83-63-204.staticIP.rima-tde.net. [83.63.204.84]) by smtp.gmail.com with ESMTPSA id v66sm18666770wmb.18.2016.02.29.16.46.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 29 Feb 2016 16:46:04 -0800 (PST) From: Marc Sune To: "dev@dpdk.org" , "Lu, Wenzhuo" , "Zhang, Helin" , "Harish Patil" , "Chen, Jing D" Date: Tue, 1 Mar 2016 01:45:47 +0100 Message-Id: <1456793151-1475-1-git-send-email-marcdevel@gmail.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1455488259-1000-1-git-send-email-marcdevel@gmail.com> References: <1455488259-1000-1-git-send-email-marcdevel@gmail.com> Subject: [dpdk-dev] [PATCH v9 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: Tue, 01 Mar 2016 00:46:05 -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. 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. 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-pipeline/init.c | 2 +- app/test-pmd/cmdline.c | 124 +++++++++++++++--------------- app/test-pmd/config.c | 4 +- app/test/virtual_pmd.c | 4 +- doc/guides/nics/overview.rst | 1 + doc/guides/rel_notes/release_16_04.rst | 27 +++++++ drivers/net/af_packet/rte_eth_af_packet.c | 5 +- drivers/net/bnx2x/bnx2x_ethdev.c | 7 +- drivers/net/bonding/rte_eth_bond_8023ad.c | 14 ++-- drivers/net/cxgbe/base/t4_hw.c | 8 +- drivers/net/cxgbe/cxgbe_ethdev.c | 1 + drivers/net/e1000/em_ethdev.c | 112 ++++++++++++++------------- drivers/net/e1000/igb_ethdev.c | 107 +++++++++++++++----------- drivers/net/fm10k/fm10k_ethdev.c | 6 +- drivers/net/i40e/i40e_ethdev.c | 78 +++++++++++-------- drivers/net/i40e/i40e_ethdev_vf.c | 11 +-- drivers/net/ixgbe/ixgbe_ethdev.c | 80 +++++++++---------- drivers/net/mlx4/mlx4.c | 6 ++ drivers/net/mlx5/mlx5_ethdev.c | 7 ++ drivers/net/mpipe/mpipe_tilegx.c | 6 +- drivers/net/nfp/nfp_net.c | 4 +- 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 ++ 32 files changed, 501 insertions(+), 301 deletions(-) -- 2.1.4