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 184A2A0561 for ; Thu, 27 Feb 2020 18:38:45 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0D6881BFAB; Thu, 27 Feb 2020 18:38:45 +0100 (CET) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) by dpdk.org (Postfix) with ESMTP id C8FF71BF76 for ; Thu, 27 Feb 2020 18:38:43 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582825123; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=4i88Ejnnc/O6TXfM8ljzUnjj4JiPgJwhP4Dmzszj8AM=; b=S2IZhNxHAd5mEiXjZ8FM53P0QEl0zYDZhBLy/SZKbHOsRaPheXogIbZi54x2HjzlUvXHV/ JPDPn8R9gF55mCo1njmgbLi0aOywFnX4NPFDfbCmRxebRTQIwZmIeNP+RxeKoe9jD63IVN KtJ+ccQCGqSpu0sH2kN6dAG6F6wT+XQ= 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-153-sn6TQAJ7N0KUl-3SuwivPQ-1; Thu, 27 Feb 2020 12:38:39 -0500 X-MC-Unique: sn6TQAJ7N0KUl-3SuwivPQ-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id DF640801E66; Thu, 27 Feb 2020 17:38:37 +0000 (UTC) Received: from rh.redhat.com (unknown [10.33.36.123]) by smtp.corp.redhat.com (Postfix) with ESMTP id B1ABF8C095; Thu, 27 Feb 2020 17:38:32 +0000 (UTC) From: Kevin Traynor To: Manish Chopra Cc: Shahed Shaikh , Rasesh Mody , dpdk stable Date: Thu, 27 Feb 2020 17:37:54 +0000 Message-Id: <20200227173807.28004-3-ktraynor@redhat.com> In-Reply-To: <20200227173807.28004-1-ktraynor@redhat.com> References: <20200227173807.28004-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Subject: [dpdk-stable] patch 'net/qede: fix VF reload' has been queued to LTS release 18.11.7 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" Hi, FYI, your patch has been queued to LTS release 18.11.7 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 03/02/20. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasi= ng (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/kevintraynor/dpdk-stable-queue This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable-queue/commit/a90d891383446684f5= 0f68eb7f47fb7a6a31e14f Thanks. Kevin. --- >From a90d891383446684f50f68eb7f47fb7a6a31e14f Mon Sep 17 00:00:00 2001 From: Manish Chopra Date: Thu, 6 Feb 2020 12:01:45 -0800 Subject: [PATCH] net/qede: fix VF reload [ upstream commit f44ca48c81e823edda67189220a4bf7659cc22c1 ] On ungraceful termination of DPDK application, PMD VF driver fails to re-load due to PF seeing the VF in unexpected state during VF acquisition handshake. This patch fixes it by allowing VF to request the PF for soft FLR during the load in such cases so that it can get cleanly re-loaded. Fixes: 2ea6f76aff40 ("qede: add core driver") Signed-off-by: Manish Chopra Signed-off-by: Shahed Shaikh Signed-off-by: Rasesh Mody Acked-by: Rasesh Mody --- drivers/net/qede/base/ecore_dev.c | 2 +- drivers/net/qede/base/ecore_dev_api.h | 3 ++ drivers/net/qede/base/ecore_iov_api.h | 1 + drivers/net/qede/base/ecore_sriov.c | 33 ++++++++++++++++ drivers/net/qede/base/ecore_vf.c | 55 +++++++++++++++++++++++++-- drivers/net/qede/base/ecore_vf.h | 11 +++++- drivers/net/qede/base/ecore_vf_api.h | 3 ++ drivers/net/qede/base/ecore_vfpf_if.h | 41 ++++++++++++++++++++ drivers/net/qede/base/mcp_public.h | 2 + drivers/net/qede/qede_main.c | 4 ++ 10 files changed, 149 insertions(+), 6 deletions(-) diff --git a/drivers/net/qede/base/ecore_dev.c b/drivers/net/qede/base/ecor= e_dev.c index d7e1d7b32a..1e6e1a1b38 100644 --- a/drivers/net/qede/base/ecore_dev.c +++ b/drivers/net/qede/base/ecore_dev.c @@ -5501,5 +5501,5 @@ ecore_hw_prepare_single(struct ecore_hwfn *p_hwfn, vo= id OSAL_IOMEM *p_regview, =20 =09if (IS_VF(p_dev)) -=09=09return ecore_vf_hw_prepare(p_hwfn); +=09=09return ecore_vf_hw_prepare(p_hwfn, p_params); =20 =09/* Validate that chip access is feasible */ diff --git a/drivers/net/qede/base/ecore_dev_api.h b/drivers/net/qede/base/= ecore_dev_api.h index 7308063218..69db0f910b 100644 --- a/drivers/net/qede/base/ecore_dev_api.h +++ b/drivers/net/qede/base/ecore_dev_api.h @@ -278,4 +278,7 @@ struct ecore_hw_prepare_params { =09/* Indicates whether this PF serves a storage target */ =09bool b_is_target; + +=09/* retry count for VF acquire on channel timeout */ +=09u8 acquire_retry_cnt; }; =20 diff --git a/drivers/net/qede/base/ecore_iov_api.h b/drivers/net/qede/base/= ecore_iov_api.h index 55de7086da..d65d80a8ef 100644 --- a/drivers/net/qede/base/ecore_iov_api.h +++ b/drivers/net/qede/base/ecore_iov_api.h @@ -52,4 +52,5 @@ enum ecore_iov_pf_to_vf_status { =09PFVF_STATUS_FORCED, =09PFVF_STATUS_MALICIOUS, +=09PFVF_STATUS_ACQUIRED, }; =20 diff --git a/drivers/net/qede/base/ecore_sriov.c b/drivers/net/qede/base/ec= ore_sriov.c index 7d73ef9fbe..748252a42f 100644 --- a/drivers/net/qede/base/ecore_sriov.c +++ b/drivers/net/qede/base/ecore_sriov.c @@ -62,4 +62,37 @@ const char *qede_ecore_channel_tlvs_string[] =3D { =09"CHANNEL_TLV_BULLETIN_UPDATE_MAC", =09"CHANNEL_TLV_UPDATE_MTU", +=09"CHANNEL_TLV_RDMA_ACQUIRE", +=09"CHANNEL_TLV_RDMA_START", +=09"CHANNEL_TLV_RDMA_STOP", +=09"CHANNEL_TLV_RDMA_ADD_USER", +=09"CHANNEL_TLV_RDMA_REMOVE_USER", +=09"CHANNEL_TLV_RDMA_QUERY_COUNTERS", +=09"CHANNEL_TLV_RDMA_ALLOC_TID", +=09"CHANNEL_TLV_RDMA_REGISTER_TID", +=09"CHANNEL_TLV_RDMA_DEREGISTER_TID", +=09"CHANNEL_TLV_RDMA_FREE_TID", +=09"CHANNEL_TLV_RDMA_CREATE_CQ", +=09"CHANNEL_TLV_RDMA_RESIZE_CQ", +=09"CHANNEL_TLV_RDMA_DESTROY_CQ", +=09"CHANNEL_TLV_RDMA_CREATE_QP", +=09"CHANNEL_TLV_RDMA_MODIFY_QP", +=09"CHANNEL_TLV_RDMA_QUERY_QP", +=09"CHANNEL_TLV_RDMA_DESTROY_QP", +=09"CHANNEL_TLV_RDMA_CREATE_SRQ", +=09"CHANNEL_TLV_RDMA_MODIFY_SRQ", +=09"CHANNEL_TLV_RDMA_DESTROY_SRQ", +=09"CHANNEL_TLV_RDMA_QUERY_PORT", +=09"CHANNEL_TLV_RDMA_QUERY_DEVICE", +=09"CHANNEL_TLV_RDMA_IWARP_CONNECT", +=09"CHANNEL_TLV_RDMA_IWARP_ACCEPT", +=09"CHANNEL_TLV_RDMA_IWARP_CREATE_LISTEN", +=09"CHANNEL_TLV_RDMA_IWARP_DESTROY_LISTEN", +=09"CHANNEL_TLV_RDMA_IWARP_PAUSE_LISTEN", +=09"CHANNEL_TLV_RDMA_IWARP_REJECT", +=09"CHANNEL_TLV_RDMA_IWARP_SEND_RTR", +=09"CHANNEL_TLV_ESTABLISH_LL2_CONN", +=09"CHANNEL_TLV_TERMINATE_LL2_CONN", +=09"CHANNEL_TLV_ASYNC_EVENT", +=09"CHANNEL_TLV_SOFT_FLR", =09"CHANNEL_TLV_MAX" }; diff --git a/drivers/net/qede/base/ecore_vf.c b/drivers/net/qede/base/ecore= _vf.c index 3ba6a0cf2e..a18beaa1df 100644 --- a/drivers/net/qede/base/ecore_vf.c +++ b/drivers/net/qede/base/ecore_vf.c @@ -227,5 +227,4 @@ enum _ecore_status_t ecore_vf_pf_release(struct ecore_h= wfn *p_hwfn) } =20 -#define VF_ACQUIRE_THRESH 3 static void ecore_vf_pf_acquire_reduce_resc(struct ecore_hwfn *p_hwfn, =09=09=09=09=09 struct vf_pf_resc_request *p_req, @@ -252,5 +251,38 @@ static void ecore_vf_pf_acquire_reduce_resc(struct eco= re_hwfn *p_hwfn, } =20 -static enum _ecore_status_t ecore_vf_pf_acquire(struct ecore_hwfn *p_hwfn) +static enum _ecore_status_t +ecore_vf_pf_soft_flr_acquire(struct ecore_hwfn *p_hwfn) +{ +=09struct ecore_vf_iov *p_iov =3D p_hwfn->vf_iov_info; +=09struct pfvf_def_resp_tlv *resp; +=09struct vfpf_soft_flr_tlv *req; +=09enum _ecore_status_t rc; + +=09req =3D ecore_vf_pf_prep(p_hwfn, CHANNEL_TLV_SOFT_FLR, sizeof(*req)); + +=09/* add list termination tlv */ +=09ecore_add_tlv(&p_iov->offset, +=09=09 CHANNEL_TLV_LIST_END, +=09=09 sizeof(struct channel_list_end_tlv)); + +=09resp =3D &p_iov->pf2vf_reply->default_resp; +=09rc =3D ecore_send_msg2pf(p_hwfn, &resp->hdr.status, sizeof(*resp)); + +=09DP_VERBOSE(p_hwfn, ECORE_MSG_IOV, "rc=3D0x%x\n", rc); + +=09/* to release the mutex as ecore_vf_pf_acquire() take the mutex */ +=09ecore_vf_pf_req_end(p_hwfn, ECORE_AGAIN); + +=09/* As of today, there is no mechanism in place for VF to know the FLR +=09 * status, so sufficiently (worst case time) wait for FLR to complete, +=09 * as mailbox request to MFW by the PF for initiating VF flr and PF +=09 * processing VF FLR could take time. +=09 */ +=09OSAL_MSLEEP(3000); + +=09return ecore_vf_pf_acquire(p_hwfn); +} + +enum _ecore_status_t ecore_vf_pf_acquire(struct ecore_hwfn *p_hwfn) { =09struct ecore_vf_iov *p_iov =3D p_hwfn->vf_iov_info; @@ -258,4 +290,5 @@ static enum _ecore_status_t ecore_vf_pf_acquire(struct = ecore_hwfn *p_hwfn) =09struct pf_vf_pfdev_info *pfdev_info =3D &resp->pfdev_info; =09struct ecore_vf_acquire_sw_info vf_sw_info; +=09u8 retry_cnt =3D p_iov->acquire_retry_cnt; =09struct vf_pf_resc_request *p_resc; =09bool resources_acquired =3D false; @@ -318,4 +351,12 @@ static enum _ecore_status_t ecore_vf_pf_acquire(struct= ecore_hwfn *p_hwfn) =09=09rc =3D ecore_send_msg2pf(p_hwfn, =09=09=09=09 &resp->hdr.status, sizeof(*resp)); + +=09=09if (retry_cnt && rc =3D=3D ECORE_TIMEOUT) { +=09=09=09DP_VERBOSE(p_hwfn, ECORE_MSG_IOV, +=09=09=09=09 "VF retrying to acquire due to VPC timeout\n"); +=09=09=09retry_cnt--; +=09=09=09continue; +=09=09} + =09=09if (rc !=3D ECORE_SUCCESS) =09=09=09goto exit; @@ -343,5 +384,5 @@ static enum _ecore_status_t ecore_vf_pf_acquire(struct = ecore_hwfn *p_hwfn) =09=09} /* PF refuses to allocate our resources */ =09=09else if (resp->hdr.status =3D=3D PFVF_STATUS_NO_RESOURCE && -=09=09=09 attempts < VF_ACQUIRE_THRESH) { +=09=09=09 attempts < ECORE_VF_ACQUIRE_THRESH) { =09=09=09ecore_vf_pf_acquire_reduce_resc(p_hwfn, p_resc, =09=09=09=09=09=09=09&resp->resc); @@ -391,4 +432,7 @@ static enum _ecore_status_t ecore_vf_pf_acquire(struct = ecore_hwfn *p_hwfn) =09=09=09rc =3D ECORE_INVAL; =09=09=09goto exit; +=09=09} else if (resp->hdr.status =3D=3D PFVF_STATUS_ACQUIRED) { +=09=09=09ecore_vf_pf_req_end(p_hwfn, ECORE_AGAIN); +=09=09=09return ecore_vf_pf_soft_flr_acquire(p_hwfn); =09=09} else { =09=09=09DP_ERR(p_hwfn, @@ -477,5 +521,7 @@ u32 ecore_vf_hw_bar_size(struct ecore_hwfn *p_hwfn, } =20 -enum _ecore_status_t ecore_vf_hw_prepare(struct ecore_hwfn *p_hwfn) +enum _ecore_status_t +ecore_vf_hw_prepare(struct ecore_hwfn *p_hwfn, +=09=09 struct ecore_hw_prepare_params *p_params) { =09struct ecore_hwfn *p_lead =3D ECORE_LEADING_HWFN(p_hwfn->p_dev); @@ -583,4 +629,5 @@ enum _ecore_status_t ecore_vf_hw_prepare(struct ecore_h= wfn *p_hwfn) =09OSAL_MUTEX_INIT(&p_iov->mutex); =20 +=09p_iov->acquire_retry_cnt =3D p_params->acquire_retry_cnt; =09p_hwfn->vf_iov_info =3D p_iov; =20 diff --git a/drivers/net/qede/base/ecore_vf.h b/drivers/net/qede/base/ecore= _vf.h index a07f82ebd9..f027eba3ea 100644 --- a/drivers/net/qede/base/ecore_vf.h +++ b/drivers/net/qede/base/ecore_vf.h @@ -12,4 +12,5 @@ #include "ecore_l2_api.h" #include "ecore_vfpf_if.h" +#include "ecore_dev_api.h" =20 /* Default number of CIDs [total of both Rx and Tx] to be requested @@ -60,4 +61,7 @@ struct ecore_vf_iov { =09 */ =09bool b_doorbell_bar; + +=09/* retry count for VF acquire on channel timeout */ +=09u8 acquire_retry_cnt; }; =20 @@ -73,4 +77,6 @@ enum _ecore_status_t ecore_vf_pf_get_coalesce(struct ecor= e_hwfn *p_hwfn, =09=09=09=09=09 u16 *p_coal, =09=09=09=09=09 struct ecore_queue_cid *p_cid); + +enum _ecore_status_t ecore_vf_pf_acquire(struct ecore_hwfn *p_hwfn); /** * @brief VF - Set Rx/Tx coalesce per VF's relative queue. @@ -93,8 +99,11 @@ enum _ecore_status_t ecore_vf_pf_set_coalesce(struct eco= re_hwfn *p_hwfn, * * @param p_hwfn + * @param p_params * * @return enum _ecore_status_t */ -enum _ecore_status_t ecore_vf_hw_prepare(struct ecore_hwfn *p_hwfn); +enum _ecore_status_t +ecore_vf_hw_prepare(struct ecore_hwfn *p_hwfn, +=09=09 struct ecore_hw_prepare_params *p_params); =20 /** diff --git a/drivers/net/qede/base/ecore_vf_api.h b/drivers/net/qede/base/e= core_vf_api.h index 1a9fb3b1f2..43951a9a34 100644 --- a/drivers/net/qede/base/ecore_vf_api.h +++ b/drivers/net/qede/base/ecore_vf_api.h @@ -12,4 +12,7 @@ =20 #ifdef CONFIG_ECORE_SRIOV + +#define ECORE_VF_ACQUIRE_THRESH 3 + /** * @brief Read the VF bulletin and act on it if needed diff --git a/drivers/net/qede/base/ecore_vfpf_if.h b/drivers/net/qede/base/= ecore_vfpf_if.h index c7ecb01c28..f92dc428af 100644 --- a/drivers/net/qede/base/ecore_vfpf_if.h +++ b/drivers/net/qede/base/ecore_vfpf_if.h @@ -252,4 +252,11 @@ struct vfpf_qid_tlv { }; =20 +/* Soft FLR req */ +struct vfpf_soft_flr_tlv { +=09struct vfpf_first_tlv first_tlv; +=09u32 reserved1; +=09u32 reserved2; +}; + /* Setup Queue */ struct vfpf_start_rxq_tlv { @@ -558,4 +565,5 @@ union vfpf_tlvs { =09struct vfpf_bulletin_update_mac_tlv=09bulletin_update_mac; =09struct vfpf_update_mtu_tlv=09=09update_mtu; +=09struct vfpf_soft_flr_tlv=09=09soft_flr; =09struct tlv_buffer_size=09=09=09tlv_buf_size; }; @@ -690,4 +698,37 @@ enum { =09CHANNEL_TLV_BULLETIN_UPDATE_MAC, =09CHANNEL_TLV_UPDATE_MTU, +=09CHANNEL_TLV_RDMA_ACQUIRE, +=09CHANNEL_TLV_RDMA_START, +=09CHANNEL_TLV_RDMA_STOP, +=09CHANNEL_TLV_RDMA_ADD_USER, +=09CHANNEL_TLV_RDMA_REMOVE_USER, +=09CHANNEL_TLV_RDMA_QUERY_COUNTERS, +=09CHANNEL_TLV_RDMA_ALLOC_TID, +=09CHANNEL_TLV_RDMA_REGISTER_TID, +=09CHANNEL_TLV_RDMA_DEREGISTER_TID, +=09CHANNEL_TLV_RDMA_FREE_TID, +=09CHANNEL_TLV_RDMA_CREATE_CQ, +=09CHANNEL_TLV_RDMA_RESIZE_CQ, +=09CHANNEL_TLV_RDMA_DESTROY_CQ, +=09CHANNEL_TLV_RDMA_CREATE_QP, +=09CHANNEL_TLV_RDMA_MODIFY_QP, +=09CHANNEL_TLV_RDMA_QUERY_QP, +=09CHANNEL_TLV_RDMA_DESTROY_QP, +=09CHANNEL_TLV_RDMA_QUERY_PORT, +=09CHANNEL_TLV_RDMA_QUERY_DEVICE, +=09CHANNEL_TLV_RDMA_IWARP_CONNECT, +=09CHANNEL_TLV_RDMA_IWARP_ACCEPT, +=09CHANNEL_TLV_RDMA_IWARP_CREATE_LISTEN, +=09CHANNEL_TLV_RDMA_IWARP_DESTROY_LISTEN, +=09CHANNEL_TLV_RDMA_IWARP_PAUSE_LISTEN, +=09CHANNEL_TLV_RDMA_IWARP_REJECT, +=09CHANNEL_TLV_RDMA_IWARP_SEND_RTR, +=09CHANNEL_TLV_ESTABLISH_LL2_CONN, +=09CHANNEL_TLV_TERMINATE_LL2_CONN, +=09CHANNEL_TLV_ASYNC_EVENT, +=09CHANNEL_TLV_RDMA_CREATE_SRQ, +=09CHANNEL_TLV_RDMA_MODIFY_SRQ, +=09CHANNEL_TLV_RDMA_DESTROY_SRQ, +=09CHANNEL_TLV_SOFT_FLR, =09CHANNEL_TLV_MAX, =20 diff --git a/drivers/net/qede/base/mcp_public.h b/drivers/net/qede/base/mcp= _public.h index 13c2e2d116..2a2494585a 100644 --- a/drivers/net/qede/base/mcp_public.h +++ b/drivers/net/qede/base/mcp_public.h @@ -1274,4 +1274,5 @@ struct public_drv_mb { #define DRV_MSG_CODE_INITIATE_FLR_DEPRECATED 0x02000000 #define DRV_MSG_CODE_INITIATE_PF_FLR 0x02010000 +#define DRV_MSG_CODE_INITIATE_VF_FLR=09=090x02020000 #define DRV_MSG_CODE_VF_DISABLED_DONE 0xc0000000 #define DRV_MSG_CODE_CFG_VF_MSIX 0xc0010000 @@ -1705,4 +1706,5 @@ struct public_drv_mb { #define FW_MSG_CODE_VF_DISABLED_DONE 0xb0000000 #define FW_MSG_CODE_DRV_CFG_VF_MSIX_DONE 0xb0010000 +#define FW_MSG_CODE_INITIATE_VF_FLR_OK=09=090xb0030000 #define FW_MSG_CODE_FLR_ACK 0x02000000 #define FW_MSG_CODE_FLR_NACK 0x02100000 diff --git a/drivers/net/qede/qede_main.c b/drivers/net/qede/qede_main.c index ec6190b115..0ac4300465 100644 --- a/drivers/net/qede/qede_main.c +++ b/drivers/net/qede/qede_main.c @@ -57,4 +57,8 @@ qed_probe(struct ecore_dev *edev, struct rte_pci_device *= pci_dev, =20 =09memset(&hw_prepare_params, 0, sizeof(hw_prepare_params)); + +=09if (is_vf) +=09=09hw_prepare_params.acquire_retry_cnt =3D ECORE_VF_ACQUIRE_THRESH; + =09hw_prepare_params.personality =3D ECORE_PCI_ETH; =09hw_prepare_params.drv_resc_alloc =3D false; --=20 2.21.1 --- Diff of the applied patch vs upstream commit (please double-check if non-= empty: --- --- -=092020-02-27 17:26:23.837071478 +0000 +++ 0003-net-qede-fix-VF-reload.patch=092020-02-27 17:26:23.611831908 +0000 @@ -1 +1 @@ -From f44ca48c81e823edda67189220a4bf7659cc22c1 Mon Sep 17 00:00:00 2001 +From a90d891383446684f50f68eb7f47fb7a6a31e14f Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit f44ca48c81e823edda67189220a4bf7659cc22c1 ] + @@ -15 +16,0 @@ -Cc: stable@dpdk.org @@ -35 +36 @@ -index f33b9910c0..86ecfb2690 100644 +index d7e1d7b32a..1e6e1a1b38 100644 @@ -38 +39 @@ -@@ -5618,5 +5618,5 @@ ecore_hw_prepare_single(struct ecore_hwfn *p_hwfn, v= oid OSAL_IOMEM *p_regview, +@@ -5501,5 +5501,5 @@ ecore_hw_prepare_single(struct ecore_hwfn *p_hwfn, v= oid OSAL_IOMEM *p_regview, @@ -46 +47 @@ -index 4d5cc1a0fa..5ea8427a07 100644 +index 7308063218..69db0f910b 100644 @@ -58 +59 @@ -index c998dbf8d5..5450018121 100644 +index 55de7086da..d65d80a8ef 100644 @@ -68 +69 @@ -index deee04ac4b..e60257e190 100644 +index 7d73ef9fbe..748252a42f 100644 @@ -110 +111 @@ -index c5c0814262..db03bc494f 100644 +index 3ba6a0cf2e..a18beaa1df 100644 @@ -159 +160,2 @@ -@@ -259,4 +291,5 @@ static enum _ecore_status_t ecore_vf_pf_acquire(struct= ecore_hwfn *p_hwfn) +@@ -258,4 +290,5 @@ static enum _ecore_status_t ecore_vf_pf_acquire(struct= ecore_hwfn *p_hwfn) + =09struct pf_vf_pfdev_info *pfdev_info =3D &resp->pfdev_info; @@ -161 +162,0 @@ - =09struct ecore_dev *p_dev =3D p_hwfn->p_dev; @@ -165 +166 @@ -@@ -319,4 +352,12 @@ static enum _ecore_status_t ecore_vf_pf_acquire(struc= t ecore_hwfn *p_hwfn) +@@ -318,4 +351,12 @@ static enum _ecore_status_t ecore_vf_pf_acquire(struc= t ecore_hwfn *p_hwfn) @@ -178 +179 @@ -@@ -344,5 +385,5 @@ static enum _ecore_status_t ecore_vf_pf_acquire(struct= ecore_hwfn *p_hwfn) +@@ -343,5 +384,5 @@ static enum _ecore_status_t ecore_vf_pf_acquire(struct= ecore_hwfn *p_hwfn) @@ -185 +186 @@ -@@ -392,4 +433,7 @@ static enum _ecore_status_t ecore_vf_pf_acquire(struct= ecore_hwfn *p_hwfn) +@@ -391,4 +432,7 @@ static enum _ecore_status_t ecore_vf_pf_acquire(struct= ecore_hwfn *p_hwfn) @@ -193 +194 @@ -@@ -478,5 +522,7 @@ u32 ecore_vf_hw_bar_size(struct ecore_hwfn *p_hwfn, +@@ -477,5 +521,7 @@ u32 ecore_vf_hw_bar_size(struct ecore_hwfn *p_hwfn, @@ -202 +203 @@ -@@ -584,4 +630,5 @@ enum _ecore_status_t ecore_vf_hw_prepare(struct ecore_= hwfn *p_hwfn) +@@ -583,4 +629,5 @@ enum _ecore_status_t ecore_vf_hw_prepare(struct ecore_= hwfn *p_hwfn) @@ -319 +320 @@ -index 98b9723dd4..6667c2d7ab 100644 +index 13c2e2d116..2a2494585a 100644 @@ -322 +323 @@ -@@ -1291,4 +1291,5 @@ struct public_drv_mb { +@@ -1274,4 +1274,5 @@ struct public_drv_mb { @@ -328 +329 @@ -@@ -1750,4 +1751,5 @@ struct public_drv_mb { +@@ -1705,4 +1706,5 @@ struct public_drv_mb { @@ -332,2 +333,2 @@ - #define FW_MSG_CODE_ERR_RESOURCE_TEMPORARY_UNAVAILABLE=090x008b0000 - #define FW_MSG_CODE_ERR_RESOURCE_ALREADY_ALLOCATED=090x008c0000 + #define FW_MSG_CODE_FLR_ACK 0x02000000 + #define FW_MSG_CODE_FLR_NACK 0x02100000 @@ -335 +336 @@ -index 4eb79d0fbb..8580cbcd7f 100644 +index ec6190b115..0ac4300465 100644