Check DMA engine state to verify it is not called before it is initialized

Signed-off-by: Rasesh Mody <rasesh.m...@cavium.com>
---
 drivers/net/qede/base/ecore_hw.c |    9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/net/qede/base/ecore_hw.c b/drivers/net/qede/base/ecore_hw.c
index d6217d8..bc0138f 100644
--- a/drivers/net/qede/base/ecore_hw.c
+++ b/drivers/net/qede/base/ecore_hw.c
@@ -789,6 +789,15 @@ static enum _ecore_status_t 
ecore_dmae_operation_wait(struct ecore_hwfn *p_hwfn)
                return ECORE_SUCCESS;
        }
 
+       if (!cmd) {
+               DP_NOTICE(p_hwfn, true,
+                         "ecore_dmae_execute_sub_operation failed. Invalid 
state. source_addr 0x%lx, destination addr 0x%lx, size_in_dwords 0x%x\n",
+                         (unsigned long)src_addr,
+                         (unsigned long)dst_addr,
+                         length_cur);
+               return ECORE_INVAL;
+       }
+
        ecore_dmae_opcode(p_hwfn,
                          (src_type == ECORE_DMAE_ADDRESS_GRC),
                          (dst_type == ECORE_DMAE_ADDRESS_GRC), p_params);
-- 
1.7.10.3

Reply via email to