From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Mody, Rasesh" Subject: [PATCH 02/18] net/qede/base: check for EDPM enabled in DB recovery Date: Sat, 29 Sep 2018 08:14:28 +0000 Message-ID: <1538208822-9726-3-git-send-email-rasesh.mody@cavium.com> References: <1538208822-9726-1-git-send-email-rasesh.mody@cavium.com> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Cc: "Mody, Rasesh" , "ferruh.yigit@intel.com" , Dept-Eng DPDK Dev To: "dev@dpdk.org" Return-path: Received: from NAM04-CO1-obe.outbound.protection.outlook.com (mail-eopbgr690074.outbound.protection.outlook.com [40.107.69.74]) by dpdk.org (Postfix) with ESMTP id 43FAA5F35 for ; Sat, 29 Sep 2018 10:14:35 +0200 (CEST) In-Reply-To: <1538208822-9726-1-git-send-email-rasesh.mody@cavium.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Add a check for EDPM enabled before flushing doorbell recovery queue. Signed-off-by: Rasesh Mody --- drivers/net/qede/base/ecore.h | 2 ++ drivers/net/qede/base/ecore_dev.c | 10 +++++++++- drivers/net/qede/base/ecore_int.c | 20 +++++++++++++++++--- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/drivers/net/qede/base/ecore.h b/drivers/net/qede/base/ecore.h index 8982214..4607a80 100644 --- a/drivers/net/qede/base/ecore.h +++ b/drivers/net/qede/base/ecore.h @@ -962,6 +962,8 @@ void ecore_set_fw_mac_addr(__le16 *fw_msb, __le16 *fw_m= id, __le16 *fw_lsb, void ecore_db_recovery_execute(struct ecore_hwfn *p_hwfn, enum ecore_db_rec_exec); =20 +bool ecore_edpm_enabled(struct ecore_hwfn *p_hwfn); + /* amount of resources used in qm init */ u8 ecore_init_qm_get_num_tcs(struct ecore_hwfn *p_hwfn); u16 ecore_init_qm_get_num_vfs(struct ecore_hwfn *p_hwfn); diff --git a/drivers/net/qede/base/ecore_dev.c b/drivers/net/qede/base/ecor= e_dev.c index b83f003..f09f771 100644 --- a/drivers/net/qede/base/ecore_dev.c +++ b/drivers/net/qede/base/ecore_dev.c @@ -1974,6 +1974,14 @@ enum ECORE_ROCE_EDPM_MODE { ECORE_ROCE_EDPM_MODE_DISABLE =3D 2, }; =20 +bool ecore_edpm_enabled(struct ecore_hwfn *p_hwfn) +{ + if (p_hwfn->dcbx_no_edpm || p_hwfn->db_bar_no_edpm) + return false; + + return true; +} + static enum _ecore_status_t ecore_hw_init_pf_doorbell_bar(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt) @@ -2061,7 +2069,7 @@ enum ECORE_ROCE_EDPM_MODE { DP_INFO(p_hwfn, " dpi_size=3D%d, dpi_count=3D%d, roce_edpm=3D%s\n", p_hwfn->dpi_size, p_hwfn->dpi_count, - ((p_hwfn->dcbx_no_edpm) || (p_hwfn->db_bar_no_edpm)) ? + (!ecore_edpm_enabled(p_hwfn)) ? "disabled" : "enabled"); =20 /* Check return codes from above calls */ diff --git a/drivers/net/qede/base/ecore_int.c b/drivers/net/qede/base/ecor= e_int.c index d41107d..c9acc72 100644 --- a/drivers/net/qede/base/ecore_int.c +++ b/drivers/net/qede/base/ecore_int.c @@ -431,9 +431,8 @@ static enum _ecore_status_t ecore_fw_assertion(struct e= core_hwfn *p_hwfn) #define ECORE_DB_REC_COUNT 10 #define ECORE_DB_REC_INTERVAL 100 =20 -/* assumes sticky overflow indication was set for this PF */ -static enum _ecore_status_t ecore_db_rec_attn(struct ecore_hwfn *p_hwfn, - struct ecore_ptt *p_ptt) +static enum _ecore_status_t ecore_db_rec_flush_queue(struct ecore_hwfn *p_= hwfn, + struct ecore_ptt *p_ptt) { u8 count =3D ECORE_DB_REC_COUNT; u32 usage =3D 1; @@ -461,6 +460,21 @@ static enum _ecore_status_t ecore_db_rec_attn(struct e= core_hwfn *p_hwfn, return ECORE_TIMEOUT; } =20 + return ECORE_SUCCESS; +} + +/* assumes sticky overflow indication was set for this PF */ +static enum _ecore_status_t ecore_db_rec_attn(struct ecore_hwfn *p_hwfn, + struct ecore_ptt *p_ptt) +{ + enum _ecore_status_t rc; + + if (ecore_edpm_enabled(p_hwfn)) { + rc =3D ecore_db_rec_flush_queue(p_hwfn, p_ptt); + if (rc !=3D ECORE_SUCCESS) + return rc; + } + /* flush any pedning (e)dpm as they may never arrive */ ecore_wr(p_hwfn, p_ptt, DORQ_REG_DPM_FORCE_ABORT, 0x1); =20 --=20 1.7.10.3