From nobody Thu Jan 1 08:57:51 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2DAA8C00A8F for ; Tue, 24 Oct 2023 08:13:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233861AbjJXINS (ORCPT ); Tue, 24 Oct 2023 04:13:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39784 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232799AbjJXINQ (ORCPT ); Tue, 24 Oct 2023 04:13:16 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 218BEE9 for ; Tue, 24 Oct 2023 01:12:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1698135148; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eYX4ieLYLS9vnBYSPGWi+1qAffL00yE5OYVTrAGUBLU=; b=QfplfSknpKytj0JOBriL5cJW8hDeS39nlUrRcgs4E++SFB8riENGvI/XR+L6cTkVue3VVM ++YaVjvdNTw7PH100warE0z+KzTNpKWJh1tzZZKpUmhs8ruxm6SWzx2xIYTkTurFF5Bfgg ZRtD2KBOIGrn6c52FdGBuDFWt5W4VVk= Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-134--7Al3Y6IOwihqhgNwl0IrA-1; Tue, 24 Oct 2023 04:12:18 -0400 X-MC-Unique: -7Al3Y6IOwihqhgNwl0IrA-1 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E2C312808FCE; Tue, 24 Oct 2023 08:12:17 +0000 (UTC) Received: from p1.luc.com (unknown [10.43.2.183]) by smtp.corp.redhat.com (Postfix) with ESMTP id 16D71492BFB; Tue, 24 Oct 2023 08:12:15 +0000 (UTC) From: Ivan Vecera To: netdev@vger.kernel.org Cc: Jesse Brandeburg , Tony Nguyen , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , intel-wired-lan@lists.osuosl.org, linux-kernel@vger.kernel.org, Jacob Keller , mschmidt@redhat.com, dacampbe@redhat.com, poros@redhat.com Subject: [PATCH iwl-next v2 1/3] i40e: Move i40e_is_aq_api_ver_ge helper Date: Tue, 24 Oct 2023 10:12:09 +0200 Message-ID: <20231024081211.677502-2-ivecera@redhat.com> In-Reply-To: <20231024081211.677502-1-ivecera@redhat.com> References: <20231024081211.677502-1-ivecera@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.10 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Move i40e_is_aq_api_ver_ge helper function (used to check if AdminQ API version is recent enough) to header so it can be used from other .c files. Signed-off-by: Ivan Vecera Reviewed-by: Wojciech Drewek Tested-by: Pucha Himasekhar Reddy (A Co= ntingent worker at Intel) --- drivers/net/ethernet/intel/i40e/i40e_common.c | 23 ++++--------------- drivers/net/ethernet/intel/i40e/i40e_type.h | 14 +++++++++++ 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/drivers/net/ethernet/intel/i40e/i40e_common.c b/drivers/net/et= hernet/intel/i40e/i40e_common.c index 7fce881abc93..df7ba349030d 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_common.c +++ b/drivers/net/ethernet/intel/i40e/i40e_common.c @@ -1749,21 +1749,6 @@ int i40e_aq_set_phy_debug(struct i40e_hw *hw, u8 cmd= _flags, return status; } =20 -/** - * i40e_is_aq_api_ver_ge - * @aq: pointer to AdminQ info containing HW API version to compare - * @maj: API major value - * @min: API minor value - * - * Assert whether current HW API version is greater/equal than provided. - **/ -static bool i40e_is_aq_api_ver_ge(struct i40e_adminq_info *aq, u16 maj, - u16 min) -{ - return (aq->api_maj_ver > maj || - (aq->api_maj_ver =3D=3D maj && aq->api_min_ver >=3D min)); -} - /** * i40e_aq_add_vsi * @hw: pointer to the hw struct @@ -1890,14 +1875,14 @@ int i40e_aq_set_vsi_unicast_promiscuous(struct i40e= _hw *hw, =20 if (set) { flags |=3D I40E_AQC_SET_VSI_PROMISC_UNICAST; - if (rx_only_promisc && i40e_is_aq_api_ver_ge(&hw->aq, 1, 5)) + if (rx_only_promisc && i40e_is_aq_api_ver_ge(hw, 1, 5)) flags |=3D I40E_AQC_SET_VSI_PROMISC_RX_ONLY; } =20 cmd->promiscuous_flags =3D cpu_to_le16(flags); =20 cmd->valid_flags =3D cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_UNICAST); - if (i40e_is_aq_api_ver_ge(&hw->aq, 1, 5)) + if (i40e_is_aq_api_ver_ge(hw, 1, 5)) cmd->valid_flags |=3D cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_RX_ONLY); =20 @@ -2000,13 +1985,13 @@ int i40e_aq_set_vsi_uc_promisc_on_vlan(struct i40e_= hw *hw, =20 if (enable) { flags |=3D I40E_AQC_SET_VSI_PROMISC_UNICAST; - if (i40e_is_aq_api_ver_ge(&hw->aq, 1, 5)) + if (i40e_is_aq_api_ver_ge(hw, 1, 5)) flags |=3D I40E_AQC_SET_VSI_PROMISC_RX_ONLY; } =20 cmd->promiscuous_flags =3D cpu_to_le16(flags); cmd->valid_flags =3D cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_UNICAST); - if (i40e_is_aq_api_ver_ge(&hw->aq, 1, 5)) + if (i40e_is_aq_api_ver_ge(hw, 1, 5)) cmd->valid_flags |=3D cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_RX_ONLY); cmd->seid =3D cpu_to_le16(seid); diff --git a/drivers/net/ethernet/intel/i40e/i40e_type.h b/drivers/net/ethe= rnet/intel/i40e/i40e_type.h index 22150368ba64..a21cc607c844 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_type.h +++ b/drivers/net/ethernet/intel/i40e/i40e_type.h @@ -594,6 +594,20 @@ static inline bool i40e_is_vf(struct i40e_hw *hw) hw->mac.type =3D=3D I40E_MAC_X722_VF); } =20 +/** + * i40e_is_aq_api_ver_ge + * @hw: pointer to i40e_hw structure + * @maj: API major value to compare + * @min: API minor value to compare + * + * Assert whether current HW API version is greater/equal than provided. + **/ +static inline bool i40e_is_aq_api_ver_ge(struct i40e_hw *hw, u16 maj, u16 = min) +{ + return (hw->aq.api_maj_ver > maj || + (hw->aq.api_maj_ver =3D=3D maj && hw->aq.api_min_ver >=3D min)); +} + struct i40e_driver_version { u8 major_version; u8 minor_version; --=20 2.41.0 From nobody Thu Jan 1 08:57:51 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5EAB9C25B47 for ; Tue, 24 Oct 2023 08:13:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233842AbjJXINT (ORCPT ); Tue, 24 Oct 2023 04:13:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39798 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232917AbjJXINQ (ORCPT ); Tue, 24 Oct 2023 04:13:16 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E5131109 for ; Tue, 24 Oct 2023 01:12:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1698135149; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Tpsby9zpzTG4TH56LFax7a98uMvlYd8Rt0jQ8YwK4Gk=; b=UR0WNaWItOu7SvuLVJDQ+WHFnZRq9rb9Eo9yjLzGg8NpBoFnXcQNa2IyGEWhG1RRo9r9kB u7a1pjE8DVa56hanxPneW+i+FzFoYCMe0uHS13yfgZxW3OtF/+O8HjT1AkwXlD3hBzp4jo F5AOG7ZX3TMIs3z2tvpvg6b4e6bMZWg= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-315-ESlYHl0uMgm7MW74P4C79g-1; Tue, 24 Oct 2023 04:12:20 -0400 X-MC-Unique: ESlYHl0uMgm7MW74P4C79g-1 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id F29211019C83; Tue, 24 Oct 2023 08:12:19 +0000 (UTC) Received: from p1.luc.com (unknown [10.43.2.183]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2408B492BFB; Tue, 24 Oct 2023 08:12:18 +0000 (UTC) From: Ivan Vecera To: netdev@vger.kernel.org Cc: Jesse Brandeburg , Tony Nguyen , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , intel-wired-lan@lists.osuosl.org, linux-kernel@vger.kernel.org, Jacob Keller , mschmidt@redhat.com, dacampbe@redhat.com, poros@redhat.com Subject: [PATCH iwl-next v2 2/3] i40e: Add other helpers to check version of running firmware and AQ API Date: Tue, 24 Oct 2023 10:12:10 +0200 Message-ID: <20231024081211.677502-3-ivecera@redhat.com> In-Reply-To: <20231024081211.677502-1-ivecera@redhat.com> References: <20231024081211.677502-1-ivecera@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.10 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Add another helper functions that will be used by subsequent patch to refactor existing open-coded checks whether the version of running firmware and AdminQ API is recent enough to provide certain capabilities. Signed-off-by: Ivan Vecera --- drivers/net/ethernet/intel/i40e/i40e_type.h | 54 +++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/drivers/net/ethernet/intel/i40e/i40e_type.h b/drivers/net/ethe= rnet/intel/i40e/i40e_type.h index a21cc607c844..9fda0cb6bdbe 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_type.h +++ b/drivers/net/ethernet/intel/i40e/i40e_type.h @@ -608,6 +608,60 @@ static inline bool i40e_is_aq_api_ver_ge(struct i40e_h= w *hw, u16 maj, u16 min) (hw->aq.api_maj_ver =3D=3D maj && hw->aq.api_min_ver >=3D min)); } =20 +/** + * i40e_is_aq_api_ver_lt + * @hw: pointer to i40e_hw structure + * @maj: API major value to compare + * @min: API minor value to compare + * + * Assert whether current HW API version is less than provided. + **/ +static inline bool i40e_is_aq_api_ver_lt(struct i40e_hw *hw, u16 maj, u16 = min) +{ + return !i40e_is_aq_api_ver_ge(hw, maj, min); +} + +/** + * i40e_is_fw_ver_ge + * @hw: pointer to i40e_hw structure + * @maj: API major value to compare + * @min: API minor value to compare + * + * Assert whether current firmware version is greater/equal than provided. + **/ +static inline bool i40e_is_fw_ver_ge(struct i40e_hw *hw, u16 maj, u16 min) +{ + return (hw->aq.fw_maj_ver > maj || + (hw->aq.fw_maj_ver =3D=3D maj && hw->aq.fw_min_ver >=3D min)); +} + +/** + * i40e_is_fw_ver_lt + * @hw: pointer to i40e_hw structure + * @maj: API major value to compare + * @min: API minor value to compare + * + * Assert whether current firmware version is less than provided. + **/ +static inline bool i40e_is_fw_ver_lt(struct i40e_hw *hw, u16 maj, u16 min) +{ + return !i40e_is_fw_ver_ge(hw, maj, min); +} + +/** + * i40e_is_fw_ver_eq + * @hw: pointer to i40e_hw structure + * @maj: API major value to compare + * @min: API minor value to compare + * + * Assert whether current firmware version is equal to provided. + **/ +static inline bool i40e_is_fw_ver_eq(struct i40e_hw *hw, u16 maj, u16 min) +{ + return (hw->aq.fw_maj_ver > maj || + (hw->aq.fw_maj_ver =3D=3D maj && hw->aq.fw_min_ver =3D=3D min)); +} + struct i40e_driver_version { u8 major_version; u8 minor_version; --=20 2.41.0 From nobody Thu Jan 1 08:57:51 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 29525C07545 for ; Tue, 24 Oct 2023 08:13:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233833AbjJXIN2 (ORCPT ); Tue, 24 Oct 2023 04:13:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35918 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233889AbjJXINY (ORCPT ); Tue, 24 Oct 2023 04:13:24 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C59BE111 for ; Tue, 24 Oct 2023 01:12:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1698135154; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=YUluDUpmuG9amo4am/A+EO++P8JxhoPDs9Zkr6J3kQM=; b=UY7kyvfptNdZaU++IZZ7xycHSvprJ86kbfsluB8SMffvXlSi1H7sYBlLtVIsCL2seuQDen SLbxgt+55nxWBeSeE+KJ7G0zrp7U3cX8nh7Xk51T89UlXup9pI2ThHU0jw77OwrfMZUSYQ 1mP/i5X9lxSzJ7h9wszoFX6u7vNuteU= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-509-ob0twX0ZNJ-hzizh2n60Ig-1; Tue, 24 Oct 2023 04:12:22 -0400 X-MC-Unique: ob0twX0ZNJ-hzizh2n60Ig-1 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 0D3FA1019C86; Tue, 24 Oct 2023 08:12:22 +0000 (UTC) Received: from p1.luc.com (unknown [10.43.2.183]) by smtp.corp.redhat.com (Postfix) with ESMTP id 34D18492BFB; Tue, 24 Oct 2023 08:12:20 +0000 (UTC) From: Ivan Vecera To: netdev@vger.kernel.org Cc: Jesse Brandeburg , Tony Nguyen , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , intel-wired-lan@lists.osuosl.org, linux-kernel@vger.kernel.org, Jacob Keller , mschmidt@redhat.com, dacampbe@redhat.com, poros@redhat.com Subject: [PATCH iwl-next v2 3/3] i40e: Use helpers to check running FW and AQ API versions Date: Tue, 24 Oct 2023 10:12:11 +0200 Message-ID: <20231024081211.677502-4-ivecera@redhat.com> In-Reply-To: <20231024081211.677502-1-ivecera@redhat.com> References: <20231024081211.677502-1-ivecera@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.10 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Use new helpers to check versions of running FW and provided AQ API to make the code more readable. Signed-off-by: Ivan Vecera Tested-by: Pucha Himasekhar Reddy (A Co= ntingent worker at Intel) --- drivers/net/ethernet/intel/i40e/i40e_adminq.c | 56 +++++++------------ drivers/net/ethernet/intel/i40e/i40e_common.c | 25 ++++----- drivers/net/ethernet/intel/i40e/i40e_dcb.c | 7 +-- drivers/net/ethernet/intel/i40e/i40e_main.c | 6 +- 4 files changed, 36 insertions(+), 58 deletions(-) diff --git a/drivers/net/ethernet/intel/i40e/i40e_adminq.c b/drivers/net/et= hernet/intel/i40e/i40e_adminq.c index 86591140f748..29fc46abf690 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_adminq.c +++ b/drivers/net/ethernet/intel/i40e/i40e_adminq.c @@ -508,42 +508,35 @@ static int i40e_shutdown_arq(struct i40e_hw *hw) **/ static void i40e_set_hw_caps(struct i40e_hw *hw) { - struct i40e_adminq_info *aq =3D &hw->aq; - bitmap_zero(hw->caps, I40E_HW_CAPS_NBITS); =20 switch (hw->mac.type) { case I40E_MAC_XL710: - if (aq->api_maj_ver > 1 || - (aq->api_maj_ver =3D=3D 1 && - aq->api_min_ver >=3D I40E_MINOR_VER_GET_LINK_INFO_XL710)) { + if (i40e_is_aq_api_ver_ge(hw, 1, + I40E_MINOR_VER_GET_LINK_INFO_XL710)) { set_bit(I40E_HW_CAP_AQ_PHY_ACCESS, hw->caps); set_bit(I40E_HW_CAP_FW_LLDP_STOPPABLE, hw->caps); /* The ability to RX (not drop) 802.1ad frames */ set_bit(I40E_HW_CAP_802_1AD, hw->caps); } - if ((aq->api_maj_ver =3D=3D 1 && aq->api_min_ver > 4) || - aq->api_maj_ver > 1) { + if (i40e_is_aq_api_ver_ge(hw, 1, 5)) { /* Supported in FW API version higher than 1.4 */ set_bit(I40E_HW_CAP_GENEVE_OFFLOAD, hw->caps); } - if ((aq->fw_maj_ver =3D=3D 4 && aq->fw_min_ver < 33) || - aq->fw_maj_ver < 4) { + if (i40e_is_fw_ver_lt(hw, 4, 33)) { set_bit(I40E_HW_CAP_RESTART_AUTONEG, hw->caps); /* No DCB support for FW < v4.33 */ set_bit(I40E_HW_CAP_NO_DCB_SUPPORT, hw->caps); } - if ((aq->fw_maj_ver =3D=3D 4 && aq->fw_min_ver < 3) || - aq->fw_maj_ver < 4) { + if (i40e_is_fw_ver_lt(hw, 4, 3)) { /* Disable FW LLDP if FW < v4.3 */ set_bit(I40E_HW_CAP_STOP_FW_LLDP, hw->caps); } - if ((aq->fw_maj_ver =3D=3D 4 && aq->fw_min_ver >=3D 40) || - aq->fw_maj_ver >=3D 5) { - /* Use the FW Set LLDP MIB API if FW > v4.40 */ + if (i40e_is_fw_ver_ge(hw, 4, 40)) { + /* Use the FW Set LLDP MIB API if FW >=3D v4.40 */ set_bit(I40E_HW_CAP_USE_SET_LLDP_MIB, hw->caps); } - if (aq->fw_maj_ver >=3D 6) { + if (i40e_is_fw_ver_ge(hw, 6, 0)) { /* Enable PTP L4 if FW > v6.0 */ set_bit(I40E_HW_CAP_PTP_L4, hw->caps); } @@ -569,19 +562,16 @@ static void i40e_set_hw_caps(struct i40e_hw *hw) clear_bit(I40E_HW_CAP_ATR_EVICT, hw->caps); } =20 - if (aq->api_maj_ver > 1 || - (aq->api_maj_ver =3D=3D 1 && - aq->api_min_ver >=3D I40E_MINOR_VER_FW_LLDP_STOPPABLE_X722)) + if (i40e_is_aq_api_ver_ge(hw, 1, + I40E_MINOR_VER_FW_LLDP_STOPPABLE_X722)) set_bit(I40E_HW_CAP_FW_LLDP_STOPPABLE, hw->caps); =20 - if (aq->api_maj_ver > 1 || - (aq->api_maj_ver =3D=3D 1 && - aq->api_min_ver >=3D I40E_MINOR_VER_GET_LINK_INFO_X722)) + if (i40e_is_aq_api_ver_ge(hw, 1, + I40E_MINOR_VER_GET_LINK_INFO_X722)) set_bit(I40E_HW_CAP_AQ_PHY_ACCESS, hw->caps); =20 - if (aq->api_maj_ver > 1 || - (aq->api_maj_ver =3D=3D 1 && - aq->api_min_ver >=3D I40E_MINOR_VER_FW_REQUEST_FEC_X722)) + if (i40e_is_aq_api_ver_ge(hw, 1, + I40E_MINOR_VER_FW_REQUEST_FEC_X722)) set_bit(I40E_HW_CAP_X722_FEC_REQUEST, hw->caps); =20 fallthrough; @@ -590,25 +580,17 @@ static void i40e_set_hw_caps(struct i40e_hw *hw) } =20 /* Newer versions of firmware require lock when reading the NVM */ - if (aq->api_maj_ver > 1 || - (aq->api_maj_ver =3D=3D 1 && - aq->api_min_ver >=3D 5)) + if (i40e_is_aq_api_ver_ge(hw, 1, 5)) set_bit(I40E_HW_CAP_NVM_READ_REQUIRES_LOCK, hw->caps); =20 /* The ability to RX (not drop) 802.1ad frames was added in API 1.7 */ - if (aq->api_maj_ver > 1 || - (aq->api_maj_ver =3D=3D 1 && - aq->api_min_ver >=3D 7)) + if (i40e_is_aq_api_ver_ge(hw, 1, 7)) set_bit(I40E_HW_CAP_802_1AD, hw->caps); =20 - if (aq->api_maj_ver > 1 || - (aq->api_maj_ver =3D=3D 1 && - aq->api_min_ver >=3D 8)) + if (i40e_is_aq_api_ver_ge(hw, 1, 8)) set_bit(I40E_HW_CAP_FW_LLDP_PERSISTENT, hw->caps); =20 - if (aq->api_maj_ver > 1 || - (aq->api_maj_ver =3D=3D 1 && - aq->api_min_ver >=3D 9)) + if (i40e_is_aq_api_ver_ge(hw, 1, 9)) set_bit(I40E_HW_CAP_AQ_PHY_ACCESS_EXTENDED, hw->caps); } =20 @@ -694,7 +676,7 @@ int i40e_init_adminq(struct i40e_hw *hw) &oem_lo); hw->nvm.oem_ver =3D ((u32)oem_hi << 16) | oem_lo; =20 - if (hw->aq.api_maj_ver > I40E_FW_API_VERSION_MAJOR) { + if (i40e_is_aq_api_ver_ge(hw, I40E_FW_API_VERSION_MAJOR + 1, 0)) { ret_code =3D -EIO; goto init_adminq_free_arq; } diff --git a/drivers/net/ethernet/intel/i40e/i40e_common.c b/drivers/net/et= hernet/intel/i40e/i40e_common.c index df7ba349030d..e171f4814e21 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_common.c +++ b/drivers/net/ethernet/intel/i40e/i40e_common.c @@ -1374,8 +1374,8 @@ i40e_aq_get_phy_capabilities(struct i40e_hw *hw, =20 if (report_init) { if (hw->mac.type =3D=3D I40E_MAC_XL710 && - hw->aq.api_maj_ver =3D=3D I40E_FW_API_VERSION_MAJOR && - hw->aq.api_min_ver >=3D I40E_MINOR_VER_GET_LINK_INFO_XL710) { + i40e_is_aq_api_ver_ge(hw, I40E_FW_API_VERSION_MAJOR, + I40E_MINOR_VER_GET_LINK_INFO_XL710)) { status =3D i40e_aq_get_link_info(hw, true, NULL, NULL); } else { hw->phy.phy_types =3D le32_to_cpu(abilities->phy_type); @@ -1645,9 +1645,8 @@ int i40e_aq_get_link_info(struct i40e_hw *hw, else hw_link_info->lse_enable =3D false; =20 - if ((hw->mac.type =3D=3D I40E_MAC_XL710) && - (hw->aq.fw_maj_ver < 4 || (hw->aq.fw_maj_ver =3D=3D 4 && - hw->aq.fw_min_ver < 40)) && hw_link_info->phy_type =3D=3D 0xE) + if (hw->mac.type =3D=3D I40E_MAC_XL710 && i40e_is_fw_ver_lt(hw, 4, 40) && + hw_link_info->phy_type =3D=3D 0xE) hw_link_info->phy_type =3D I40E_PHY_TYPE_10GBASE_SFPP_CU; =20 if (test_bit(I40E_HW_CAP_AQ_PHY_ACCESS, hw->caps) && @@ -5223,14 +5222,14 @@ int i40e_aq_rx_ctl_read_register(struct i40e_hw *hw, **/ u32 i40e_read_rx_ctl(struct i40e_hw *hw, u32 reg_addr) { - bool use_register; + bool use_register =3D false; int status =3D 0; int retry =3D 5; u32 val =3D 0; =20 - use_register =3D (((hw->aq.api_maj_ver =3D=3D 1) && - (hw->aq.api_min_ver < 5)) || - (hw->mac.type =3D=3D I40E_MAC_X722)); + if (i40e_is_aq_api_ver_lt(hw, 1, 5) || hw->mac.type =3D=3D I40E_MAC_X722) + use_register =3D true; + if (!use_register) { do_retry: status =3D i40e_aq_rx_ctl_read_register(hw, reg_addr, &val, NULL); @@ -5285,13 +5284,13 @@ int i40e_aq_rx_ctl_write_register(struct i40e_hw *h= w, **/ void i40e_write_rx_ctl(struct i40e_hw *hw, u32 reg_addr, u32 reg_val) { - bool use_register; + bool use_register =3D false; int status =3D 0; int retry =3D 5; =20 - use_register =3D (((hw->aq.api_maj_ver =3D=3D 1) && - (hw->aq.api_min_ver < 5)) || - (hw->mac.type =3D=3D I40E_MAC_X722)); + if (i40e_is_aq_api_ver_lt(hw, 1, 5) || hw->mac.type =3D=3D I40E_MAC_X722) + use_register =3D true; + if (!use_register) { do_retry: status =3D i40e_aq_rx_ctl_write_register(hw, reg_addr, diff --git a/drivers/net/ethernet/intel/i40e/i40e_dcb.c b/drivers/net/ether= net/intel/i40e/i40e_dcb.c index 39e44a2e0677..498728e16a37 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_dcb.c +++ b/drivers/net/ethernet/intel/i40e/i40e_dcb.c @@ -804,14 +804,11 @@ int i40e_get_dcb_config(struct i40e_hw *hw) int ret =3D 0; =20 /* If Firmware version < v4.33 on X710/XL710, IEEE only */ - if ((hw->mac.type =3D=3D I40E_MAC_XL710) && - (((hw->aq.fw_maj_ver =3D=3D 4) && (hw->aq.fw_min_ver < 33)) || - (hw->aq.fw_maj_ver < 4))) + if (hw->mac.type =3D=3D I40E_MAC_XL710 && i40e_is_fw_ver_lt(hw, 4, 33)) return i40e_get_ieee_dcb_config(hw); =20 /* If Firmware version =3D=3D v4.33 on X710/XL710, use old CEE struct */ - if ((hw->mac.type =3D=3D I40E_MAC_XL710) && - ((hw->aq.fw_maj_ver =3D=3D 4) && (hw->aq.fw_min_ver =3D=3D 33))) { + if (hw->mac.type =3D=3D I40E_MAC_XL710 && i40e_is_fw_ver_eq(hw, 4, 33)) { ret =3D i40e_aq_get_cee_dcb_config(hw, &cee_v1_cfg, sizeof(cee_v1_cfg), NULL); if (!ret) { diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethe= rnet/intel/i40e/i40e_main.c index 7001fe2870c4..df058540d277 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c @@ -15830,15 +15830,15 @@ static int i40e_probe(struct pci_dev *pdev, const= struct pci_device_id *ent) hw->vendor_id, hw->device_id, hw->subsystem_vendor_id, hw->subsystem_device_id); =20 - if (hw->aq.api_maj_ver =3D=3D I40E_FW_API_VERSION_MAJOR && - hw->aq.api_min_ver > I40E_FW_MINOR_VERSION(hw)) + if (i40e_is_aq_api_ver_ge(hw, I40E_FW_API_VERSION_MAJOR, + I40E_FW_MINOR_VERSION(hw) + 1)) dev_dbg(&pdev->dev, "The driver for the device detected a newer version of the NVM image v%= u.%u than v%u.%u.\n", hw->aq.api_maj_ver, hw->aq.api_min_ver, I40E_FW_API_VERSION_MAJOR, I40E_FW_MINOR_VERSION(hw)); - else if (hw->aq.api_maj_ver =3D=3D 1 && hw->aq.api_min_ver < 4) + else if (i40e_is_aq_api_ver_lt(hw, 1, 4)) dev_info(&pdev->dev, "The driver for the device detected an older version of the NVM image = v%u.%u than expected v%u.%u. Please update the NVM image.\n", hw->aq.api_maj_ver, --=20 2.41.0