From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9CF2FA0597 for ; Thu, 9 Apr 2020 11:21:52 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 6C5551C1B4; Thu, 9 Apr 2020 11:21:52 +0200 (CEST) Received: from us-smtp-delivery-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) by dpdk.org (Postfix) with ESMTP id 039B41C1B4 for ; Thu, 9 Apr 2020 11:21:50 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1586424110; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=wAGF7TXbhkB33BZODi1l7Cr1nRDBSbYMHEzzKa4AvOY=; b=CCAldqbQWGg+/+1c4H31OTb09Z/60UeistXFqP60ubXrjEENscVYoDa+LLOl0/+0dlG0h0 o2/eSD1NEJBYF367Nh3ctgaLRumwUI2ZpHHLZPqciRDUfagnTMzb5oabshQ3r3yXntayoI DjG9b8UtH2FjoaBisnpbEsMa2dn/XyU= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-45-b2nmW9fWMF-FgxEbAA4YKQ-1; Thu, 09 Apr 2020 05:21:46 -0400 X-MC-Unique: b2nmW9fWMF-FgxEbAA4YKQ-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 8D273140A; Thu, 9 Apr 2020 09:21:45 +0000 (UTC) Received: from [10.33.37.28] (unknown [10.33.37.28]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4946A10027AC; Thu, 9 Apr 2020 09:21:44 +0000 (UTC) To: Xiaoyun Li , xiaolong.ye@intel.com, stable@dpdk.org References: <20200331023134.19483-1-xiaoyun.li@intel.com> From: Kevin Traynor Autocrypt: addr=ktraynor@redhat.com; keydata= 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 Message-ID: <7a186f6f-d91c-714b-5a74-102c32369752@redhat.com> Date: Thu, 9 Apr 2020 10:21:43 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0 MIME-Version: 1.0 In-Reply-To: <20200331023134.19483-1-xiaoyun.li@intel.com> Content-Language: en-US X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [dpdk-stable] [PATCH] net/i40e/base: backport 19.11 base code to 18.11.5 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" On 31/03/2020 03:31, Xiaoyun Li wrote: > Backport 19.11 base code to 18.11.5 stable release. >=20 > Signed-off-by: Xiaoyun Li >=20 > --- > Note: > This breaks the backward compatibility for the stable trees but Thank you for sharing this information explicitly. Backwards compatiblity is considered required for stable, so this is not suitable for applying to the the 18.11 stable branch. Kevin. > intendent for customers willing to get the fix to support all > X722 devices with NVMe 4.10. > --- > drivers/net/i40e/base/README | 34 +------ > drivers/net/i40e/base/i40e_adminq.c | 119 ++++++++++++++++-------- > drivers/net/i40e/base/i40e_adminq_cmd.h | 55 +---------- > drivers/net/i40e/base/i40e_common.c | 8 +- > drivers/net/i40e/base/i40e_devids.h | 4 +- > drivers/net/i40e/base/i40e_type.h | 8 +- > drivers/net/i40e/base/meson.build | 6 +- > drivers/net/i40e/i40e_ethdev.c | 3 + > 8 files changed, 103 insertions(+), 134 deletions(-) >=20 > diff --git a/drivers/net/i40e/base/README b/drivers/net/i40e/base/README > index 84f191fad..8a5339cff 100644 > --- a/drivers/net/i40e/base/README > +++ b/drivers/net/i40e/base/README > @@ -1,34 +1,6 @@ > -.. > - BSD LICENSE > - > - Copyright(c) 2017 Intel Corporation. All rights reserved. > - All rights reserved. > - > - Redistribution and use in source and binary forms, with or without > - modification, are permitted provided that the following conditions > - are met: > - > - * Redistributions of source code must retain the above copyright > - notice, this list of conditions and the following disclaimer. > - * Redistributions in binary form must reproduce the above copyrig= ht > - notice, this list of conditions and the following disclaimer in > - the documentation and/or other materials provided with the > - distribution. > - * Neither the name of Intel Corporation nor the names of its > - contributors may be used to endorse or promote products derived > - from this software without specific prior written permission. > - > - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS > - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT > - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS F= OR > - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGH= T > - OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTA= L, > - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT > - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF US= E, > - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON A= NY > - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT > - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE U= SE > - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE= . > +/* SPDX-License-Identifier: BSD-3-Clause > + * Copyright(c) 2017 Intel Corporation > + */ > =20 > Intel=C2=AE I40E driver > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > diff --git a/drivers/net/i40e/base/i40e_adminq.c b/drivers/net/i40e/base/= i40e_adminq.c > index 38214a373..a0911c18e 100644 > --- a/drivers/net/i40e/base/i40e_adminq.c > +++ b/drivers/net/i40e/base/i40e_adminq.c > @@ -569,6 +569,64 @@ STATIC void i40e_resume_aq(struct i40e_hw *hw) > } > #endif /* PF_DRIVER */ > =20 > +/** > + * i40e_set_hw_flags - set HW flags > + * @hw: pointer to the hardware structure > + **/ > +STATIC void i40e_set_hw_flags(struct i40e_hw *hw) > +{ > +=09struct i40e_adminq_info *aq =3D &hw->aq; > + > +=09hw->flags =3D 0; > + > +=09switch (hw->mac.type) { > +=09case I40E_MAC_XL710: > +=09=09if (aq->api_maj_ver > 1 || > +=09=09 (aq->api_maj_ver =3D=3D 1 && > +=09=09 aq->api_min_ver >=3D I40E_MINOR_VER_GET_LINK_INFO_XL710)) { > +=09=09=09hw->flags |=3D I40E_HW_FLAG_AQ_PHY_ACCESS_CAPABLE; > +=09=09=09hw->flags |=3D I40E_HW_FLAG_FW_LLDP_STOPPABLE; > +=09=09=09/* The ability to RX (not drop) 802.1ad frames */ > +=09=09=09hw->flags |=3D I40E_HW_FLAG_802_1AD_CAPABLE; > +=09=09} > +=09=09break; > +=09case I40E_MAC_X722: > +=09=09hw->flags |=3D I40E_HW_FLAG_AQ_SRCTL_ACCESS_ENABLE | > +=09=09=09 I40E_HW_FLAG_NVM_READ_REQUIRES_LOCK; > + > +=09=09if (aq->api_maj_ver > 1 || > +=09=09 (aq->api_maj_ver =3D=3D 1 && > +=09=09 aq->api_min_ver >=3D I40E_MINOR_VER_FW_LLDP_STOPPABLE_X722)) > +=09=09=09hw->flags |=3D I40E_HW_FLAG_FW_LLDP_STOPPABLE; > + > +=09=09if (aq->api_maj_ver > 1 || > +=09=09 (aq->api_maj_ver =3D=3D 1 && > +=09=09 aq->api_min_ver >=3D I40E_MINOR_VER_GET_LINK_INFO_X722)) > +=09=09=09hw->flags |=3D I40E_HW_FLAG_AQ_PHY_ACCESS_CAPABLE; > +=09=09/* fall through */ > +=09default: > +=09=09break; > +=09} > + > +=09/* Newer versions of firmware require lock when reading the NVM */ > +=09if (aq->api_maj_ver > 1 || > +=09 (aq->api_maj_ver =3D=3D 1 && > +=09 aq->api_min_ver >=3D 5)) > +=09=09hw->flags |=3D I40E_HW_FLAG_NVM_READ_REQUIRES_LOCK; > + > +=09if (aq->api_maj_ver > 1 || > +=09 (aq->api_maj_ver =3D=3D 1 && > +=09 aq->api_min_ver >=3D 8)) { > +=09=09hw->flags |=3D I40E_HW_FLAG_FW_LLDP_PERSISTENT; > +=09=09hw->flags |=3D I40E_HW_FLAG_DROP_MODE; > +=09} > + > +=09if (aq->api_maj_ver > 1 || > +=09 (aq->api_maj_ver =3D=3D 1 && > +=09 aq->api_min_ver >=3D 9)) > +=09=09hw->flags |=3D I40E_HW_FLAG_AQ_PHY_ACCESS_EXTENDED; > +} > + > /** > * i40e_init_adminq - main initialization routine for Admin Queue > * @hw: pointer to the hardware structure > @@ -582,25 +640,24 @@ STATIC void i40e_resume_aq(struct i40e_hw *hw) > **/ > enum i40e_status_code i40e_init_adminq(struct i40e_hw *hw) > { > +=09struct i40e_adminq_info *aq =3D &hw->aq; > +=09enum i40e_status_code ret_code; > #ifdef PF_DRIVER > =09u16 cfg_ptr, oem_hi, oem_lo; > =09u16 eetrack_lo, eetrack_hi; > -#endif > -=09enum i40e_status_code ret_code; > -#ifdef PF_DRIVER > =09int retry =3D 0; > #endif > =20 > =09/* verify input for valid configuration */ > -=09if ((hw->aq.num_arq_entries =3D=3D 0) || > -=09 (hw->aq.num_asq_entries =3D=3D 0) || > -=09 (hw->aq.arq_buf_size =3D=3D 0) || > -=09 (hw->aq.asq_buf_size =3D=3D 0)) { > +=09if (aq->num_arq_entries =3D=3D 0 || > +=09 aq->num_asq_entries =3D=3D 0 || > +=09 aq->arq_buf_size =3D=3D 0 || > +=09 aq->asq_buf_size =3D=3D 0) { > =09=09ret_code =3D I40E_ERR_CONFIG; > =09=09goto init_adminq_exit; > =09} > -=09i40e_init_spinlock(&hw->aq.asq_spinlock); > -=09i40e_init_spinlock(&hw->aq.arq_spinlock); > +=09i40e_init_spinlock(&aq->asq_spinlock); > +=09i40e_init_spinlock(&aq->arq_spinlock); > =20 > =09/* Set up register offsets */ > =09i40e_adminq_init_regs(hw); > @@ -630,11 +687,11 @@ enum i40e_status_code i40e_init_adminq(struct i40e_= hw *hw) > =09 */ > =09do { > =09=09ret_code =3D i40e_aq_get_firmware_version(hw, > -=09=09=09=09=09=09=09&hw->aq.fw_maj_ver, > -=09=09=09=09=09=09=09&hw->aq.fw_min_ver, > -=09=09=09=09=09=09=09&hw->aq.fw_build, > -=09=09=09=09=09=09=09&hw->aq.api_maj_ver, > -=09=09=09=09=09=09=09&hw->aq.api_min_ver, > +=09=09=09=09=09=09=09&aq->fw_maj_ver, > +=09=09=09=09=09=09=09&aq->fw_min_ver, > +=09=09=09=09=09=09=09&aq->fw_build, > +=09=09=09=09=09=09=09&aq->api_maj_ver, > +=09=09=09=09=09=09=09&aq->api_min_ver, > =09=09=09=09=09=09=09NULL); > =09=09if (ret_code !=3D I40E_ERR_ADMIN_QUEUE_TIMEOUT) > =09=09=09break; > @@ -645,6 +702,12 @@ enum i40e_status_code i40e_init_adminq(struct i40e_h= w *hw) > =09if (ret_code !=3D I40E_SUCCESS) > =09=09goto init_adminq_free_arq; > =20 > +=09/* > +=09 * Some features were introduced in different FW API version > +=09 * for different MAC type. > +=09 */ > +=09i40e_set_hw_flags(hw); > + > =09/* get the NVM version info */ > =09i40e_read_nvm_word(hw, I40E_SR_NVM_DEV_STARTER_VERSION, > =09=09=09 &hw->nvm.version); > @@ -658,30 +721,6 @@ enum i40e_status_code i40e_init_adminq(struct i40e_h= w *hw) > =09=09=09 &oem_lo); > =09hw->nvm.oem_ver =3D ((u32)oem_hi << 16) | oem_lo; > =20 > -=09/* The ability to RX (not drop) 802.1ad frames was added in API 1.7 *= / > -=09if ((hw->aq.api_maj_ver > 1) || > -=09 ((hw->aq.api_maj_ver =3D=3D 1) && > -=09 (hw->aq.api_min_ver >=3D 7))) > -=09=09hw->flags |=3D I40E_HW_FLAG_802_1AD_CAPABLE; > - > -=09if (hw->mac.type =3D=3D I40E_MAC_XL710 && > -=09 hw->aq.api_maj_ver =3D=3D I40E_FW_API_VERSION_MAJOR && > -=09 hw->aq.api_min_ver >=3D I40E_MINOR_VER_GET_LINK_INFO_XL710) { > -=09=09hw->flags |=3D I40E_HW_FLAG_AQ_PHY_ACCESS_CAPABLE; > -=09=09hw->flags |=3D I40E_HW_FLAG_FW_LLDP_STOPPABLE; > -=09} > -=09if (hw->mac.type =3D=3D I40E_MAC_X722 && > -=09 hw->aq.api_maj_ver =3D=3D I40E_FW_API_VERSION_MAJOR && > -=09 hw->aq.api_min_ver >=3D I40E_MINOR_VER_FW_LLDP_STOPPABLE_X722) { > -=09=09hw->flags |=3D I40E_HW_FLAG_FW_LLDP_STOPPABLE; > -=09} > - > -=09/* Newer versions of firmware require lock when reading the NVM */ > -=09if ((hw->aq.api_maj_ver > 1) || > -=09 ((hw->aq.api_maj_ver =3D=3D 1) && > -=09 (hw->aq.api_min_ver >=3D 5))) > -=09=09hw->flags |=3D I40E_HW_FLAG_NVM_READ_REQUIRES_LOCK; > - > =09if (hw->aq.api_maj_ver > I40E_FW_API_VERSION_MAJOR) { > =09=09ret_code =3D I40E_ERR_FIRMWARE_API_VERSION; > =09=09goto init_adminq_free_arq; > @@ -705,8 +744,8 @@ enum i40e_status_code i40e_init_adminq(struct i40e_hw= *hw) > init_adminq_free_asq: > =09i40e_shutdown_asq(hw); > init_adminq_destroy_spinlocks: > -=09i40e_destroy_spinlock(&hw->aq.asq_spinlock); > -=09i40e_destroy_spinlock(&hw->aq.arq_spinlock); > +=09i40e_destroy_spinlock(&aq->asq_spinlock); > +=09i40e_destroy_spinlock(&aq->arq_spinlock); > =20 > init_adminq_exit: > =09return ret_code; > diff --git a/drivers/net/i40e/base/i40e_adminq_cmd.h b/drivers/net/i40e/b= ase/i40e_adminq_cmd.h > index cf6ef63e3..562cedbdc 100644 > --- a/drivers/net/i40e/base/i40e_adminq_cmd.h > +++ b/drivers/net/i40e/base/i40e_adminq_cmd.h > @@ -12,8 +12,8 @@ > */ > =20 > #define I40E_FW_API_VERSION_MAJOR=090x0001 > -#define I40E_FW_API_VERSION_MINOR_X722=090x0006 > -#define I40E_FW_API_VERSION_MINOR_X710=090x0007 > +#define I40E_FW_API_VERSION_MINOR_X722=090x0009 > +#define I40E_FW_API_VERSION_MINOR_X710=090x0009 > =20 > #define I40E_FW_MINOR_VERSION(_h) ((_h)->mac.type =3D=3D I40E_MAC_XL710 = ? \ > =09=09=09=09=09I40E_FW_API_VERSION_MINOR_X710 : \ > @@ -21,6 +21,8 @@ > =20 > /* API version 1.7 implements additional link and PHY-specific APIs */ > #define I40E_MINOR_VER_GET_LINK_INFO_XL710 0x0007 > +/* API version 1.9 for X722 implements additional link and PHY-specific = APIs */ > +#define I40E_MINOR_VER_GET_LINK_INFO_X722 0x0009 > /* API version 1.6 for X722 devices adds ability to stop FW LLDP agent *= / > #define I40E_MINOR_VER_FW_LLDP_STOPPABLE_X722 0x0006 > =20 > @@ -1935,17 +1937,14 @@ enum i40e_aq_phy_type { > =09I40E_PHY_TYPE_25GBASE_LR=09=09=3D 0x22, > =09I40E_PHY_TYPE_25GBASE_AOC=09=09=3D 0x23, > =09I40E_PHY_TYPE_25GBASE_ACC=09=09=3D 0x24, > -#ifdef CARLSVILLE_HW > =09I40E_PHY_TYPE_2_5GBASE_T=09=09=3D 0x30, > =09I40E_PHY_TYPE_5GBASE_T=09=09=09=3D 0x31, > -#endif > =09I40E_PHY_TYPE_MAX, > =09I40E_PHY_TYPE_NOT_SUPPORTED_HIGH_TEMP=09=3D 0xFD, > =09I40E_PHY_TYPE_EMPTY=09=09=09=3D 0xFE, > =09I40E_PHY_TYPE_DEFAULT=09=09=09=3D 0xFF, > }; > =20 > -#ifdef CARLSVILLE_HW > #define I40E_PHY_TYPES_BITMASK (BIT_ULL(I40E_PHY_TYPE_SGMII) | \ > =09=09=09=09BIT_ULL(I40E_PHY_TYPE_1000BASE_KX) | \ > =09=09=09=09BIT_ULL(I40E_PHY_TYPE_10GBASE_KX4) | \ > @@ -1984,66 +1983,22 @@ enum i40e_aq_phy_type { > =09=09=09=09BIT_ULL(I40E_PHY_TYPE_25GBASE_ACC) | \ > =09=09=09=09BIT_ULL(I40E_PHY_TYPE_2_5GBASE_T) | \ > =09=09=09=09BIT_ULL(I40E_PHY_TYPE_5GBASE_T)) > -#else > -#define I40E_PHY_TYPES_BITMASK (BIT_ULL(I40E_PHY_TYPE_SGMII) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_1000BASE_KX) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_10GBASE_KX4) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_10GBASE_KR) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_40GBASE_KR4) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_XAUI) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_XFI) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_SFI) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_XLAUI) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_XLPPI) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_40GBASE_CR4_CU) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_10GBASE_CR1_CU) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_10GBASE_AOC) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_40GBASE_AOC) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_UNRECOGNIZED) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_UNSUPPORTED) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_100BASE_TX) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_1000BASE_T) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_10GBASE_T) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_10GBASE_SR) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_10GBASE_LR) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_10GBASE_SFPP_CU) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_10GBASE_CR1) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_40GBASE_CR4) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_40GBASE_SR4) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_40GBASE_LR4) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_1000BASE_SX) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_1000BASE_LX) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_1000BASE_T_OPTICAL) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_20GBASE_KR2) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_25GBASE_KR) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_25GBASE_CR) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_25GBASE_SR) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_25GBASE_LR) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_25GBASE_AOC) | \ > -=09=09=09=09BIT_ULL(I40E_PHY_TYPE_25GBASE_ACC)) > -#endif > =20 > -#ifdef CARLSVILLE_HW > #define I40E_LINK_SPEED_2_5GB_SHIFT=090x0 > -#endif > #define I40E_LINK_SPEED_100MB_SHIFT=090x1 > #define I40E_LINK_SPEED_1000MB_SHIFT=090x2 > #define I40E_LINK_SPEED_10GB_SHIFT=090x3 > #define I40E_LINK_SPEED_40GB_SHIFT=090x4 > #define I40E_LINK_SPEED_20GB_SHIFT=090x5 > #define I40E_LINK_SPEED_25GB_SHIFT=090x6 > -#ifdef CARLSVILLE_HW > #define I40E_LINK_SPEED_5GB_SHIFT=090x7 > -#endif > =20 > enum i40e_aq_link_speed { > =09I40E_LINK_SPEED_UNKNOWN=09=3D 0, > =09I40E_LINK_SPEED_100MB=09=3D (1 << I40E_LINK_SPEED_100MB_SHIFT), > =09I40E_LINK_SPEED_1GB=09=3D (1 << I40E_LINK_SPEED_1000MB_SHIFT), > -#ifdef CARLSVILLE_HW > =09I40E_LINK_SPEED_2_5GB=09=3D (1 << I40E_LINK_SPEED_2_5GB_SHIFT), > =09I40E_LINK_SPEED_5GB=09=3D (1 << I40E_LINK_SPEED_5GB_SHIFT), > -#endif > =09I40E_LINK_SPEED_10GB=09=3D (1 << I40E_LINK_SPEED_10GB_SHIFT), > =09I40E_LINK_SPEED_40GB=09=3D (1 << I40E_LINK_SPEED_40GB_SHIFT), > =09I40E_LINK_SPEED_20GB=09=3D (1 << I40E_LINK_SPEED_20GB_SHIFT), > @@ -2089,10 +2044,8 @@ struct i40e_aq_get_phy_abilities_resp { > #define I40E_AQ_PHY_TYPE_EXT_25G_LR=090x08 > #define I40E_AQ_PHY_TYPE_EXT_25G_AOC=090x10 > #define I40E_AQ_PHY_TYPE_EXT_25G_ACC=090x20 > -#ifdef CARLSVILLE_HW > #define I40E_AQ_PHY_TYPE_EXT_2_5GBASE_T=090x40 > #define I40E_AQ_PHY_TYPE_EXT_5GBASE_T=090x80 > -#endif > =09u8=09fec_cfg_curr_mod_ext_info; > #define I40E_AQ_ENABLE_FEC_KR=09=090x01 > #define I40E_AQ_ENABLE_FEC_RS=09=090x02 > diff --git a/drivers/net/i40e/base/i40e_common.c b/drivers/net/i40e/base/= i40e_common.c > index 8a98afff1..37911a99e 100644 > --- a/drivers/net/i40e/base/i40e_common.c > +++ b/drivers/net/i40e/base/i40e_common.c > @@ -35,13 +35,13 @@ STATIC enum i40e_status_code i40e_set_mac_type(struct= i40e_hw *hw) > =09=09case I40E_DEV_ID_QSFP_C: > =09=09case I40E_DEV_ID_10G_BASE_T: > =09=09case I40E_DEV_ID_10G_BASE_T4: > -#ifdef CARLSVILLE_HW > =09=09case I40E_DEV_ID_10G_BASE_T_BC: > -#endif > =09=09case I40E_DEV_ID_20G_KR2: > =09=09case I40E_DEV_ID_20G_KR2_A: > =09=09case I40E_DEV_ID_25G_B: > =09=09case I40E_DEV_ID_25G_SFP28: > +=09=09case I40E_DEV_ID_X710_N3000: > +=09=09case I40E_DEV_ID_XXV710_N3000: > =09=09=09hw->mac.type =3D I40E_MAC_XL710; > =09=09=09break; > #ifdef X722_A0_SUPPORT > @@ -1263,10 +1263,8 @@ STATIC enum i40e_media_type i40e_get_media_type(st= ruct i40e_hw *hw) > =09=09break; > =09case I40E_PHY_TYPE_100BASE_TX: > =09case I40E_PHY_TYPE_1000BASE_T: > -#ifdef CARLSVILLE_HW > =09case I40E_PHY_TYPE_2_5GBASE_T: > =09case I40E_PHY_TYPE_5GBASE_T: > -#endif > =09case I40E_PHY_TYPE_10GBASE_T: > =09=09media =3D I40E_MEDIA_TYPE_BASET; > =09=09break; > @@ -6701,9 +6699,7 @@ enum i40e_status_code i40e_write_phy_register(struc= t i40e_hw *hw, > =09=09break; > =09case I40E_DEV_ID_10G_BASE_T: > =09case I40E_DEV_ID_10G_BASE_T4: > -#ifdef CARLSVILLE_HW > =09case I40E_DEV_ID_10G_BASE_T_BC: > -#endif > =09case I40E_DEV_ID_10G_BASE_T_X722: > =09case I40E_DEV_ID_25G_B: > =09case I40E_DEV_ID_25G_SFP28: > diff --git a/drivers/net/i40e/base/i40e_devids.h b/drivers/net/i40e/base/= i40e_devids.h > index 8b667c2af..f3c59bdea 100644 > --- a/drivers/net/i40e/base/i40e_devids.h > +++ b/drivers/net/i40e/base/i40e_devids.h > @@ -22,9 +22,9 @@ > #define I40E_DEV_ID_10G_BASE_T4=09=090x1589 > #define I40E_DEV_ID_25G_B=09=090x158A > #define I40E_DEV_ID_25G_SFP28=09=090x158B > -#ifdef CARLSVILLE_HW > +#define I40E_DEV_ID_X710_N3000 0x0CF8 > +#define I40E_DEV_ID_XXV710_N3000=090x0D58 > #define I40E_DEV_ID_10G_BASE_T_BC=090x15FF > -#endif > #if defined(INTEGRATED_VF) || defined(VF_DRIVER) || defined(I40E_NDIS_SU= PPORT) > #define I40E_DEV_ID_VF=09=09=090x154C > #define I40E_DEV_ID_VF_HV=09=090x1571 > diff --git a/drivers/net/i40e/base/i40e_type.h b/drivers/net/i40e/base/i4= 0e_type.h > index 7ba62cc12..5988003df 100644 > --- a/drivers/net/i40e/base/i40e_type.h > +++ b/drivers/net/i40e/base/i40e_type.h > @@ -329,14 +329,12 @@ struct i40e_phy_info { > =09=09=09=09=09 I40E_PHY_TYPE_OFFSET) > #define I40E_CAP_PHY_TYPE_25GBASE_ACC BIT_ULL(I40E_PHY_TYPE_25GBASE_ACC = + \ > =09=09=09=09=09 I40E_PHY_TYPE_OFFSET) > -#ifdef CARLSVILLE_HW > /* Offset for 2.5G/5G PHY Types value to bit number conversion */ > #define I40E_PHY_TYPE_OFFSET2 (-10) > #define I40E_CAP_PHY_TYPE_2_5GBASE_T BIT_ULL(I40E_PHY_TYPE_2_5GBASE_T + = \ > =09=09=09=09=09 I40E_PHY_TYPE_OFFSET2) > #define I40E_CAP_PHY_TYPE_5GBASE_T BIT_ULL(I40E_PHY_TYPE_5GBASE_T + \ > =09=09=09=09=09 I40E_PHY_TYPE_OFFSET2) > -#endif > #define I40E_HW_CAP_MAX_GPIO=09=09=0930 > #define I40E_HW_CAP_MDIO_PORT_MODE_MDIO=09=090 > #define I40E_HW_CAP_MDIO_PORT_MODE_I2C=09=091 > @@ -662,6 +660,9 @@ struct i40e_hw { > =09struct i40e_nvm_info nvm; > =09struct i40e_fc_info fc; > =20 > +=09/* switch device is used to get link status when i40e is in ipn3ke */ > +=09struct rte_eth_dev *switch_dev; > + > =09/* pci info */ > =09u16 device_id; > =09u16 vendor_id; > @@ -722,6 +723,9 @@ struct i40e_hw { > #define I40E_HW_FLAG_AQ_PHY_ACCESS_CAPABLE BIT_ULL(2) > #define I40E_HW_FLAG_NVM_READ_REQUIRES_LOCK BIT_ULL(3) > #define I40E_HW_FLAG_FW_LLDP_STOPPABLE=09 BIT_ULL(4) > +#define I40E_HW_FLAG_FW_LLDP_PERSISTENT BIT_ULL(5) > +#define I40E_HW_FLAG_AQ_PHY_ACCESS_EXTENDED BIT_ULL(6) > +#define I40E_HW_FLAG_DROP_MODE BIT_ULL(7) > =09u64 flags; > =20 > =09/* Used in set switch config AQ command */ > diff --git a/drivers/net/i40e/base/meson.build b/drivers/net/i40e/base/me= son.build > index d4c8f872d..3dee8c975 100644 > --- a/drivers/net/i40e/base/meson.build > +++ b/drivers/net/i40e/base/meson.build > @@ -12,8 +12,10 @@ sources =3D [ > ] > =20 > error_cflags =3D ['-Wno-sign-compare', '-Wno-unused-value', > -=09=09'-Wno-format', '-Wno-error=3Dformat-security', > -=09=09'-Wno-strict-aliasing', '-Wno-unused-but-set-variable' > +=09=09'-Wno-format', '-Wno-format-security', > +=09=09'-Wno-format-nonliteral', > +=09=09'-Wno-strict-aliasing', '-Wno-unused-but-set-variable', > +=09=09'-Wno-unused-parameter', > ] > c_args =3D cflags > if allow_experimental_apis > diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethde= v.c > index b1b145f32..0cad6ffad 100644 > --- a/drivers/net/i40e/i40e_ethdev.c > +++ b/drivers/net/i40e/i40e_ethdev.c > @@ -430,6 +430,9 @@ static const struct rte_pci_id pci_id_i40e_map[] =3D = { > =09{ RTE_PCI_DEVICE(I40E_INTEL_VENDOR_ID, I40E_DEV_ID_1G_BASE_T_X722) }, > =09{ RTE_PCI_DEVICE(I40E_INTEL_VENDOR_ID, I40E_DEV_ID_10G_BASE_T_X722) }= , > =09{ RTE_PCI_DEVICE(I40E_INTEL_VENDOR_ID, I40E_DEV_ID_SFP_I_X722) }, > +=09{ RTE_PCI_DEVICE(I40E_INTEL_VENDOR_ID, I40E_DEV_ID_X710_N3000) }, > +=09{ RTE_PCI_DEVICE(I40E_INTEL_VENDOR_ID, I40E_DEV_ID_XXV710_N3000) }, > +=09{ RTE_PCI_DEVICE(I40E_INTEL_VENDOR_ID, I40E_DEV_ID_10G_BASE_T_BC) }, > =09{ .vendor_id =3D 0, /* sentinel */ }, > }; > =20 >=20