net/qede: add infrastructure for debug data collection
[dpdk.git] / drivers / net / qede / qede_main.c
index 51aa639..987a6f1 100644 (file)
@@ -9,6 +9,8 @@
 #include <rte_string_fns.h>
 
 #include "qede_ethdev.h"
+/* ######### DEBUG ###########*/
+#include "qede_debug.h"
 
 /* Alarm timeout. */
 #define QEDE_ALARM_TIMEOUT_US 100000
@@ -276,10 +278,15 @@ static int qed_slowpath_start(struct ecore_dev *edev,
        qed_start_iov_task(edev);
 
 #ifdef CONFIG_ECORE_BINARY_FW
-       if (IS_PF(edev))
+       if (IS_PF(edev)) {
                data = (const uint8_t *)edev->firmware + sizeof(u32);
+
+               /* ############### DEBUG ################## */
+               qed_dbg_pf_init(edev);
+       }
 #endif
 
+
        /* Start the slowpath */
        memset(&hw_init_params, 0, sizeof(hw_init_params));
        hw_init_params.b_hw_start = true;
@@ -779,6 +786,36 @@ const struct qed_common_ops qed_common_ops_pass = {
        INIT_STRUCT_FIELD(slowpath_stop, &qed_slowpath_stop),
        INIT_STRUCT_FIELD(remove, &qed_remove),
        INIT_STRUCT_FIELD(send_drv_state, &qed_send_drv_state),
+       /* ############### DEBUG ####################*/
+
+       INIT_STRUCT_FIELD(dbg_get_debug_engine, &qed_get_debug_engine),
+       INIT_STRUCT_FIELD(dbg_set_debug_engine, &qed_set_debug_engine),
+
+       INIT_STRUCT_FIELD(dbg_protection_override,
+                         &qed_dbg_protection_override),
+       INIT_STRUCT_FIELD(dbg_protection_override_size,
+                         &qed_dbg_protection_override_size),
+
+       INIT_STRUCT_FIELD(dbg_grc, &qed_dbg_grc),
+       INIT_STRUCT_FIELD(dbg_grc_size, &qed_dbg_grc_size),
+
+       INIT_STRUCT_FIELD(dbg_idle_chk, &qed_dbg_idle_chk),
+       INIT_STRUCT_FIELD(dbg_idle_chk_size, &qed_dbg_idle_chk_size),
+
+       INIT_STRUCT_FIELD(dbg_mcp_trace, &qed_dbg_mcp_trace),
+       INIT_STRUCT_FIELD(dbg_mcp_trace_size, &qed_dbg_mcp_trace_size),
+
+       INIT_STRUCT_FIELD(dbg_fw_asserts, &qed_dbg_fw_asserts),
+       INIT_STRUCT_FIELD(dbg_fw_asserts_size, &qed_dbg_fw_asserts_size),
+
+       INIT_STRUCT_FIELD(dbg_ilt, &qed_dbg_ilt),
+       INIT_STRUCT_FIELD(dbg_ilt_size, &qed_dbg_ilt_size),
+
+       INIT_STRUCT_FIELD(dbg_reg_fifo_size, &qed_dbg_reg_fifo_size),
+       INIT_STRUCT_FIELD(dbg_reg_fifo, &qed_dbg_reg_fifo),
+
+       INIT_STRUCT_FIELD(dbg_igu_fifo_size, &qed_dbg_igu_fifo_size),
+       INIT_STRUCT_FIELD(dbg_igu_fifo, &qed_dbg_igu_fifo),
 };
 
 const struct qed_eth_ops qed_eth_ops_pass = {