From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 7121DA04B5; Mon, 11 Jan 2021 20:03:09 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B9245141019; Mon, 11 Jan 2021 20:02:43 +0100 (CET) Received: from mail-pf1-f177.google.com (mail-pf1-f177.google.com [209.85.210.177]) by mails.dpdk.org (Postfix) with ESMTP id 93C59141019 for ; Mon, 11 Jan 2021 20:02:42 +0100 (CET) Received: by mail-pf1-f177.google.com with SMTP id 11so506771pfu.4 for ; Mon, 11 Jan 2021 11:02:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pensando.io; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=beTohpLfgb6l8rXBS9/XutfXLVnpDbl3xTEDdbcHP5U=; b=AtFEkQbyS4GmKZZxecdA3+MikvRYaXxmUCpZZvuUIe6waQ0WPOA9RJ4PwfiE0p199G FERPgeU3YJeQReexDEKm89JsRFjUat07i2BKZ06Y+DO+IJEqK2+zFYe/nQwtqiEH1IEs qtU+wBCMgFJZ3yfL/4jy6gWAr19ZbnArJGM3xMBOyCumBUmCQCYt5MVlOou/ydyJbKmz LxUxWhpTOVDwD1wxHRrCHjFvau9+S4XzDDVZoGNOzVoJIy0h/sRY0p7SU+sRs+xtJxGC QhSwhcUvADVLellcF28wZ5vpYsPkEBglii4Sq5e2N9t5nMzgA/GpPY+cBIMMfKHsQ538 x6JQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=beTohpLfgb6l8rXBS9/XutfXLVnpDbl3xTEDdbcHP5U=; b=Bd3bAF81Y9v5m4oVPTqxx3FoC2oCvEaw2VZXVN56lQo/9cr8THq+KCcTHPTPeGg21K NK36ztGjLlJlvFetazz0twZq6x7rNwep3nk5FiGW4A1bZOpN/QYUiSMKxhe/vL/hmDHm R4zA/0Cd/+jk4xb/ztEO2mE9VFObz5xtaA2bkM3NfEEc1LzkkPESx32TZy60j7or0oyp d1dmXm9Fd0QHSpcfSzhRXOxv1/nWPux2cujbZ7ujrBtkLMuMbCuAAltssq7tdPbaImQz otGLaYc/TeG9nKfBCIdS2BQUahtyVmH+fZH0q9ZIEN90wHqbU1a86LD3frDkfX6iXQTL vfrw== X-Gm-Message-State: AOAM531W/znhzz3LMklO8fWvdMu/ddhDwECFSAMvYUwZDQK0MFrORRPo TMAINHXJInzVNmlxykgMUE80KyHj5fkR4w== X-Google-Smtp-Source: ABdhPJz2Qg1ZCRdit1l7xiMUonZlrsev47sYtBWTTx28rKrgKdGCEQocmlysV9u0GbOA1bfpac35MA== X-Received: by 2002:a65:498e:: with SMTP id r14mr922410pgs.235.1610391761639; Mon, 11 Jan 2021 11:02:41 -0800 (PST) Received: from driver-dev1.pensando.io ([12.226.153.42]) by smtp.gmail.com with ESMTPSA id x1sm361858pfc.112.2021.01.11.11.02.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Jan 2021 11:02:41 -0800 (PST) From: Andrew Boyer To: dev@dpdk.org Cc: Alfredo Cardigliano , Andrew Boyer Date: Mon, 11 Jan 2021 11:02:09 -0800 Message-Id: <20210111190209.70928-7-aboyer@pensando.io> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210111190209.70928-1-aboyer@pensando.io> References: <20210111190209.70928-1-aboyer@pensando.io> Subject: [dpdk-dev] [PATCH 6/6] net/ionic: correctly set link speed and autonegotiation X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Don't assume autoneg in link_update(). Always call ionic_dev_cmd_port_autoneg() in start(). This allows the client to specify the link settings. Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_ethdev.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/drivers/net/ionic/ionic_ethdev.c b/drivers/net/ionic/ionic_ethdev.c index 838e93ef7..2face7c63 100644 --- a/drivers/net/ionic/ionic_ethdev.c +++ b/drivers/net/ionic/ionic_ethdev.c @@ -276,7 +276,10 @@ ionic_dev_link_update(struct rte_eth_dev *eth_dev, /* Initialize */ memset(&link, 0, sizeof(link)); - link.link_autoneg = ETH_LINK_AUTONEG; + + if (adapter->idev.port_info->config.an_enable) { + link.link_autoneg = ETH_LINK_AUTONEG; + } if (!adapter->link_up || !(lif->state & IONIC_LIF_F_UP)) { @@ -869,7 +872,8 @@ ionic_dev_start(struct rte_eth_dev *eth_dev) struct ionic_lif *lif = IONIC_ETH_DEV_TO_LIF(eth_dev); struct ionic_adapter *adapter = lif->adapter; struct ionic_dev *idev = &adapter->idev; - uint32_t allowed_speeds; + uint32_t speed = 0, allowed_speeds; + uint8_t an_enable; int err; IONIC_PRINT_CALL(); @@ -896,11 +900,23 @@ ionic_dev_start(struct rte_eth_dev *eth_dev) return err; } - if (eth_dev->data->dev_conf.link_speeds & ETH_LINK_SPEED_FIXED) { - uint32_t speed = ionic_parse_link_speeds(dev_conf->link_speeds); + /* Configure link */ + an_enable = (dev_conf->link_speeds & ETH_LINK_SPEED_FIXED) == 0; - if (speed) - ionic_dev_cmd_port_speed(idev, speed); + ionic_dev_cmd_port_autoneg(idev, an_enable); + err = ionic_dev_cmd_wait_check(idev, IONIC_DEVCMD_TIMEOUT); + if (err) + IONIC_PRINT(WARNING, "Failed to %s autonegotiation", + an_enable ? "enable" : "disable"); + + if (!an_enable) + speed = ionic_parse_link_speeds(dev_conf->link_speeds); + if (speed) { + ionic_dev_cmd_port_speed(idev, speed); + err = ionic_dev_cmd_wait_check(idev, IONIC_DEVCMD_TIMEOUT); + if (err) + IONIC_PRINT(WARNING, "Failed to set link speed %u", + speed); } ionic_dev_link_update(eth_dev, 0); -- 2.17.1