From patchwork Sun Apr 1 05:46:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Mody, Rasesh" X-Patchwork-Id: 36819 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 4BCE94F9A; Sun, 1 Apr 2018 07:47:53 +0200 (CEST) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0070.outbound.protection.outlook.com [104.47.41.70]) by dpdk.org (Postfix) with ESMTP id E981D5398 for ; Sun, 1 Apr 2018 07:47:50 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=Ul4SuXBp5mxnkCv5jc4JoCQqAKsZWO8h/FrNNKeoFVA=; b=jcqIHt0LU6XwO9hiVGfqyyexxuysz2Y/0kx238ws4j2PWEuCUOEmnULV28u7P1olGVxJljH5seqiJfyoteDwVL0XolXkimAO9e8IFifJrjJ1H0akgXjnp6J1t5gvakBe+4C1LE13B4dwyc9VdyL/8gEk2ChQ8hO1nunee55mlG0= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Rasesh.Mody@cavium.com; Received: from cavium.com (198.186.0.2) by DM5PR0701MB3670.namprd07.prod.outlook.com (2603:10b6:4:7e::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.631.10; Sun, 1 Apr 2018 05:47:49 +0000 From: Rasesh Mody To: dev@dpdk.org Cc: Rasesh Mody , ferruh.yigit@intel.com, Dept-EngDPDKDev@cavium.com Date: Sat, 31 Mar 2018 22:46:53 -0700 Message-Id: <1522561624-15817-4-git-send-email-rasesh.mody@cavium.com> X-Mailer: git-send-email 1.7.10.3 In-Reply-To: <1522561624-15817-1-git-send-email-rasesh.mody@cavium.com> References: <1522561624-15817-1-git-send-email-rasesh.mody@cavium.com> MIME-Version: 1.0 X-Originating-IP: [198.186.0.2] X-ClientProxiedBy: BN6PR11CA0017.namprd11.prod.outlook.com (2603:10b6:405:2::27) To DM5PR0701MB3670.namprd07.prod.outlook.com (2603:10b6:4:7e::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 83c8bd71-5a81-4ce4-f63a-08d597941a6d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:DM5PR0701MB3670; X-Microsoft-Exchange-Diagnostics: 1; DM5PR0701MB3670; 3:aEo6AlLWpzyexa1Fqq18HB42buLr538zOLjwIwTVm0szmkZosmrcoUjDybbYxUD67Il7rdKDYNyPIFDUIZBHqkoGB/ndO2ZFLEdMCCWionqRyl0SXX3LZU7WHKZ0hVLMH939VAm5zo1M2AB2xm2BaTxc+Lp3h2f3ZF1865R0YoBTyoSHYBmGaMp57OuIaHAxyeNS317cHCNyg3Rk61kgtfmjv8x6Ey8+fdGEJ/ootzy5yZ59BFBGlqu3TLUtoVr9; 25:SqbK4DctTd9A3T3NYYNgYcXb3ayNH8bJW1gb5efq5/b6isZMx5F8hG5EIzQIG/XfoIFVFlfGu+XGHcIEX/V+Tntbv72/PjD9sQKmhdhQQiuuuzdhuqWto6gncIevH3cm+d93BjEPTgSQqWq/u+HA9UwncLGfdVpF5ZKYUgrJ5o8tOGfLmiUnaSsEizIqEx4bAaQCqQBI8Vzox0eG/HOAtO9yyMoJmN4Af+3HeYgao96waKC43UJzE/GV4hN0hzyt1tZ6nMKqYQVA06ocU2ZWJVPzMf2ycAFFEfTKc8kdMIxwQbuL5bWuYmWhZgPsPcR4n6mg2+XKHH3STYGr5HDLaA==; 31:0XLYHHuEMLVB0Tc6Tr9dOl366C9F7qmnsu+/k29DF0FHYXwF+hxyF6JuK2+dPJmfMH9ohAIL+jS6H8MKEDs0GVNj/4Dl60noVcFtB6ooxJoLZQFYHIlnbiYOpztVGJLX/PX+SNcsRSBAvhkq8SZOwmTHCMkdEIv+VwiEjIZsXrJoyxMMRnNJ5nHvwR9WW7OlRJVg2IMJ07sxWtAobr0VfMKC9KtkJ4GdYNT7YI1kLqs= X-MS-TrafficTypeDiagnostic: DM5PR0701MB3670: X-Microsoft-Exchange-Diagnostics: 1; DM5PR0701MB3670; 20:/CU/7kgCyLVJaefhHOqPjhYdqFo7hazJGLBepevzHJW06ASCFz+n21h69m9j9Mi/cMXPkVQWwVapbnagDzFwx9OnXo+SRrnJoleLP9OB4QWoW7/+8KT8AaF7IL2yL4LTNgQvZOBfkDAP2S9WWFEJT339hDid80JxzaIA7J5P5+7eAcFhzm0NKeQxEXSYplE5mPcQD5i65eVXCLzK+31b9ZUMBXfFAVQdDaQr8ba+0iD/2l77qYXc1zgKD+srb84WYzUcA+qqR2gAm3JgLaN5/TQ/ncZMCcqNsjlwBQYdzTj6DM+l+6j6xECb6S5zA8ESjSXaV1/Lr8CWbzxYFPhIg3Fs9AxXB1m2V7slKO0ZmD1e/HscfY1nqpVOsKHXuD7+aw7m2L/JIb4oR1HQF5Z848ynQdFkd//0a948LvFz+AVJcMwq/Yi3c7r27dPc1PpDKLDIgKOLLLfA57gGLd7/lPfUUwIowexeJoo4fiSt1EMhZDyGTE2dV+jSYvcQtJSN; 4:mFCYSe7CDbDquRkLrlKLdIjdiaW7/xmlGq6G3dmuQC33cI5rMmyvRZiIjhZUl8CduKi6Zz/RYXfi2Up1FF1MLxnFxjrTIJmIDSJKCtYyn9poJFT10rpP2DeEXEqmb8Ez8BagVvSzUuJG2XJ8HUqWwuBTg80UpXms+vZm11mTsu8BnXSnTAlaKxp+EPXw1Akx50q4Uth6HWe/9QrUzvz/vVbBSlA0usHvVi4DejKNAWTvQyjWRPISVmWrzwgXCRBfalQvx7kAjV14Hfxu7XIldw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231221)(944501327)(52105095)(93006095)(93001095)(3002001)(10201501046)(6041310)(20161123562045)(20161123558120)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM5PR0701MB3670; BCL:0; PCL:0; RULEID:; SRVR:DM5PR0701MB3670; X-Forefront-PRVS: 06290ECA9D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39850400004)(376002)(346002)(366004)(396003)(39380400002)(189003)(199004)(25786009)(16526019)(52116002)(81166006)(81156014)(76176011)(8676002)(7696005)(478600001)(72206003)(51416003)(305945005)(26005)(386003)(7736002)(186003)(2361001)(59450400001)(86362001)(47776003)(69596002)(2906002)(66066001)(4326008)(68736007)(2351001)(55016002)(97736004)(21086003)(50226002)(6666003)(107886003)(4720700003)(36756003)(8936002)(16586007)(316002)(52396003)(6116002)(106356001)(11346002)(53936002)(105586002)(5660300001)(6916009)(3846002)(486005)(446003)(476003)(48376002)(50466002)(486005)(956004)(2616005); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR0701MB3670; H:cavium.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR0701MB3670; 23:T2e7DwZgmERy+zz51Ypx6vaqjwqQ8MsDTn5p9A6?= mCJ/5ZaLINC/4bNtFo/ha59M3szks94bu5C4xv0b3+0TIPa4u/VDUrn2JfuiXBDe7baZoDDaJsD7o8ajye81+e8R5KPb8W8BaJwGjrqE2QJ8aM9ZAT1rsMB8DNl4ShIJ5SfGetZXFiw6h/O3ZYbCkg/R4vVY7xoYc3Goio2dup4DFPYV0yuM6RD+l2AXigKoQInmKBx4jgKdJQNDq+8zCfKb8APBR3OCSRSnrhGUS05x4kh7yeX7DyV6bI0mFyjP06khj8TDaKrbxvWnt+EMLMkHzAFQg5O+G+2d4chzKj6uZDZOacvDXIrD5DiWZ/V62CTaNbaYD0x6nrqad7Os7rHdt/uEJYLQ9FllCPENY+894byEUFyDpzv62OLIwasOENUDZlfkIwHJoWQnZKAiAew+4iGJUaTMHJoI6X/2FrWUhERuaWKaYoAgcIwPP3hKy/v6Q9ASE/Eewp5BIPaDlVYJmATs0jlP37Fws8JVAMxt//OCCgNCUWbzqGMe2efLvJ0u6mJQmd88ggBPHa2Hy4j4p+DPK4E9lHzuFQ5/9hp/kaSIAijLxq7HfI6ZTtL7h70gnC3FR6/fejYzzRiPjg7dftXYAvb5DsUoazDuSqFqlY74IE5VowxASOWkWIyO/i7sGJGSlZlu91v3Ou0QJjopHuMvr0qbA7aQKVGQKtDRQxEn4Tyu6k9stzZGcBBI69aeYxG/Frcywdhm+Rn7vW450slEfCAwzv/ef9unNgEeB/D2HwDfizDQdGUY4S8xXEPb7kA69wlo/8Nx3OP7Htyj7DPXsO4lHkirHjZz78dlI05c4b0w2GoxZ38SiXZgSJfZ4Jt/qKlDt3w44HTUocbTOP9D9ERWU7vrNxZX+1sr3TxBFLcIANWbgKM1vpwLPx8KyQUJiwxsjziFTov+ZOXGyA57A7+IyUuKUs5iCc2ezoDRRLq2QJ+pPpTuHuKGG2XU+0v1Wm4Rq8dW+3y7eivbLhSsVYFKVrrz5mQE7IgPerVWvSRSSNpaC0GT9ukmsmFsgoWfg9qhnvD4ZYVz5qVApeD5H5sv1Xc54OK1p2y1QDBJe4PrmEmt9xGSL7oQL2HSyLDK6EtFq9cNOdVteILEQf3oBjeXLpNwAj5nX/ewxK1c2zFzxAJwlWhNtvhY5sxHESAe4FzByiPMTm78wcFpfLa/0AY3UpOgU/HWLGSUpNJeYxPil8XNHSxuA5/6wWUd1tttPWObC4i0nw5o7ZODXDLyDKA0KIPFGkzfPjJC9oS6rKv301qpFtfYp5+9TpKu77OuiAT7gwVR31EZAaouNijZYf/SZVcSwEyLQxpQU0Ih071+uYz5lAmsaL/IXZOY= X-Microsoft-Antispam-Message-Info: +Eu6KiRYgxWrdnlDBhOS8yWvASrkAU6DBqY+tMGT+m5FQEZuug61NnHxKwnSUV45GrlzZ6qInt9gGMV4tRrXWr+mgZH4fHzEiSUnMaqaL3TZPWFWH7NU134+SRu/Eqw/C7DKgAxi8e4qISfp/hDjWCVZ6q2+WTrMJORdN3p7IhXEuKuCX5d5OmPDjuCGdmfc X-Microsoft-Exchange-Diagnostics: 1; DM5PR0701MB3670; 6:qYW1z4rI4wYg3Nfv1wzt1lsiR34YKbykdIc3pPHPNQM5hnmIO2tkWiRzridTWMCparm+dXQb3kAZs9wf0KW3B6HXdpZzJcK/c8MFjNZD9npXwy1BD0xnPcTa9xHPp3j2CuDzhp2ckL9NCDTc+t0LA+UPQEKiCQtFgn5iJtbKCFG1P87ecXjDYrebTKr2PdMr/7/bsKemc+EFaQXQWpiMzj7XdLSayFPcwHwgdVIL6IL4+O9CRKwGz1QtgH0/NWt80EempI1f/9rYSIHdVedol+j+bWQSaqQjS+ngfIKAaynS8ocDEZcEXYnoeQUNSJQinvWMHDiBKpKJE21BR/Tlk1EepR4wDu63+RDwIgawaZh9UIbm0SGkavC5PeZ31PPswap+h+4Qc7X2e/6HqGzw5YDMk0tFVcFvhkZyo85llXh9iMQk5KECpwwOzPGUQRYh51P2nCZMMOJTWAcxeIwlpQ==; 5:HNRjjNjFWdlSRi1slJk58QolRCfbsignFyO9O4vZPDowccZIrt0L7ulP9UZRaUK3K9vZiodAKCnwHGBvmKdSt5qN2vCTokVWqAsjtMOPMniKgtoNChNdS86omkGBWZlhxE/ZxEUme265sbYRQPceUxU0+e3Pnfbp4q2X4rDv7/I=; 24:6EQ+0P63/wuBXvq4JR29FxeP8/+hbjatD0yTQhkhWYq9MCixjtkK+qbAgkiwJmWGWgeAAjngqMABd+jELTafYCmgrbmiIbJuzsZSX5x+KtU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR0701MB3670; 7:fXlw7JeHYz6ZprobUOjCNo4I2i2b+iU4rTGLGXw3bem6bGCGsO0sQ3OanI19sWzSj2+q+5Z02DThwl7/ZctL6+QjisjzABixJA1ybaA1hQk5hoUfh5f1Yye+OZeWZ+6+lp8KAbWfVJdLGRyZMzmkdFL1MLY3VpNIjf8En7GsEVoWtVY1EGiVq9J8rqdGDutl1UEp/1/GAjC6O71Hj9wE8Dk/pSXtvSnUsEyYPk3gNZgVuIwwEmLjf0Bywjndvrt+ X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2018 05:47:49.0911 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 83c8bd71-5a81-4ce4-f63a-08d597941a6d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR0701MB3670 Subject: [dpdk-dev] [PATCH 03/14] net/qede/base: add DMAE sanity check X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list 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 DMA engine sanity check during the engine initialization and before PF inititialization Signed-off-by: Rasesh Mody --- drivers/net/qede/base/ecore_dev.c | 5 +++ drivers/net/qede/base/ecore_hw.c | 69 ++++++++++++++++++++++++++++++++ drivers/net/qede/base/ecore_hw.h | 4 ++ drivers/net/qede/base/ecore_init_ops.c | 32 +++++++++------ drivers/net/qede/base/ecore_rt_defs.h | 3 ++ 5 files changed, 100 insertions(+), 13 deletions(-) diff --git a/drivers/net/qede/base/ecore_dev.c b/drivers/net/qede/base/ecore_dev.c index b15af03..38492e6 100644 --- a/drivers/net/qede/base/ecore_dev.c +++ b/drivers/net/qede/base/ecore_dev.c @@ -2161,6 +2161,11 @@ static enum _ecore_status_t ecore_hw_init_port(struct ecore_hwfn *p_hwfn, /* perform debug configuration when chip is out of reset */ OSAL_BEFORE_PF_START((void *)p_hwfn->p_dev, p_hwfn->my_id); + /* Sanity check before the PF init sequence that uses DMAE */ + rc = ecore_dmae_sanity(p_hwfn, p_ptt, "pf_phase"); + if (rc) + return rc; + /* PF Init sequence */ rc = ecore_init_run(p_hwfn, p_ptt, PHASE_PF, rel_pf_id, hw_mode); if (rc) diff --git a/drivers/net/qede/base/ecore_hw.c b/drivers/net/qede/base/ecore_hw.c index 34e2e5f..98c7fbf 100644 --- a/drivers/net/qede/base/ecore_hw.c +++ b/drivers/net/qede/base/ecore_hw.c @@ -952,3 +952,72 @@ void ecore_hw_err_notify(struct ecore_hwfn *p_hwfn, OSAL_HW_ERROR_OCCURRED(p_hwfn, err_type); } + +enum _ecore_status_t ecore_dmae_sanity(struct ecore_hwfn *p_hwfn, + struct ecore_ptt *p_ptt, + const char *phase) +{ + u32 size = OSAL_PAGE_SIZE / 2, val; + struct ecore_dmae_params params; + enum _ecore_status_t rc = ECORE_SUCCESS; + dma_addr_t p_phys; + void *p_virt; + u32 *p_tmp; + + p_virt = OSAL_DMA_ALLOC_COHERENT(p_hwfn->p_dev, &p_phys, 2 * size); + if (!p_virt) { + DP_NOTICE(p_hwfn, false, + "DMAE sanity [%s]: failed to allocate memory\n", + phase); + return ECORE_NOMEM; + } + + /* Fill the bottom half of the allocated memory with a known pattern */ + for (p_tmp = (u32 *)p_virt; + p_tmp < (u32 *)((u8 *)p_virt + size); + p_tmp++) { + /* Save the address itself as the value */ + val = (u32)(osal_uintptr_t)p_tmp; + *p_tmp = val; + } + + /* Zero the top half of the allocated memory */ + OSAL_MEM_ZERO((u8 *)p_virt + size, size); + + DP_VERBOSE(p_hwfn, ECORE_MSG_SP, + "DMAE sanity [%s]: src_addr={phys 0x%lx, virt %p}, dst_addr={phys 0x%lx, virt %p}, size 0x%x\n", + phase, (u64)p_phys, p_virt, (u64)(p_phys + size), + (u8 *)p_virt + size, size); + + OSAL_MEMSET(¶ms, 0, sizeof(params)); + rc = ecore_dmae_host2host(p_hwfn, p_ptt, p_phys, p_phys + size, + size / 4 /* size_in_dwords */, ¶ms); + if (rc != ECORE_SUCCESS) { + DP_NOTICE(p_hwfn, false, + "DMAE sanity [%s]: ecore_dmae_host2host() failed. rc = %d.\n", + phase, rc); + goto out; + } + + /* Verify that the top half of the allocated memory has the pattern */ + for (p_tmp = (u32 *)((u8 *)p_virt + size); + p_tmp < (u32 *)((u8 *)p_virt + (2 * size)); + p_tmp++) { + /* The corresponding address in the bottom half */ + val = (u32)(osal_uintptr_t)p_tmp - size; + + if (*p_tmp != val) { + DP_NOTICE(p_hwfn, false, + "DMAE sanity [%s]: addr={phys 0x%lx, virt %p}, read_val 0x%08x, expected_val 0x%08x\n", + phase, + (u64)p_phys + ((u8 *)p_tmp - (u8 *)p_virt), + p_tmp, *p_tmp, val); + rc = ECORE_UNKNOWN_ERROR; + goto out; + } + } + +out: + OSAL_DMA_FREE_COHERENT(p_hwfn->p_dev, p_virt, p_phys, 2 * size); + return rc; +} diff --git a/drivers/net/qede/base/ecore_hw.h b/drivers/net/qede/base/ecore_hw.h index 0b9814f..b59a26a 100644 --- a/drivers/net/qede/base/ecore_hw.h +++ b/drivers/net/qede/base/ecore_hw.h @@ -255,4 +255,8 @@ enum _ecore_status_t ecore_init_fw_data(struct ecore_dev *p_dev, void ecore_hw_err_notify(struct ecore_hwfn *p_hwfn, enum ecore_hw_err_type err_type); +enum _ecore_status_t ecore_dmae_sanity(struct ecore_hwfn *p_hwfn, + struct ecore_ptt *p_ptt, + const char *phase); + #endif /* __ECORE_HW_H__ */ diff --git a/drivers/net/qede/base/ecore_init_ops.c b/drivers/net/qede/base/ecore_init_ops.c index 91633c1..722aa56 100644 --- a/drivers/net/qede/base/ecore_init_ops.c +++ b/drivers/net/qede/base/ecore_init_ops.c @@ -389,23 +389,29 @@ static void ecore_init_cmd_rd(struct ecore_hwfn *p_hwfn, } if (i == ECORE_INIT_MAX_POLL_COUNT) - DP_ERR(p_hwfn, - "Timeout when polling reg: 0x%08x [ Waiting-for: %08x" - " Got: %08x (comparsion %08x)]\n", + DP_ERR(p_hwfn, "Timeout when polling reg: 0x%08x [ Waiting-for: %08x Got: %08x (comparison %08x)]\n", addr, OSAL_LE32_TO_CPU(cmd->expected_val), val, OSAL_LE32_TO_CPU(cmd->op_data)); } -/* init_ops callbacks entry point. - * OSAL_UNUSED is temporary used to avoid unused-parameter compilation warnings. - * Should be removed when the function is actually used. - */ -static void ecore_init_cmd_cb(struct ecore_hwfn *p_hwfn, - struct ecore_ptt OSAL_UNUSED * p_ptt, - struct init_callback_op OSAL_UNUSED * p_cmd) +/* init_ops callbacks entry point */ +static enum _ecore_status_t ecore_init_cmd_cb(struct ecore_hwfn *p_hwfn, + struct ecore_ptt *p_ptt, + struct init_callback_op *p_cmd) { - DP_NOTICE(p_hwfn, true, - "Currently init values have no need of callbacks\n"); + enum _ecore_status_t rc; + + switch (p_cmd->callback_id) { + case DMAE_READY_CB: + rc = ecore_dmae_sanity(p_hwfn, p_ptt, "engine_phase"); + break; + default: + DP_NOTICE(p_hwfn, false, "Unexpected init op callback ID %d\n", + p_cmd->callback_id); + return ECORE_INVAL; + } + + return rc; } static u8 ecore_init_cmd_mode_match(struct ecore_hwfn *p_hwfn, @@ -513,7 +519,7 @@ enum _ecore_status_t ecore_init_run(struct ecore_hwfn *p_hwfn, break; case INIT_OP_CALLBACK: - ecore_init_cmd_cb(p_hwfn, p_ptt, &cmd->callback); + rc = ecore_init_cmd_cb(p_hwfn, p_ptt, &cmd->callback); break; } diff --git a/drivers/net/qede/base/ecore_rt_defs.h b/drivers/net/qede/base/ecore_rt_defs.h index 1d08581..401e4b6 100644 --- a/drivers/net/qede/base/ecore_rt_defs.h +++ b/drivers/net/qede/base/ecore_rt_defs.h @@ -530,4 +530,7 @@ #define RUNTIME_ARRAY_SIZE 41743 +/* Init Callbacks */ +#define DMAE_READY_CB 0 + #endif /* __RT_DEFS_H__ */