From nobody Thu Jan 1 10:41:41 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 5A30DC004C0 for ; Mon, 23 Oct 2023 16:30:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232646AbjJWQap (ORCPT ); Mon, 23 Oct 2023 12:30:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41630 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233665AbjJWQa0 (ORCPT ); Mon, 23 Oct 2023 12:30:26 -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 4E77BD79 for ; Mon, 23 Oct 2023 09:29:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1698078579; 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=ySn2xd4o2SRieO3w/gOx9FSSOOAh0/Mb2wK/qV0NTLY=; b=YYIpZEydyVL36A5/iuVbs3AJ9OoYZ5aqcgP8xbHr7hQHR7B1pJEj06Pta9ZKjLBRJ4wd4K sBLmJEywUBontIlWAjXd8fbOfKF3HyjCV8dAPkr+hnO0gxzX3jq15Jxk47u24y7vTKjse/ fDgtPI4Z4V+iWO3Mub1bnxQ6v5z9Oak= 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-227-YKU2tQtgMlyogavkyFa4wQ-1; Mon, 23 Oct 2023 12:29:35 -0400 X-MC-Unique: YKU2tQtgMlyogavkyFa4wQ-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (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 5C83880F925; Mon, 23 Oct 2023 16:29:34 +0000 (UTC) Received: from p1.luc.cera.cz (unknown [10.45.224.17]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7A4A525C0; Mon, 23 Oct 2023 16:29:31 +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 1/3] i40e: Move i40e_is_aq_api_ver_ge helper Date: Mon, 23 Oct 2023 18:29:26 +0200 Message-ID: <20231023162928.245583-2-ivecera@redhat.com> In-Reply-To: <20231023162928.245583-1-ivecera@redhat.com> References: <20231023162928.245583-1-ivecera@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.1 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 --- 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..050d479aeed3 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 10:41:41 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 97400C001E0 for ; Mon, 23 Oct 2023 16:31:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230256AbjJWQbA (ORCPT ); Mon, 23 Oct 2023 12:31:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41692 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232667AbjJWQag (ORCPT ); Mon, 23 Oct 2023 12:30:36 -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 D5090D7A for ; Mon, 23 Oct 2023 09:29:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1698078581; 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=R3ZRVRPYlzLKSEwVSMpWF6MYksG9m8/cnJFghvaOFDE=; b=LjpUOCqkESYv3dWDs6xdAjksCdZcQ2oGGKl4Le/eAzMWzIoMVWjsKu60/S7hZgudsJ0K4i JHWUpHY/I1sF0MveoP9CLBCIORaRqA9ypg0D9ydcs/iY3fN6qG3vQNu5PHGaTy8R9gn6f9 1pl6JT1y9m7S9I77WFOMJVurziAy2vE= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-54-PBYY7xKIOQSo5EZ1aDcToA-1; Mon, 23 Oct 2023 12:29:38 -0400 X-MC-Unique: PBYY7xKIOQSo5EZ1aDcToA-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 7747D185AD0A; Mon, 23 Oct 2023 16:29:36 +0000 (UTC) Received: from p1.luc.cera.cz (unknown [10.45.224.17]) by smtp.corp.redhat.com (Postfix) with ESMTP id 922AC25C0; Mon, 23 Oct 2023 16:29:34 +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 2/3] i40e: Add other helpers to check version of running firmware and AQ API Date: Mon, 23 Oct 2023 18:29:27 +0200 Message-ID: <20231023162928.245583-3-ivecera@redhat.com> In-Reply-To: <20231023162928.245583-1-ivecera@redhat.com> References: <20231023162928.245583-1-ivecera@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.1 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 050d479aeed3..bb62c14aa3d4 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 bool inline 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 mi= n)); +} + +/** + * 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 bool inline 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 bool inline 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 10:41:41 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 C100EC001E0 for ; Mon, 23 Oct 2023 16:30:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233753AbjJWQat (ORCPT ); Mon, 23 Oct 2023 12:30:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41728 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233441AbjJWQa3 (ORCPT ); Mon, 23 Oct 2023 12:30:29 -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 22BA310CF for ; Mon, 23 Oct 2023 09:29:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1698078582; 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=lgtGg0BFW55Rmx0mj1GNekmhAp2ku48a86Jk+1Z+kQs=; b=Guawc+69mm52D/Ojziglcy6zRHnQfrZ5gBBfO9NT2fzSu3M4GzW2lOHH4RrwyrpUFDaNrl IFSotnrVyNWG/TvBQpYkff3L71YanBW7vFVhH0nzCl+AZMjmbHExXiGj3cnm6d3+I++Bnc iBgQl6SpPp2p6cn5IrJw9nYBFkb72R8= 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-526-Pe_hYhv3OFmsewRPBzi8mw-1; Mon, 23 Oct 2023 12:29:39 -0400 X-MC-Unique: Pe_hYhv3OFmsewRPBzi8mw-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (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 8964588B7A0; Mon, 23 Oct 2023 16:29:38 +0000 (UTC) Received: from p1.luc.cera.cz (unknown [10.45.224.17]) by smtp.corp.redhat.com (Postfix) with ESMTP id AD46625C2; Mon, 23 Oct 2023 16:29:36 +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 3/3] i40e: Use helpers to check running FW and AQ API versions Date: Mon, 23 Oct 2023 18:29:28 +0200 Message-ID: <20231023162928.245583-4-ivecera@redhat.com> In-Reply-To: <20231023162928.245583-1-ivecera@redhat.com> References: <20231023162928.245583-1-ivecera@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.1 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 --- drivers/net/ethernet/intel/i40e/i40e_adminq.c | 69 +++++++------------ 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, 43 insertions(+), 64 deletions(-) diff --git a/drivers/net/ethernet/intel/i40e/i40e_adminq.c b/drivers/net/et= hernet/intel/i40e/i40e_adminq.c index 86591140f748..dacd542f5c07 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,47 +562,37 @@ 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); - - 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); - - 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); - + } fallthrough; default: break; } =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); - + } /* 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); - - 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); - - 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 +677,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