get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/16621/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 16621,
    "url": "https://patches.dpdk.org/api/patches/16621/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1476562089-21823-9-git-send-email-rasesh.mody@qlogic.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<1476562089-21823-9-git-send-email-rasesh.mody@qlogic.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1476562089-21823-9-git-send-email-rasesh.mody@qlogic.com",
    "date": "2016-10-15T20:07:45",
    "name": "[dpdk-dev,v3,08/32] qede: change the API signature of ecore_mcp_cmd_and_union()",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "829ef6414d36e4e1e3a5d151d4f78d133a195d0f",
    "submitter": {
        "id": 325,
        "url": "https://patches.dpdk.org/api/people/325/?format=api",
        "name": "Rasesh Mody",
        "email": "rasesh.mody@qlogic.com"
    },
    "delegate": {
        "id": 10,
        "url": "https://patches.dpdk.org/api/users/10/?format=api",
        "username": "bruce",
        "first_name": "Bruce",
        "last_name": "Richardson",
        "email": "bruce.richardson@intel.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1476562089-21823-9-git-send-email-rasesh.mody@qlogic.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/16621/comments/",
    "check": "pending",
    "checks": "https://patches.dpdk.org/api/patches/16621/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id 1471B8D3B;\n\tSat, 15 Oct 2016 22:09:08 +0200 (CEST)",
            "from mx0b-0016ce01.pphosted.com (mx0a-0016ce01.pphosted.com\n\t[67.231.148.157]) by dpdk.org (Postfix) with ESMTP id 732B08D36\n\tfor <dev@dpdk.org>; Sat, 15 Oct 2016 22:09:03 +0200 (CEST)",
            "from pps.filterd (m0095336.ppops.net [127.0.0.1])\n\tby mx0a-0016ce01.pphosted.com (8.16.0.17/8.16.0.17) with SMTP id\n\tu9FK6C5e014310; Sat, 15 Oct 2016 13:09:02 -0700",
            "from avcashub1.qlogic.com ([198.186.0.115])\n\tby mx0a-0016ce01.pphosted.com with ESMTP id 263jj4gfrp-1\n\t(version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT);\n\tSat, 15 Oct 2016 13:09:02 -0700",
            "from avluser05.qlc.com (10.1.113.115) by avcashub1.qlogic.org\n\t(10.1.4.190) with Microsoft SMTP Server (TLS) id 14.3.235.1;\n\tSat, 15 Oct 2016 13:09:01 -0700",
            "(from rmody@localhost)\tby avluser05.qlc.com (8.14.4/8.14.4/Submit)\n\tid u9FK915u021977;\tSat, 15 Oct 2016 13:09:01 -0700"
        ],
        "X-Authentication-Warning": "avluser05.qlc.com: rmody set sender to\n\trasesh.mody@qlogic.com using -f",
        "From": "Rasesh Mody <rasesh.mody@qlogic.com>",
        "To": "<ferruh.yigit@intel.com>, <thomas.monjalon@6wind.com>,\n\t<bruce.richardson@intel.com>",
        "CC": "<dev@dpdk.org>, <Dept-EngDPDKDev@qlogic.com>, Harish Patil\n\t<harish.patil@qlogic.com>",
        "Date": "Sat, 15 Oct 2016 13:07:45 -0700",
        "Message-ID": "<1476562089-21823-9-git-send-email-rasesh.mody@qlogic.com>",
        "X-Mailer": "git-send-email 1.7.10.3",
        "In-Reply-To": "<1476562089-21823-1-git-send-email-rasesh.mody@qlogic.com>",
        "References": "<1476562089-21823-1-git-send-email-rasesh.mody@qlogic.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "disclaimer": "bypass",
        "X-Proofpoint-Virus-Version": "vendor=nai engine=5800 definitions=8319\n\tsignatures=670719",
        "X-Proofpoint-Spam-Details": "rule=notspam policy=default score=0\n\tpriorityscore=1501 malwarescore=0\n\tsuspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015\n\tlowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam\n\tadjust=0\n\treason=mlx scancount=1 engine=8.0.1-1609300000\n\tdefinitions=main-1610150355",
        "Subject": "[dpdk-dev] [PATCH v3 08/32] qede: change the API signature of\n\tecore_mcp_cmd_and_union()",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "patches and discussions about DPDK <dev.dpdk.org>",
        "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Harish Patil <harish.patil@qlogic.com>\n\nChange ecore_mcp_cmd_and_union() to accept pointer to a structure rather\nthan accepting multiple arguments. A new struct ecore_mcp_mb_params is\nadded for that purpose. Also make this function static. This change is\nmostly keeping in mind the future requests which needs additional\narguments.\n\nSigned-off-by: Harish Patil <harish.patil@qlogic.com>\n---\n drivers/net/qede/base/bcm_osal.h  |   2 +\n drivers/net/qede/base/ecore_mcp.c | 138 ++++++++++++++++++++++++--------------\n drivers/net/qede/base/ecore_mcp.h |  31 +++------\n 3 files changed, 98 insertions(+), 73 deletions(-)",
    "diff": "diff --git a/drivers/net/qede/base/bcm_osal.h b/drivers/net/qede/base/bcm_osal.h\nindex a535058..9d84ae2 100644\n--- a/drivers/net/qede/base/bcm_osal.h\n+++ b/drivers/net/qede/base/bcm_osal.h\n@@ -9,6 +9,8 @@\n #ifndef __BCM_OSAL_H\n #define __BCM_OSAL_H\n \n+#include <string.h>\n+\n #include <rte_byteorder.h>\n #include <rte_spinlock.h>\n #include <rte_malloc.h>\ndiff --git a/drivers/net/qede/base/ecore_mcp.c b/drivers/net/qede/base/ecore_mcp.c\nindex b29e630..24211a3 100644\n--- a/drivers/net/qede/base/ecore_mcp.c\n+++ b/drivers/net/qede/base/ecore_mcp.c\n@@ -313,32 +313,10 @@ static enum _ecore_status_t ecore_do_mcp_cmd(struct ecore_hwfn *p_hwfn,\n \treturn rc;\n }\n \n-enum _ecore_status_t ecore_mcp_cmd(struct ecore_hwfn *p_hwfn,\n-\t\t\t\t   struct ecore_ptt *p_ptt, u32 cmd, u32 param,\n-\t\t\t\t   u32 *o_mcp_resp, u32 *o_mcp_param)\n-{\n-#ifndef ASIC_ONLY\n-\tif (CHIP_REV_IS_EMUL(p_hwfn->p_dev)) {\n-\t\tif (cmd == DRV_MSG_CODE_UNLOAD_REQ) {\n-\t\t\tloaded--;\n-\t\t\tloaded_port[p_hwfn->port_id]--;\n-\t\t\tDP_VERBOSE(p_hwfn, ECORE_MSG_SP, \"Unload cnt: 0x%x\\n\",\n-\t\t\t\t   loaded);\n-\t\t}\n-\t\treturn ECORE_SUCCESS;\n-\t}\n-#endif\n \n-\treturn ecore_mcp_cmd_and_union(p_hwfn, p_ptt, cmd, param, OSAL_NULL,\n-\t\t\t\t       o_mcp_resp, o_mcp_param);\n-}\n-\n-enum _ecore_status_t ecore_mcp_cmd_and_union(struct ecore_hwfn *p_hwfn,\n-\t\t\tstruct ecore_ptt *p_ptt,\n-\t\t\t\t\t     u32 cmd, u32 param,\n-\t\t\t\t\t     union drv_union_data *p_union_data,\n-\t\t\t\t\t     u32 *o_mcp_resp,\n-\t\t\t\t\t     u32 *o_mcp_param)\n+static enum _ecore_status_t\n+ecore_mcp_cmd_and_union(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt,\n+\t\t\tstruct ecore_mcp_mb_params *p_mb_params)\n {\n \tu32 union_data_addr;\n \tenum _ecore_status_t rc;\n@@ -354,19 +332,54 @@ enum _ecore_status_t ecore_mcp_cmd_and_union(struct ecore_hwfn *p_hwfn,\n \t */\n \tOSAL_SPIN_LOCK(&p_hwfn->mcp_info->lock);\n \n-\tif (p_union_data != OSAL_NULL) {\n \tunion_data_addr = p_hwfn->mcp_info->drv_mb_addr +\n \t\t\t  OFFSETOF(struct public_drv_mb, union_data);\n-\t\tecore_memcpy_to(p_hwfn, p_ptt, union_data_addr, p_union_data,\n-\t\t\t\tsizeof(*p_union_data));\n-}\n \n-\trc = ecore_do_mcp_cmd(p_hwfn, p_ptt, cmd, param, o_mcp_resp,\n-\t\t\t      o_mcp_param);\n+\tif (p_mb_params->p_data_src != OSAL_NULL)\n+\t\tecore_memcpy_to(p_hwfn, p_ptt, union_data_addr,\n+\t\t\t\tp_mb_params->p_data_src,\n+\t\t\t\tsizeof(*p_mb_params->p_data_src));\n \n-\tOSAL_SPIN_UNLOCK(&p_hwfn->mcp_info->lock);\n+\trc = ecore_do_mcp_cmd(p_hwfn, p_ptt, p_mb_params->cmd,\n+\t\t\t      p_mb_params->param, &p_mb_params->mcp_resp,\n+\t\t\t      &p_mb_params->mcp_param);\n \n+\tif (p_mb_params->p_data_dst != OSAL_NULL)\n+\t\tecore_memcpy_from(p_hwfn, p_ptt, p_mb_params->p_data_dst,\n+\t\t\t\t  union_data_addr,\n+\t\t\t\t  sizeof(*p_mb_params->p_data_dst));\n+\treturn rc;\n+}\n+\n+enum _ecore_status_t ecore_mcp_cmd(struct ecore_hwfn *p_hwfn,\n+\t\t\t\t   struct ecore_ptt *p_ptt, u32 cmd, u32 param,\n+\t\t\t\t   u32 *o_mcp_resp, u32 *o_mcp_param)\n+{\n+\tstruct ecore_mcp_mb_params mb_params;\n+\tenum _ecore_status_t rc;\n+\n+#ifndef ASIC_ONLY\n+\tif (CHIP_REV_IS_EMUL(p_hwfn->p_dev)) {\n+\t\tif (cmd == DRV_MSG_CODE_UNLOAD_REQ) {\n+\t\t\tloaded--;\n+\t\t\tloaded_port[p_hwfn->port_id]--;\n+\t\t\tDP_VERBOSE(p_hwfn, ECORE_MSG_SP, \"Unload cnt: 0x%x\\n\",\n+\t\t\t\t   loaded);\n+\t\t}\n+\t\treturn ECORE_SUCCESS;\n+\t}\n+#endif\n+\tOSAL_MEM_ZERO(&mb_params, sizeof(mb_params));\n+\tmb_params.cmd = cmd;\n+\tmb_params.param = param;\n+\trc = ecore_mcp_cmd_and_union(p_hwfn, p_ptt, &mb_params);\n+\tif (rc != ECORE_SUCCESS)\n \t\treturn rc;\n+\n+\t*o_mcp_resp = mb_params.mcp_resp;\n+\t*o_mcp_param = mb_params.mcp_param;\n+\n+\treturn ECORE_SUCCESS;\n }\n \n enum _ecore_status_t ecore_mcp_nvm_wr_cmd(struct ecore_hwfn *p_hwfn,\n@@ -377,12 +390,23 @@ enum _ecore_status_t ecore_mcp_nvm_wr_cmd(struct ecore_hwfn *p_hwfn,\n \t\t\t\t\t  u32 *o_mcp_param,\n \t\t\t\t\t  u32 i_txn_size, u32 *i_buf)\n {\n+\tstruct ecore_mcp_mb_params mb_params;\n \tunion drv_union_data union_data;\n+\tenum _ecore_status_t rc;\n \n-\tOSAL_MEMCPY((u32 *)&union_data.raw_data, i_buf, i_txn_size);\n+\tOSAL_MEM_ZERO(&mb_params, sizeof(mb_params));\n+\tmb_params.cmd = cmd;\n+\tmb_params.param = param;\n+\tOSAL_MEMCPY(&union_data.raw_data, i_buf, i_txn_size);\n+\tmb_params.p_data_src = &union_data;\n+\trc = ecore_mcp_cmd_and_union(p_hwfn, p_ptt, &mb_params);\n+\tif (rc != ECORE_SUCCESS)\n+\t\treturn rc;\n \n-\treturn ecore_mcp_cmd_and_union(p_hwfn, p_ptt, cmd, param, &union_data,\n-\t\t\t\t       o_mcp_resp, o_mcp_param);\n+\t*o_mcp_resp = mb_params.mcp_resp;\n+\t*o_mcp_param = mb_params.mcp_param;\n+\n+\treturn ECORE_SUCCESS;\n }\n \n enum _ecore_status_t ecore_mcp_nvm_rd_cmd(struct ecore_hwfn *p_hwfn,\n@@ -452,6 +476,7 @@ enum _ecore_status_t ecore_mcp_load_req(struct ecore_hwfn *p_hwfn,\n \t\t\t\t\tu32 *p_load_code)\n {\n \tstruct ecore_dev *p_dev = p_hwfn->p_dev;\n+\tstruct ecore_mcp_mb_params mb_params;\n \tunion drv_union_data union_data;\n \tu32 param;\n \tenum _ecore_status_t rc;\n@@ -463,12 +488,13 @@ enum _ecore_status_t ecore_mcp_load_req(struct ecore_hwfn *p_hwfn,\n \t}\n #endif\n \n+\tOSAL_MEM_ZERO(&mb_params, sizeof(mb_params));\n+\tmb_params.cmd = DRV_MSG_CODE_LOAD_REQ;\n+\tmb_params.param = PDA_COMP | DRV_ID_MCP_HSI_VER_CURRENT |\n+\t\t\t  p_dev->drv_type;\n \tOSAL_MEMCPY(&union_data.ver_str, p_dev->ver_str, MCP_DRV_VER_STR_SIZE);\n-\n-\trc = ecore_mcp_cmd_and_union(p_hwfn, p_ptt, DRV_MSG_CODE_LOAD_REQ,\n-\t\t\t\t     (PDA_COMP | DRV_ID_MCP_HSI_VER_CURRENT |\n-\t\t\t\t      p_dev->drv_type),\n-\t\t\t\t     &union_data, p_load_code, &param);\n+\tmb_params.p_data_src = &union_data;\n+\trc = ecore_mcp_cmd_and_union(p_hwfn, p_ptt, &mb_params);\n \n \t/* if mcp fails to respond we must abort */\n \tif (rc != ECORE_SUCCESS) {\n@@ -535,6 +561,7 @@ enum _ecore_status_t ecore_mcp_ack_vf_flr(struct ecore_hwfn *p_hwfn,\n \tu32 mfw_func_offsize = ecore_rd(p_hwfn, p_ptt, addr);\n \tu32 func_addr = SECTION_ADDR(mfw_func_offsize,\n \t\t\t\t     MCP_PF_ID(p_hwfn));\n+\tstruct ecore_mcp_mb_params mb_params;\n \tunion drv_union_data union_data;\n \tu32 resp, param;\n \tenum _ecore_status_t rc;\n@@ -545,11 +572,11 @@ enum _ecore_status_t ecore_mcp_ack_vf_flr(struct ecore_hwfn *p_hwfn,\n \t\t\t   \"Acking VFs [%08x,...,%08x] - %08x\\n\",\n \t\t\t   i * 32, (i + 1) * 32 - 1, vfs_to_ack[i]);\n \n+\tOSAL_MEM_ZERO(&mb_params, sizeof(mb_params));\n+\tmb_params.cmd = DRV_MSG_CODE_VF_DISABLED_DONE;\n \tOSAL_MEMCPY(&union_data.ack_vf_disabled, vfs_to_ack, VF_MAX_STATIC / 8);\n-\n-\trc = ecore_mcp_cmd_and_union(p_hwfn, p_ptt,\n-\t\t\t\t     DRV_MSG_CODE_VF_DISABLED_DONE, 0,\n-\t\t\t\t     &union_data, &resp, &param);\n+\tmb_params.p_data_src = &union_data;\n+\trc = ecore_mcp_cmd_and_union(p_hwfn, p_ptt, &mb_params);\n \tif (rc != ECORE_SUCCESS) {\n \t\tDP_NOTICE(p_hwfn, (ECORE_MSG_SP | ECORE_MSG_IOV),\n \t\t\t  \"Failed to pass ACK for VF flr to MFW\\n\");\n@@ -738,6 +765,7 @@ enum _ecore_status_t ecore_mcp_set_link(struct ecore_hwfn *p_hwfn,\n \t\t\t\t\tstruct ecore_ptt *p_ptt, bool b_up)\n {\n \tstruct ecore_mcp_link_params *params = &p_hwfn->mcp_info->link_input;\n+\tstruct ecore_mcp_mb_params mb_params;\n \tunion drv_union_data union_data;\n \tstruct pmm_phy_cfg *p_phy_cfg;\n \tu32 param = 0, reply = 0, cmd;\n@@ -782,8 +810,10 @@ enum _ecore_status_t ecore_mcp_set_link(struct ecore_hwfn *p_hwfn,\n \telse\n \t\tDP_VERBOSE(p_hwfn, ECORE_MSG_LINK, \"Resetting link\\n\");\n \n-\trc = ecore_mcp_cmd_and_union(p_hwfn, p_ptt, cmd, 0, &union_data, &reply,\n-\t\t\t\t     &param);\n+\tOSAL_MEM_ZERO(&mb_params, sizeof(mb_params));\n+\tmb_params.cmd = cmd;\n+\tmb_params.p_data_src = &union_data;\n+\trc = ecore_mcp_cmd_and_union(p_hwfn, p_ptt, &mb_params);\n \n \t/* if mcp fails to respond we must abort */\n \tif (rc != ECORE_SUCCESS) {\n@@ -860,6 +890,7 @@ static void ecore_mcp_send_protocol_stats(struct ecore_hwfn *p_hwfn,\n {\n \tenum ecore_mcp_protocol_type stats_type;\n \tunion ecore_mcp_protocol_stats stats;\n+\tstruct ecore_mcp_mb_params mb_params;\n \tu32 hsi_param, param = 0, reply = 0;\n \tunion drv_union_data union_data;\n \n@@ -875,10 +906,12 @@ static void ecore_mcp_send_protocol_stats(struct ecore_hwfn *p_hwfn,\n \n \tOSAL_GET_PROTOCOL_STATS(p_hwfn->p_dev, stats_type, &stats);\n \n+\tOSAL_MEM_ZERO(&mb_params, sizeof(mb_params));\n+\tmb_params.cmd = DRV_MSG_CODE_GET_STATS;\n+\tmb_params.param = hsi_param;\n \tOSAL_MEMCPY(&union_data, &stats, sizeof(stats));\n-\n-\tecore_mcp_cmd_and_union(p_hwfn, p_ptt, DRV_MSG_CODE_GET_STATS,\n-\t\t\t\thsi_param, &union_data, &reply, &param);\n+\tmb_params.p_data_src = &union_data;\n+\tecore_mcp_cmd_and_union(p_hwfn, p_ptt, &mb_params);\n }\n \n static u32 ecore_mcp_get_shmem_func(struct ecore_hwfn *p_hwfn,\n@@ -1400,6 +1433,7 @@ ecore_mcp_send_drv_version(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt,\n {\n \tu32 param = 0, reply = 0, num_words, i;\n \tstruct drv_version_stc *p_drv_version;\n+\tstruct ecore_mcp_mb_params mb_params;\n \tunion drv_union_data union_data;\n \tvoid *p_name;\n \tOSAL_BE32 val;\n@@ -1419,8 +1453,10 @@ ecore_mcp_send_drv_version(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt,\n \t\t*(u32 *)&p_drv_version->name[i * sizeof(u32)] = val;\n \t}\n \n-\trc = ecore_mcp_cmd_and_union(p_hwfn, p_ptt, DRV_MSG_CODE_SET_VERSION, 0,\n-\t\t\t\t     &union_data, &reply, &param);\n+\tOSAL_MEM_ZERO(&mb_params, sizeof(mb_params));\n+\tmb_params.cmd = DRV_MSG_CODE_SET_VERSION;\n+\tmb_params.p_data_src = &union_data;\n+\trc = ecore_mcp_cmd_and_union(p_hwfn, p_ptt, &mb_params);\n \tif (rc != ECORE_SUCCESS)\n \t\tDP_ERR(p_hwfn, \"MCP response failure, aborting\\n\");\n \ndiff --git a/drivers/net/qede/base/ecore_mcp.h b/drivers/net/qede/base/ecore_mcp.h\nindex 7af4349..28a8f93 100644\n--- a/drivers/net/qede/base/ecore_mcp.h\n+++ b/drivers/net/qede/base/ecore_mcp.h\n@@ -49,6 +49,15 @@ struct ecore_mcp_info {\n \tu16 mcp_hist;\n };\n \n+struct ecore_mcp_mb_params {\n+\tu32 cmd;\n+\tu32 param;\n+\tunion drv_union_data *p_data_src;\n+\tunion drv_union_data *p_data_dst;\n+\tu32 mcp_resp;\n+\tu32 mcp_param;\n+};\n+\n /**\n  * @brief Initialize the interface with the MCP\n  *\n@@ -177,28 +186,6 @@ enum _ecore_status_t ecore_mcp_reset(struct ecore_hwfn *p_hwfn,\n \t\t\t\t     struct ecore_ptt *p_ptt);\n \n /**\n- * @brief - Sets the union data in the MCP mailbox and sends a mailbox command.\n- *\n- * @param p_hwfn       - hw function\n- * @param p_ptt        - PTT required for register access\n- * @param cmd          - command to be sent to the MCP\n- * @param param        - optional param\n- * @param p_union_data - pointer to a drv_union_data\n- * @param o_mcp_resp   - the MCP response code (exclude sequence)\n- * @param o_mcp_param  - optional parameter provided by the MCP response\n- *\n- * @return enum _ecore_status_t -\n- *      ECORE_SUCCESS - operation was successful\n- *      ECORE_BUSY    - operation failed\n- */\n-enum _ecore_status_t ecore_mcp_cmd_and_union(struct ecore_hwfn *p_hwfn,\n-\t\t\t\t\t     struct ecore_ptt *p_ptt,\n-\t\t\t\t\t     u32 cmd, u32 param,\n-\t\t\t\t\t     union drv_union_data *p_union_data,\n-\t\t\t\t\t     u32 *o_mcp_resp,\n-\t\t\t\t\t     u32 *o_mcp_param);\n-\n-/**\n  * @brief - Sends an NVM write command request to the MFW with\n  *          payload.\n  *\n",
    "prefixes": [
        "dpdk-dev",
        "v3",
        "08/32"
    ]
}