From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf0-f175.google.com (mail-pf0-f175.google.com [209.85.192.175]) by dpdk.org (Postfix) with ESMTP id 80EA32C0C for ; Wed, 2 Nov 2016 00:34:28 +0100 (CET) Received: by mail-pf0-f175.google.com with SMTP id n85so102767614pfi.1 for ; Tue, 01 Nov 2016 16:34:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=versa-networks-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=qPqItvbS9xllr7jhUybI9A4AQscs3b/xwoGciAsllO8=; b=2Rd3nE+VbgUKZyLn+DF7LJOardSFUB12RM4SwU3FfxZgMLMr6VaVlWG2LPsJgcGLXq gS322kX7ZnMQcbQdDqUbrTbZ9eM5PKTJCaAkx9uNz7sFJ80VQBx9BrqVNWoNv0KjdaTa XfLRYXTQ9qmR14fQDn3a59WEVpvv0TrEY38BFusuOKB5OukPNI6Lf7pYgBNXe1mE3eW3 b9m/SptwTr1u0oKgprQcS9Iv+wmbSBUd6WD5XFenGo88TPAvEYr3LJLzbTvm2bFuORD0 oAEOKh8DOohcA68a5jn5HMKuhzP5MjqvYvlA2oo5k35spzDJztmf2nzeGZ/Dd7q+qE0v aoeg== 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; bh=qPqItvbS9xllr7jhUybI9A4AQscs3b/xwoGciAsllO8=; b=QUUcfThYlELs7b4vjRELPEQ49x3L+IzF89n2+lw2PITukoeDZEBryyhg9y8DKB5tNO BcwvlSzaSQcqhFX3avcyKoc1excpWRv16/ptbiyon8AtHy4b5soRZr8v6uAOYWFtVSDv k9TWrnuO+j1x31ksCvnNwv2LJddVXoJfW0+gNdaiChdSFs33v0Em/olfdKS3zn1Vlagr 9fWaRYNvhohr4Ucd1WPdHqnc0Aj76NOQU7W0E4ubTwWBwQ/AcgLCcyAVD523LAZEOtI3 S2HaNnkr/izblGWx+KB+EbAsBLTSTGMwJW43q9Xw8cO/h42+whq54N+gRlEUE0nQpo50 ZOyw== X-Gm-Message-State: ABUngvfVahiXcTXxt16cgyD/PrCD5rgDwleB9VHl1qIuyDeN9AdmCsgxUfAFfo3emOopoCEM X-Received: by 10.98.60.7 with SMTP id j7mr1045699pfa.129.1478043267693; Tue, 01 Nov 2016 16:34:27 -0700 (PDT) Received: from ananda-linux.versa-networks.com (70-35-56-62.static.wiline.com. [70.35.56.62]) by smtp.gmail.com with ESMTPSA id l187sm44626737pfc.0.2016.11.01.16.34.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 01 Nov 2016 16:34:27 -0700 (PDT) From: Ananda Sathyanarayana To: wenzhuo.lu@intel.com Date: Tue, 1 Nov 2016 15:47:04 -0700 Message-Id: <1478040424-102624-1-git-send-email-ananda@versa-networks.com> X-Mailer: git-send-email 1.9.1 Cc: dev@dpdk.org Subject: [dpdk-dev] [PATCH] E1000: fix for forced speed/duplex config 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 Nov 2016 23:34:29 -0000 >>From the code, it looks like, hw->mac.autoneg, variable is used to switch between calling either autoneg function or forcing speed/duplex function. But this variable is not modified in eth_em_start/eth_igb_start routines (it is always set to 1) even while forcing the link speed. Following discussion thread has some more information on this http://dpdk.org/ml/archives/dev/2016-October/049272.html Signed-off-by: Ananda Sathyanarayana --- drivers/net/e1000/em_ethdev.c | 16 ++++++++++++++-- drivers/net/e1000/igb_ethdev.c | 16 ++++++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c index 7cf5f0c..a2412f5 100644 --- a/drivers/net/e1000/em_ethdev.c +++ b/drivers/net/e1000/em_ethdev.c @@ -639,6 +639,7 @@ eth_em_start(struct rte_eth_dev *dev) speeds = &dev->data->dev_conf.link_speeds; if (*speeds == ETH_LINK_SPEED_AUTONEG) { hw->phy.autoneg_advertised = E1000_ALL_SPEED_DUPLEX; + hw->mac.autoneg = 1; } else { num_speeds = 0; autoneg = (*speeds & ETH_LINK_SPEED_FIXED) == 0; @@ -672,9 +673,20 @@ eth_em_start(struct rte_eth_dev *dev) hw->phy.autoneg_advertised |= ADVERTISE_1000_FULL; num_speeds++; } - if (num_speeds == 0 || (!autoneg && (num_speeds > 1))) + if (num_speeds == 0 || (!autoneg && (num_speeds > 1))) { goto error_invalid_config; - } + } + /* + * Set/reset the mac.autoneg based on the link speed, + * fixed or not + */ + if (!autoneg) { + hw->mac.autoneg = 0; + hw->mac.forced_speed_duplex = hw->phy.autoneg_advertised; + } else { + hw->mac.autoneg = 1; + } + } e1000_setup_link(hw); diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c index 4924396..9fb498f 100644 --- a/drivers/net/e1000/igb_ethdev.c +++ b/drivers/net/e1000/igb_ethdev.c @@ -1327,6 +1327,7 @@ eth_igb_start(struct rte_eth_dev *dev) speeds = &dev->data->dev_conf.link_speeds; if (*speeds == ETH_LINK_SPEED_AUTONEG) { hw->phy.autoneg_advertised = E1000_ALL_SPEED_DUPLEX; + hw->mac.autoneg = 1; } else { num_speeds = 0; autoneg = (*speeds & ETH_LINK_SPEED_FIXED) == 0; @@ -1360,9 +1361,20 @@ eth_igb_start(struct rte_eth_dev *dev) hw->phy.autoneg_advertised |= ADVERTISE_1000_FULL; num_speeds++; } - if (num_speeds == 0 || (!autoneg && (num_speeds > 1))) + if (num_speeds == 0 || (!autoneg && (num_speeds > 1))) { goto error_invalid_config; - } + } + /* + * Set/reset the mac.autoneg based on the link speed, + * fixed or not + */ + if (!autoneg) { + hw->mac.autoneg = 0; + hw->mac.forced_speed_duplex = hw->phy.autoneg_advertised; + } else { + hw->mac.autoneg = 1; + } + } e1000_setup_link(hw); -- 1.9.1