get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 93552,
    "url": "http://patches.dpdk.org/api/patches/93552/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20210530085929.29695-4-venkatkumar.duvvuru@broadcom.com/",
    "project": {
        "id": 1,
        "url": "http://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": "<20210530085929.29695-4-venkatkumar.duvvuru@broadcom.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20210530085929.29695-4-venkatkumar.duvvuru@broadcom.com",
    "date": "2021-05-30T08:58:34",
    "name": "[03/58] net/bnxt: add mailbox selection via dev op",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "14d23f4cce3b3c11808fb68f708565d1c91fd007",
    "submitter": {
        "id": 1635,
        "url": "http://patches.dpdk.org/api/people/1635/?format=api",
        "name": "Venkat Duvvuru",
        "email": "venkatkumar.duvvuru@broadcom.com"
    },
    "delegate": {
        "id": 1766,
        "url": "http://patches.dpdk.org/api/users/1766/?format=api",
        "username": "ajitkhaparde",
        "first_name": "Ajit",
        "last_name": "Khaparde",
        "email": "ajit.khaparde@broadcom.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20210530085929.29695-4-venkatkumar.duvvuru@broadcom.com/mbox/",
    "series": [
        {
            "id": 17161,
            "url": "http://patches.dpdk.org/api/series/17161/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=17161",
            "date": "2021-05-30T08:58:31",
            "name": "enhancements to host based flow table management",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/17161/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/93552/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/93552/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 41A68A0524;\n\tSun, 30 May 2021 11:00:54 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id DE4AD410E0;\n\tSun, 30 May 2021 11:00:33 +0200 (CEST)",
            "from relay.smtp-ext.broadcom.com (saphodev.broadcom.com\n [192.19.11.229]) by mails.dpdk.org (Postfix) with ESMTP id 27A6B40E28\n for <dev@dpdk.org>; Sun, 30 May 2021 11:00:31 +0200 (CEST)",
            "from S60.dhcp.broadcom.net (unknown [10.123.66.170])\n (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))\n (No client certificate requested)\n by relay.smtp-ext.broadcom.com (Postfix) with ESMTPS id 8734E7DC0;\n Sun, 30 May 2021 02:00:29 -0700 (PDT)"
        ],
        "DKIM-Filter": "OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 8734E7DC0",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com;\n s=dkimrelay; t=1622365230;\n bh=KNVQC4OANG2Q/PLaz9fXON/OdDRoyCLL6mb1HG7ZHsc=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n b=ug3zoM226cZbt7EOELMST/91NFamsSF2mafIjVoyyGDxIQpvMgDeMXsNU7lYax8YB\n gq2pn9EnhwHtehNMRG3aMnagB72uc9IijuI9VrmuVCYk7IncgWsk9yJ2aYsvEdTf6S\n KdEj4+IeZ1OLNM1qjeDwFzkDyUZ7w+QOD5TcW+Yo=",
        "From": "Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>",
        "To": "dev@dpdk.org",
        "Cc": "Peter Spreadborough <peter.spreadborough@broadcom.com>,\n Randy Schacher <stuart.schacher@broadcom.com>,\n Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>",
        "Date": "Sun, 30 May 2021 14:28:34 +0530",
        "Message-Id": "<20210530085929.29695-4-venkatkumar.duvvuru@broadcom.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20210530085929.29695-1-venkatkumar.duvvuru@broadcom.com>",
        "References": "<20210530085929.29695-1-venkatkumar.duvvuru@broadcom.com>",
        "Subject": "[dpdk-dev] [PATCH 03/58] net/bnxt: add mailbox selection via dev op",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Peter Spreadborough <peter.spreadborough@broadcom.com>\n\nAdd get mailbox dev op so that mailbox offset is based on device\nrather than hard coded.\n\nSigned-off-by: Peter Spreadborough <peter.spreadborough@broadcom.com>\nSigned-off-by: Randy Schacher <stuart.schacher@broadcom.com>\nSigned-off-by: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>\nReviewed-by: Farah Smith <farah.smith@broadcom.com>\n---\n drivers/net/bnxt/tf_core/tf_device.c     |  21 ++\n drivers/net/bnxt/tf_core/tf_device.h     |  12 +\n drivers/net/bnxt/tf_core/tf_device_p4.c  |   8 +\n drivers/net/bnxt/tf_core/tf_device_p58.c |   7 +\n drivers/net/bnxt/tf_core/tf_msg.c        | 410 +++++++++++++++++++++--\n drivers/net/bnxt/tf_core/tf_msg.h        |  12 +-\n drivers/net/bnxt/tf_core/tf_rm.c         |   2 +\n drivers/net/bnxt/tf_core/tf_session.c    |  22 +-\n drivers/net/bnxt/tf_core/tf_tcam.c       |   4 +-\n 9 files changed, 463 insertions(+), 35 deletions(-)",
    "diff": "diff --git a/drivers/net/bnxt/tf_core/tf_device.c b/drivers/net/bnxt/tf_core/tf_device.c\nindex 9c63f6d5d4..5116601a69 100644\n--- a/drivers/net/bnxt/tf_core/tf_device.c\n+++ b/drivers/net/bnxt/tf_core/tf_device.c\n@@ -461,6 +461,27 @@ tf_dev_bind(struct tf *tfp __rte_unused,\n \t}\n }\n \n+int\n+tf_dev_bind_ops(enum tf_device_type type,\n+\t\tstruct tf_dev_info *dev_handle)\n+{\n+\tswitch (type) {\n+\tcase TF_DEVICE_TYPE_WH:\n+\tcase TF_DEVICE_TYPE_SR:\n+\t\tdev_handle->ops = &tf_dev_ops_p4;\n+\t\tbreak;\n+\tcase TF_DEVICE_TYPE_THOR:\n+\t\tdev_handle->ops = &tf_dev_ops_p58;\n+\t\tbreak;\n+\tdefault:\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"No such device\\n\");\n+\t\treturn -ENODEV;\n+\t}\n+\n+\treturn 0;\n+}\n+\n int\n tf_dev_unbind(struct tf *tfp,\n \t      struct tf_dev_info *dev_handle)\ndiff --git a/drivers/net/bnxt/tf_core/tf_device.h b/drivers/net/bnxt/tf_core/tf_device.h\nindex d5ef72309f..cbacc09ea5 100644\n--- a/drivers/net/bnxt/tf_core/tf_device.h\n+++ b/drivers/net/bnxt/tf_core/tf_device.h\n@@ -108,6 +108,10 @@ int tf_dev_bind(struct tf *tfp,\n int tf_dev_unbind(struct tf *tfp,\n \t\t  struct tf_dev_info *dev_handle);\n \n+int\n+tf_dev_bind_ops(enum tf_device_type type,\n+\t\tstruct tf_dev_info *dev_handle);\n+\n /**\n  * Truflow device specific function hooks structure\n  *\n@@ -724,6 +728,14 @@ struct tf_dev_ops {\n \t */\n \tint (*tf_dev_get_global_cfg)(struct tf *tfp,\n \t\t\t\t     struct tf_global_cfg_parms *parms);\n+\n+\t/**\n+\t * Get mailbox\n+\t *\n+\t *    returns:\n+\t *      mailbox\n+\t */\n+\tint (*tf_dev_get_mailbox)(void);\n };\n \n /**\ndiff --git a/drivers/net/bnxt/tf_core/tf_device_p4.c b/drivers/net/bnxt/tf_core/tf_device_p4.c\nindex 257a0fb2d0..6b28f6ce59 100644\n--- a/drivers/net/bnxt/tf_core/tf_device_p4.c\n+++ b/drivers/net/bnxt/tf_core/tf_device_p4.c\n@@ -13,6 +13,7 @@\n #include \"tf_em.h\"\n #include \"tf_if_tbl.h\"\n #include \"tfp.h\"\n+#include \"tf_msg_common.h\"\n \n #define TF_DEV_P4_PARIF_MAX 16\n #define TF_DEV_P4_PF_MASK 0xfUL\n@@ -241,6 +242,11 @@ tf_dev_p4_map_parif(struct tf *tfp __rte_unused,\n \treturn 0;\n }\n \n+static int tf_dev_p4_get_mailbox(void)\n+{\n+\treturn TF_KONG_MB;\n+}\n+\n \n /**\n  * Truflow P4 device specific functions\n@@ -278,6 +284,7 @@ const struct tf_dev_ops tf_dev_ops_p4_init = {\n \t.tf_dev_get_if_tbl = NULL,\n \t.tf_dev_set_global_cfg = NULL,\n \t.tf_dev_get_global_cfg = NULL,\n+\t.tf_dev_get_mailbox = tf_dev_p4_get_mailbox,\n };\n \n /**\n@@ -316,4 +323,5 @@ const struct tf_dev_ops tf_dev_ops_p4 = {\n \t.tf_dev_get_if_tbl = tf_if_tbl_get,\n \t.tf_dev_set_global_cfg = tf_global_cfg_set,\n \t.tf_dev_get_global_cfg = tf_global_cfg_get,\n+\t.tf_dev_get_mailbox = tf_dev_p4_get_mailbox,\n };\ndiff --git a/drivers/net/bnxt/tf_core/tf_device_p58.c b/drivers/net/bnxt/tf_core/tf_device_p58.c\nindex fb5ad29a5c..b4530f8762 100644\n--- a/drivers/net/bnxt/tf_core/tf_device_p58.c\n+++ b/drivers/net/bnxt/tf_core/tf_device_p58.c\n@@ -13,6 +13,7 @@\n #include \"tf_em.h\"\n #include \"tf_if_tbl.h\"\n #include \"tfp.h\"\n+#include \"tf_msg_common.h\"\n \n #define TF_DEV_P58_PARIF_MAX 16\n #define TF_DEV_P58_PF_MASK 0xfUL\n@@ -206,6 +207,10 @@ tf_dev_p58_map_parif(struct tf *tfp __rte_unused,\n \treturn 0;\n }\n \n+static int tf_dev_p58_get_mailbox(void)\n+{\n+\treturn TF_CHIMP_MB;\n+}\n \n /**\n  * Truflow P58 device specific functions\n@@ -243,6 +248,7 @@ const struct tf_dev_ops tf_dev_ops_p58_init = {\n \t.tf_dev_get_if_tbl = NULL,\n \t.tf_dev_set_global_cfg = NULL,\n \t.tf_dev_get_global_cfg = NULL,\n+\t.tf_dev_get_mailbox = tf_dev_p58_get_mailbox,\n };\n \n /**\n@@ -281,4 +287,5 @@ const struct tf_dev_ops tf_dev_ops_p58 = {\n \t.tf_dev_get_if_tbl = tf_if_tbl_get,\n \t.tf_dev_set_global_cfg = tf_global_cfg_set,\n \t.tf_dev_get_global_cfg = tf_global_cfg_get,\n+\t.tf_dev_get_mailbox = tf_dev_p58_get_mailbox,\n };\ndiff --git a/drivers/net/bnxt/tf_core/tf_msg.c b/drivers/net/bnxt/tf_core/tf_msg.c\nindex f20a5113bf..1007211363 100644\n--- a/drivers/net/bnxt/tf_core/tf_msg.c\n+++ b/drivers/net/bnxt/tf_core/tf_msg.c\n@@ -116,7 +116,8 @@ int\n tf_msg_session_open(struct tf *tfp,\n \t\t    char *ctrl_chan_name,\n \t\t    uint8_t *fw_session_id,\n-\t\t    uint8_t *fw_session_client_id)\n+\t\t    uint8_t *fw_session_client_id,\n+\t\t    struct tf_dev_info *dev)\n {\n \tint rc;\n \tstruct hwrm_tf_session_open_input req = { 0 };\n@@ -131,7 +132,7 @@ tf_msg_session_open(struct tf *tfp,\n \tparms.req_size = sizeof(req);\n \tparms.resp_data = (uint32_t *)&resp;\n \tparms.resp_size = sizeof(resp);\n-\tparms.mailbox = TF_KONG_MB;\n+\tparms.mailbox = dev->ops->tf_dev_get_mailbox();\n \n \trc = tfp_send_msg_direct(tfp,\n \t\t\t\t &parms);\n@@ -155,6 +156,7 @@ tf_msg_session_attach(struct tf *tfp __rte_unused,\n \n int\n tf_msg_session_client_register(struct tf *tfp,\n+\t\t\t       struct tf_session *tfs,\n \t\t\t       char *ctrl_channel_name,\n \t\t\t       uint8_t *fw_session_client_id)\n {\n@@ -163,6 +165,16 @@ tf_msg_session_client_register(struct tf *tfp,\n \tstruct hwrm_tf_session_register_output resp = { 0 };\n \tstruct tfp_send_msg_parms parms = { 0 };\n \tuint8_t fw_session_id;\n+\tstruct tf_dev_info *dev;\n+\n+\t/* Retrieve the device information */\n+\trc = tf_session_get_device(tfs, &dev);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"Failed to lookup device, rc:%s\\n\",\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n \n \trc = tf_session_get_fw_session_id(tfp, &fw_session_id);\n \tif (rc) {\n@@ -183,7 +195,7 @@ tf_msg_session_client_register(struct tf *tfp,\n \tparms.req_size = sizeof(req);\n \tparms.resp_data = (uint32_t *)&resp;\n \tparms.resp_size = sizeof(resp);\n-\tparms.mailbox = TF_KONG_MB;\n+\tparms.mailbox = dev->ops->tf_dev_get_mailbox();\n \n \trc = tfp_send_msg_direct(tfp,\n \t\t\t\t &parms);\n@@ -198,6 +210,7 @@ tf_msg_session_client_register(struct tf *tfp,\n \n int\n tf_msg_session_client_unregister(struct tf *tfp,\n+\t\t\t\t struct tf_session *tfs,\n \t\t\t\t uint8_t fw_session_client_id)\n {\n \tint rc;\n@@ -205,6 +218,16 @@ tf_msg_session_client_unregister(struct tf *tfp,\n \tstruct hwrm_tf_session_unregister_output resp = { 0 };\n \tstruct tfp_send_msg_parms parms = { 0 };\n \tuint8_t fw_session_id;\n+\tstruct tf_dev_info *dev;\n+\n+\t/* Retrieve the device information */\n+\trc = tf_session_get_device(tfs, &dev);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"Failed to lookup device, rc:%s\\n\",\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n \n \trc = tf_session_get_fw_session_id(tfp, &fw_session_id);\n \tif (rc) {\n@@ -223,7 +246,7 @@ tf_msg_session_client_unregister(struct tf *tfp,\n \tparms.req_size = sizeof(req);\n \tparms.resp_data = (uint32_t *)&resp;\n \tparms.resp_size = sizeof(resp);\n-\tparms.mailbox = TF_KONG_MB;\n+\tparms.mailbox = dev->ops->tf_dev_get_mailbox();\n \n \trc = tfp_send_msg_direct(tfp,\n \t\t\t\t &parms);\n@@ -232,13 +255,24 @@ tf_msg_session_client_unregister(struct tf *tfp,\n }\n \n int\n-tf_msg_session_close(struct tf *tfp)\n+tf_msg_session_close(struct tf *tfp,\n+\t\t     struct tf_session *tfs)\n {\n \tint rc;\n \tstruct hwrm_tf_session_close_input req = { 0 };\n \tstruct hwrm_tf_session_close_output resp = { 0 };\n \tstruct tfp_send_msg_parms parms = { 0 };\n \tuint8_t fw_session_id;\n+\tstruct tf_dev_info *dev;\n+\n+\t/* Retrieve the device information */\n+\trc = tf_session_get_device(tfs, &dev);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"Failed to lookup device, rc:%s\\n\",\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n \n \trc = tf_session_get_fw_session_id(tfp, &fw_session_id);\n \tif (rc) {\n@@ -256,7 +290,7 @@ tf_msg_session_close(struct tf *tfp)\n \tparms.req_size = sizeof(req);\n \tparms.resp_data = (uint32_t *)&resp;\n \tparms.resp_size = sizeof(resp);\n-\tparms.mailbox = TF_KONG_MB;\n+\tparms.mailbox = dev->ops->tf_dev_get_mailbox();\n \n \trc = tfp_send_msg_direct(tfp,\n \t\t\t\t &parms);\n@@ -271,6 +305,26 @@ tf_msg_session_qcfg(struct tf *tfp)\n \tstruct hwrm_tf_session_qcfg_output resp = { 0 };\n \tstruct tfp_send_msg_parms parms = { 0 };\n \tuint8_t fw_session_id;\n+\tstruct tf_dev_info *dev;\n+\tstruct tf_session *tfs;\n+\n+\t/* Retrieve the session information */\n+\trc = tf_session_get_session_internal(tfp, &tfs);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"Failed to lookup session, rc:%s\\n\",\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n+\n+\t/* Retrieve the device information */\n+\trc = tf_session_get_device(tfs, &dev);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"Failed to lookup device, rc:%s\\n\",\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n \n \trc = tf_session_get_fw_session_id(tfp, &fw_session_id);\n \tif (rc) {\n@@ -288,7 +342,7 @@ tf_msg_session_qcfg(struct tf *tfp)\n \tparms.req_size = sizeof(req);\n \tparms.resp_data = (uint32_t *)&resp;\n \tparms.resp_size = sizeof(resp);\n-\tparms.mailbox = TF_KONG_MB;\n+\tparms.mailbox = dev->ops->tf_dev_get_mailbox();\n \n \trc = tfp_send_msg_direct(tfp,\n \t\t\t\t &parms);\n@@ -297,6 +351,7 @@ tf_msg_session_qcfg(struct tf *tfp)\n \n int\n tf_msg_session_resc_qcaps(struct tf *tfp,\n+\t\t\t  struct tf_dev_info *dev,\n \t\t\t  enum tf_dir dir,\n \t\t\t  uint16_t size,\n \t\t\t  struct tf_rm_resc_req_entry *query,\n@@ -340,7 +395,7 @@ tf_msg_session_resc_qcaps(struct tf *tfp,\n \tparms.req_size = sizeof(req);\n \tparms.resp_data = (uint32_t *)&resp;\n \tparms.resp_size = sizeof(resp);\n-\tparms.mailbox = TF_KONG_MB;\n+\tparms.mailbox = dev->ops->tf_dev_get_mailbox();\n \n \trc = tfp_send_msg_direct(tfp, &parms);\n \tif (rc)\n@@ -378,6 +433,7 @@ tf_msg_session_resc_qcaps(struct tf *tfp,\n \n int\n tf_msg_session_resc_alloc(struct tf *tfp,\n+\t\t\t  struct tf_dev_info *dev,\n \t\t\t  enum tf_dir dir,\n \t\t\t  uint16_t size,\n \t\t\t  struct tf_rm_resc_req_entry *request,\n@@ -439,7 +495,7 @@ tf_msg_session_resc_alloc(struct tf *tfp,\n \tparms.req_size = sizeof(req);\n \tparms.resp_data = (uint32_t *)&resp;\n \tparms.resp_size = sizeof(resp);\n-\tparms.mailbox = TF_KONG_MB;\n+\tparms.mailbox = dev->ops->tf_dev_get_mailbox();\n \n \trc = tfp_send_msg_direct(tfp, &parms);\n \tif (rc)\n@@ -487,9 +543,31 @@ tf_msg_session_resc_flush(struct tf *tfp,\n \tstruct tf_msg_dma_buf resv_buf = { 0 };\n \tstruct tf_rm_resc_entry *resv_data;\n \tint dma_size;\n+\tstruct tf_dev_info *dev;\n+\tstruct tf_session *tfs;\n \n \tTF_CHECK_PARMS2(tfp, resv);\n \n+\t/* Retrieve the session information */\n+\trc = tf_session_get_session_internal(tfp, &tfs);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"%s: Failed to lookup session, rc:%s\\n\",\n+\t\t\t    tf_dir_2_str(dir),\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n+\n+\t/* Retrieve the device information */\n+\trc = tf_session_get_device(tfs, &dev);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"%s: Failed to lookup device, rc:%s\\n\",\n+\t\t\t    tf_dir_2_str(dir),\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n+\n \trc = tf_session_get_fw_session_id(tfp, &fw_session_id);\n \tif (rc) {\n \t\tTFP_DRV_LOG(ERR,\n@@ -524,7 +602,7 @@ tf_msg_session_resc_flush(struct tf *tfp,\n \tparms.req_size = sizeof(req);\n \tparms.resp_data = (uint32_t *)&resp;\n \tparms.resp_size = sizeof(resp);\n-\tparms.mailbox = TF_KONG_MB;\n+\tparms.mailbox = dev->ops->tf_dev_get_mailbox();\n \n \trc = tfp_send_msg_direct(tfp, &parms);\n \n@@ -549,6 +627,28 @@ tf_msg_insert_em_internal_entry(struct tf *tfp,\n \tuint16_t flags;\n \tuint8_t fw_session_id;\n \tuint8_t msg_key_size;\n+\tstruct tf_dev_info *dev;\n+\tstruct tf_session *tfs;\n+\n+\t/* Retrieve the session information */\n+\trc = tf_session_get_session_internal(tfp, &tfs);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"%s: Failed to lookup session, rc:%s\\n\",\n+\t\t\t    tf_dir_2_str(em_parms->dir),\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n+\n+\t/* Retrieve the device information */\n+\trc = tf_session_get_device(tfs, &dev);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"%s: Failed to lookup device, rc:%s\\n\",\n+\t\t\t    tf_dir_2_str(em_parms->dir),\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n \n \trc = tf_session_get_fw_session_id(tfp, &fw_session_id);\n \tif (rc) {\n@@ -593,7 +693,7 @@ tf_msg_insert_em_internal_entry(struct tf *tfp,\n \tparms.req_size = sizeof(req);\n \tparms.resp_data = (uint32_t *)&resp;\n \tparms.resp_size = sizeof(resp);\n-\tparms.mailbox = TF_KONG_MB;\n+\tparms.mailbox = dev->ops->tf_dev_get_mailbox();\n \n \trc = tfp_send_msg_direct(tfp,\n \t\t\t\t &parms);\n@@ -617,6 +717,28 @@ tf_msg_delete_em_entry(struct tf *tfp,\n \tstruct hwrm_tf_em_delete_output resp = { 0 };\n \tuint16_t flags;\n \tuint8_t fw_session_id;\n+\tstruct tf_dev_info *dev;\n+\tstruct tf_session *tfs;\n+\n+\t/* Retrieve the session information */\n+\trc = tf_session_get_session_internal(tfp, &tfs);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"%s: Failed to lookup session, rc:%s\\n\",\n+\t\t\t    tf_dir_2_str(em_parms->dir),\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n+\n+\t/* Retrieve the device information */\n+\trc = tf_session_get_device(tfs, &dev);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"%s: Failed to lookup device, rc:%s\\n\",\n+\t\t\t    tf_dir_2_str(em_parms->dir),\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n \n \trc = tf_session_get_fw_session_id(tfp, &fw_session_id);\n \tif (rc) {\n@@ -641,7 +763,7 @@ tf_msg_delete_em_entry(struct tf *tfp,\n \tparms.req_size = sizeof(req);\n \tparms.resp_data = (uint32_t *)&resp;\n \tparms.resp_size = sizeof(resp);\n-\tparms.mailbox = TF_KONG_MB;\n+\tparms.mailbox = dev->ops->tf_dev_get_mailbox();\n \n \trc = tfp_send_msg_direct(tfp,\n \t\t\t\t &parms);\n@@ -664,6 +786,26 @@ tf_msg_em_mem_rgtr(struct tf *tfp,\n \tstruct hwrm_tf_ctxt_mem_rgtr_input req = { 0 };\n \tstruct hwrm_tf_ctxt_mem_rgtr_output resp = { 0 };\n \tstruct tfp_send_msg_parms parms = { 0 };\n+\tstruct tf_dev_info *dev;\n+\tstruct tf_session *tfs;\n+\n+\t/* Retrieve the session information */\n+\trc = tf_session_get_session_internal(tfp, &tfs);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"Failed to lookup session, rc:%s\\n\",\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n+\n+\t/* Retrieve the device information */\n+\trc = tf_session_get_device(tfs, &dev);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"Failed to lookup device, rc:%s\\n\",\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n \n \treq.page_level = page_lvl;\n \treq.page_size = page_size;\n@@ -674,7 +816,7 @@ tf_msg_em_mem_rgtr(struct tf *tfp,\n \tparms.req_size = sizeof(req);\n \tparms.resp_data = (uint32_t *)&resp;\n \tparms.resp_size = sizeof(resp);\n-\tparms.mailbox = TF_KONG_MB;\n+\tparms.mailbox = dev->ops->tf_dev_get_mailbox();\n \n \trc = tfp_send_msg_direct(tfp,\n \t\t\t\t &parms);\n@@ -694,6 +836,26 @@ tf_msg_em_mem_unrgtr(struct tf *tfp,\n \tstruct hwrm_tf_ctxt_mem_unrgtr_input req = {0};\n \tstruct hwrm_tf_ctxt_mem_unrgtr_output resp = {0};\n \tstruct tfp_send_msg_parms parms = { 0 };\n+\tstruct tf_dev_info *dev;\n+\tstruct tf_session *tfs;\n+\n+\t/* Retrieve the session information */\n+\trc = tf_session_get_session_internal(tfp, &tfs);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"Failed to lookup session, rc:%s\\n\",\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n+\n+\t/* Retrieve the device information */\n+\trc = tf_session_get_device(tfs, &dev);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"Failed to lookup device, rc:%s\\n\",\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n \n \treq.ctx_id = tfp_cpu_to_le_32(*ctx_id);\n \n@@ -702,7 +864,7 @@ tf_msg_em_mem_unrgtr(struct tf *tfp,\n \tparms.req_size = sizeof(req);\n \tparms.resp_data = (uint32_t *)&resp;\n \tparms.resp_size = sizeof(resp);\n-\tparms.mailbox = TF_KONG_MB;\n+\tparms.mailbox = dev->ops->tf_dev_get_mailbox();\n \n \trc = tfp_send_msg_direct(tfp,\n \t\t\t\t &parms);\n@@ -719,6 +881,28 @@ tf_msg_em_qcaps(struct tf *tfp,\n \tstruct hwrm_tf_ext_em_qcaps_output resp = { 0 };\n \tuint32_t             flags;\n \tstruct tfp_send_msg_parms parms = { 0 };\n+\tstruct tf_dev_info *dev;\n+\tstruct tf_session *tfs;\n+\n+\t/* Retrieve the session information */\n+\trc = tf_session_get_session_internal(tfp, &tfs);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"%s: Failed to lookup session, rc:%s\\n\",\n+\t\t\t    tf_dir_2_str(dir),\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n+\n+\t/* Retrieve the device information */\n+\trc = tf_session_get_device(tfs, &dev);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"%s: Failed to lookup device, rc:%s\\n\",\n+\t\t\t    tf_dir_2_str(dir),\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n \n \tflags = (dir == TF_DIR_TX ? HWRM_TF_EXT_EM_QCAPS_INPUT_FLAGS_DIR_TX :\n \t\t HWRM_TF_EXT_EM_QCAPS_INPUT_FLAGS_DIR_RX);\n@@ -729,7 +913,7 @@ tf_msg_em_qcaps(struct tf *tfp,\n \tparms.req_size = sizeof(req);\n \tparms.resp_data = (uint32_t *)&resp;\n \tparms.resp_size = sizeof(resp);\n-\tparms.mailbox = TF_KONG_MB;\n+\tparms.mailbox = dev->ops->tf_dev_get_mailbox();\n \n \trc = tfp_send_msg_direct(tfp,\n \t\t\t\t &parms);\n@@ -762,6 +946,28 @@ tf_msg_em_cfg(struct tf *tfp,\n \tstruct hwrm_tf_ext_em_cfg_output resp = {0};\n \tuint32_t flags;\n \tstruct tfp_send_msg_parms parms = { 0 };\n+\tstruct tf_dev_info *dev;\n+\tstruct tf_session *tfs;\n+\n+\t/* Retrieve the session information */\n+\trc = tf_session_get_session_internal(tfp, &tfs);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"%s: Failed to lookup session, rc:%s\\n\",\n+\t\t\t    tf_dir_2_str(dir),\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n+\n+\t/* Retrieve the device information */\n+\trc = tf_session_get_device(tfs, &dev);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"%s: Failed to lookup device, rc:%s\\n\",\n+\t\t\t    tf_dir_2_str(dir),\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n \n \tflags = (dir == TF_DIR_TX ? HWRM_TF_EXT_EM_CFG_INPUT_FLAGS_DIR_TX :\n \t\t HWRM_TF_EXT_EM_CFG_INPUT_FLAGS_DIR_RX);\n@@ -782,7 +988,7 @@ tf_msg_em_cfg(struct tf *tfp,\n \tparms.req_size = sizeof(req);\n \tparms.resp_data = (uint32_t *)&resp;\n \tparms.resp_size = sizeof(resp);\n-\tparms.mailbox = TF_KONG_MB;\n+\tparms.mailbox = dev->ops->tf_dev_get_mailbox();\n \n \trc = tfp_send_msg_direct(tfp,\n \t\t\t\t &parms);\n@@ -799,6 +1005,28 @@ tf_msg_em_op(struct tf *tfp,\n \tstruct hwrm_tf_ext_em_op_output resp = {0};\n \tuint32_t flags;\n \tstruct tfp_send_msg_parms parms = { 0 };\n+\tstruct tf_dev_info *dev;\n+\tstruct tf_session *tfs;\n+\n+\t/* Retrieve the session information */\n+\trc = tf_session_get_session_internal(tfp, &tfs);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"%s: Failed to lookup session, rc:%s\\n\",\n+\t\t\t    tf_dir_2_str(dir),\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n+\n+\t/* Retrieve the device information */\n+\trc = tf_session_get_device(tfs, &dev);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"%s: Failed to lookup device, rc:%s\\n\",\n+\t\t\t    tf_dir_2_str(dir),\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n \n \tflags = (dir == TF_DIR_TX ? HWRM_TF_EXT_EM_CFG_INPUT_FLAGS_DIR_TX :\n \t\t HWRM_TF_EXT_EM_CFG_INPUT_FLAGS_DIR_RX);\n@@ -810,7 +1038,7 @@ tf_msg_em_op(struct tf *tfp,\n \tparms.req_size = sizeof(req);\n \tparms.resp_data = (uint32_t *)&resp;\n \tparms.resp_size = sizeof(resp);\n-\tparms.mailbox = TF_KONG_MB;\n+\tparms.mailbox = dev->ops->tf_dev_get_mailbox();\n \n \trc = tfp_send_msg_direct(tfp,\n \t\t\t\t &parms);\n@@ -819,6 +1047,7 @@ tf_msg_em_op(struct tf *tfp,\n \n int\n tf_msg_tcam_entry_set(struct tf *tfp,\n+\t\t      struct tf_dev_info *dev,\n \t\t      struct tf_tcam_set_parms *parms)\n {\n \tint rc;\n@@ -877,7 +1106,7 @@ tf_msg_tcam_entry_set(struct tf *tfp,\n \tmparms.req_size = sizeof(req);\n \tmparms.resp_data = (uint32_t *)&resp;\n \tmparms.resp_size = sizeof(resp);\n-\tmparms.mailbox = TF_KONG_MB;\n+\tmparms.mailbox = dev->ops->tf_dev_get_mailbox();\n \n \trc = tfp_send_msg_direct(tfp,\n \t\t\t\t &mparms);\n@@ -890,6 +1119,7 @@ tf_msg_tcam_entry_set(struct tf *tfp,\n \n int\n tf_msg_tcam_entry_free(struct tf *tfp,\n+\t\t       struct tf_dev_info *dev,\n \t\t       struct tf_tcam_free_parms *in_parms)\n {\n \tint rc;\n@@ -920,7 +1150,7 @@ tf_msg_tcam_entry_free(struct tf *tfp,\n \tparms.req_size = sizeof(req);\n \tparms.resp_data = (uint32_t *)&resp;\n \tparms.resp_size = sizeof(resp);\n-\tparms.mailbox = TF_KONG_MB;\n+\tparms.mailbox = dev->ops->tf_dev_get_mailbox();\n \n \trc = tfp_send_msg_direct(tfp,\n \t\t\t\t &parms);\n@@ -940,6 +1170,28 @@ tf_msg_set_tbl_entry(struct tf *tfp,\n \tstruct hwrm_tf_tbl_type_set_output resp = { 0 };\n \tstruct tfp_send_msg_parms parms = { 0 };\n \tuint8_t fw_session_id;\n+\tstruct tf_dev_info *dev;\n+\tstruct tf_session *tfs;\n+\n+\t/* Retrieve the session information */\n+\trc = tf_session_get_session_internal(tfp, &tfs);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"%s: Failed to lookup session, rc:%s\\n\",\n+\t\t\t    tf_dir_2_str(dir),\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n+\n+\t/* Retrieve the device information */\n+\trc = tf_session_get_device(tfs, &dev);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"%s: Failed to lookup device, rc:%s\\n\",\n+\t\t\t    tf_dir_2_str(dir),\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n \n \trc = tf_session_get_fw_session_id(tfp, &fw_session_id);\n \tif (rc) {\n@@ -976,7 +1228,7 @@ tf_msg_set_tbl_entry(struct tf *tfp,\n \tparms.req_size = sizeof(req);\n \tparms.resp_data = (uint32_t *)&resp;\n \tparms.resp_size = sizeof(resp);\n-\tparms.mailbox = TF_KONG_MB;\n+\tparms.mailbox = dev->ops->tf_dev_get_mailbox();\n \n \trc = tfp_send_msg_direct(tfp,\n \t\t\t\t &parms);\n@@ -999,6 +1251,28 @@ tf_msg_get_tbl_entry(struct tf *tfp,\n \tstruct hwrm_tf_tbl_type_get_output resp = { 0 };\n \tstruct tfp_send_msg_parms parms = { 0 };\n \tuint8_t fw_session_id;\n+\tstruct tf_dev_info *dev;\n+\tstruct tf_session *tfs;\n+\n+\t/* Retrieve the session information */\n+\trc = tf_session_get_session_internal(tfp, &tfs);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"%s: Failed to lookup session, rc:%s\\n\",\n+\t\t\t    tf_dir_2_str(dir),\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n+\n+\t/* Retrieve the device information */\n+\trc = tf_session_get_device(tfs, &dev);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"%s: Failed to lookup device, rc:%s\\n\",\n+\t\t\t    tf_dir_2_str(dir),\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n \n \trc = tf_session_get_fw_session_id(tfp, &fw_session_id);\n \tif (rc) {\n@@ -1020,7 +1294,7 @@ tf_msg_get_tbl_entry(struct tf *tfp,\n \tparms.req_size = sizeof(req);\n \tparms.resp_data = (uint32_t *)&resp;\n \tparms.resp_size = sizeof(resp);\n-\tparms.mailbox = TF_KONG_MB;\n+\tparms.mailbox = dev->ops->tf_dev_get_mailbox();\n \n \trc = tfp_send_msg_direct(tfp,\n \t\t\t\t &parms);\n@@ -1051,6 +1325,28 @@ tf_msg_get_global_cfg(struct tf *tfp,\n \tuint32_t flags = 0;\n \tuint8_t fw_session_id;\n \tuint16_t resp_size = 0;\n+\tstruct tf_dev_info *dev;\n+\tstruct tf_session *tfs;\n+\n+\t/* Retrieve the session information */\n+\trc = tf_session_get_session_internal(tfp, &tfs);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"%s: Failed to lookup session, rc:%s\\n\",\n+\t\t\t    tf_dir_2_str(params->dir),\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n+\n+\t/* Retrieve the device information */\n+\trc = tf_session_get_device(tfs, &dev);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"%s: Failed to lookup device, rc:%s\\n\",\n+\t\t\t    tf_dir_2_str(params->dir),\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n \n \trc = tf_session_get_fw_session_id(tfp, &fw_session_id);\n \tif (rc) {\n@@ -1077,7 +1373,7 @@ tf_msg_get_global_cfg(struct tf *tfp,\n \tparms.req_size = sizeof(req);\n \tparms.resp_data = (uint32_t *)&resp;\n \tparms.resp_size = sizeof(resp);\n-\tparms.mailbox = TF_KONG_MB;\n+\tparms.mailbox = dev->ops->tf_dev_get_mailbox();\n \n \trc = tfp_send_msg_direct(tfp, &parms);\n \tif (rc != 0)\n@@ -1108,6 +1404,28 @@ tf_msg_set_global_cfg(struct tf *tfp,\n \tstruct hwrm_tf_global_cfg_set_output resp = { 0 };\n \tuint32_t flags = 0;\n \tuint8_t fw_session_id;\n+\tstruct tf_dev_info *dev;\n+\tstruct tf_session *tfs;\n+\n+\t/* Retrieve the session information */\n+\trc = tf_session_get_session_internal(tfp, &tfs);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"%s: Failed to lookup session, rc:%s\\n\",\n+\t\t\t    tf_dir_2_str(params->dir),\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n+\n+\t/* Retrieve the device information */\n+\trc = tf_session_get_device(tfs, &dev);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"%s: Failed to lookup device, rc:%s\\n\",\n+\t\t\t    tf_dir_2_str(params->dir),\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n \n \trc = tf_session_get_fw_session_id(tfp, &fw_session_id);\n \tif (rc) {\n@@ -1156,7 +1474,7 @@ tf_msg_set_global_cfg(struct tf *tfp,\n \tparms.req_size = sizeof(req);\n \tparms.resp_data = (uint32_t *)&resp;\n \tparms.resp_size = sizeof(resp);\n-\tparms.mailbox = TF_KONG_MB;\n+\tparms.mailbox = dev->ops->tf_dev_get_mailbox();\n \n \trc = tfp_send_msg_direct(tfp, &parms);\n \n@@ -1181,6 +1499,28 @@ tf_msg_bulk_get_tbl_entry(struct tf *tfp,\n \tstruct tf_tbl_type_bulk_get_output resp = { 0 };\n \tint data_size = 0;\n \tuint8_t fw_session_id;\n+\tstruct tf_dev_info *dev;\n+\tstruct tf_session *tfs;\n+\n+\t/* Retrieve the session information */\n+\trc = tf_session_get_session(tfp, &tfs);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"%s: Failed to lookup session, rc:%s\\n\",\n+\t\t\t    tf_dir_2_str(dir),\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n+\n+\t/* Retrieve the device information */\n+\trc = tf_session_get_device(tfs, &dev);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"%s: Failed to lookup device, rc:%s\\n\",\n+\t\t\t    tf_dir_2_str(dir),\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n \n \trc = tf_session_get_fw_session_id(tfp, &fw_session_id);\n \tif (rc) {\n@@ -1203,7 +1543,7 @@ tf_msg_bulk_get_tbl_entry(struct tf *tfp,\n \treq.host_addr = tfp_cpu_to_le_64(physical_mem_addr);\n \n \tMSG_PREP(parms,\n-\t\t TF_KONG_MB,\n+\t\t dev->ops->tf_dev_get_mailbox(),\n \t\t HWRM_TF,\n \t\t HWRM_TFT_TBL_TYPE_BULK_GET,\n \t\t req,\n@@ -1229,6 +1569,7 @@ tf_msg_get_if_tbl_entry(struct tf *tfp,\n \tstruct hwrm_tf_if_tbl_get_input req = { 0 };\n \tstruct hwrm_tf_if_tbl_get_output resp = { 0 };\n \tuint32_t flags = 0;\n+\tstruct tf_dev_info *dev;\n \tstruct tf_session *tfs;\n \n \t/* Retrieve the session information */\n@@ -1241,6 +1582,16 @@ tf_msg_get_if_tbl_entry(struct tf *tfp,\n \t\treturn rc;\n \t}\n \n+\t/* Retrieve the device information */\n+\trc = tf_session_get_device(tfs, &dev);\n+\tif (rc) {\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"%s: Failed to lookup device, rc:%s\\n\",\n+\t\t\t    tf_dir_2_str(params->dir),\n+\t\t\t    strerror(-rc));\n+\t\treturn rc;\n+\t}\n+\n \tflags = (params->dir == TF_DIR_TX ?\n \t\tHWRM_TF_IF_TBL_GET_INPUT_FLAGS_DIR_TX :\n \t\tHWRM_TF_IF_TBL_GET_INPUT_FLAGS_DIR_RX);\n@@ -1258,7 +1609,7 @@ tf_msg_get_if_tbl_entry(struct tf *tfp,\n \tparms.req_size = sizeof(req);\n \tparms.resp_data = (uint32_t *)&resp;\n \tparms.resp_size = sizeof(resp);\n-\tparms.mailbox = TF_KONG_MB;\n+\tparms.mailbox = dev->ops->tf_dev_get_mailbox();\n \n \trc = tfp_send_msg_direct(tfp, &parms);\n \n@@ -1268,7 +1619,7 @@ tf_msg_get_if_tbl_entry(struct tf *tfp,\n \tif (parms.tf_resp_code != 0)\n \t\treturn tfp_le_to_cpu_32(parms.tf_resp_code);\n \n-\ttfp_memcpy(&params->data[0], resp.data, req.size);\n+\ttfp_memcpy(params->data, resp.data, req.size);\n \n \treturn tfp_le_to_cpu_32(parms.tf_resp_code);\n }\n@@ -1282,6 +1633,7 @@ tf_msg_set_if_tbl_entry(struct tf *tfp,\n \tstruct hwrm_tf_if_tbl_set_input req = { 0 };\n \tstruct hwrm_tf_if_tbl_get_output resp = { 0 };\n \tuint32_t flags = 0;\n+\tstruct tf_dev_info *dev;\n \tstruct tf_session *tfs;\n \n \t/* Retrieve the session information */\n@@ -1294,6 +1646,10 @@ tf_msg_set_if_tbl_entry(struct tf *tfp,\n \t\treturn rc;\n \t}\n \n+\t/* Retrieve the device information */\n+\trc = tf_session_get_device(tfs, &dev);\n+\tif (rc)\n+\t\treturn rc;\n \n \tflags = (params->dir == TF_DIR_TX ?\n \t\tHWRM_TF_IF_TBL_SET_INPUT_FLAGS_DIR_TX :\n@@ -1313,7 +1669,7 @@ tf_msg_set_if_tbl_entry(struct tf *tfp,\n \tparms.req_size = sizeof(req);\n \tparms.resp_data = (uint32_t *)&resp;\n \tparms.resp_size = sizeof(resp);\n-\tparms.mailbox = TF_KONG_MB;\n+\tparms.mailbox = dev->ops->tf_dev_get_mailbox();\n \n \trc = tfp_send_msg_direct(tfp, &parms);\n \ndiff --git a/drivers/net/bnxt/tf_core/tf_msg.h b/drivers/net/bnxt/tf_core/tf_msg.h\nindex 0a2566010c..25e29a554f 100644\n--- a/drivers/net/bnxt/tf_core/tf_msg.h\n+++ b/drivers/net/bnxt/tf_core/tf_msg.h\n@@ -36,7 +36,8 @@ struct tf;\n int tf_msg_session_open(struct tf *tfp,\n \t\t\tchar *ctrl_chan_name,\n \t\t\tuint8_t *fw_session_id,\n-\t\t\tuint8_t *fw_session_client_id);\n+\t\t\tuint8_t *fw_session_client_id,\n+\t\t\tstruct tf_dev_info *dev);\n \n /**\n  * Sends session close request to Firmware\n@@ -75,6 +76,7 @@ int tf_msg_session_attach(struct tf *tfp,\n  *   0 on Success else internal Truflow error\n  */\n int tf_msg_session_client_register(struct tf *tfp,\n+\t\t\t\t   struct tf_session *tfs,\n \t\t\t\t   char *ctrl_channel_name,\n \t\t\t\t   uint8_t *fw_session_client_id);\n \n@@ -92,6 +94,7 @@ int tf_msg_session_client_register(struct tf *tfp,\n  *   0 on Success else internal Truflow error\n  */\n int tf_msg_session_client_unregister(struct tf *tfp,\n+\t\t\t\t     struct tf_session *tfs,\n \t\t\t\t     uint8_t fw_session_client_id);\n \n /**\n@@ -103,7 +106,8 @@ int tf_msg_session_client_unregister(struct tf *tfp,\n  * Returns:\n  *   0 on Success else internal Truflow error\n  */\n-int tf_msg_session_close(struct tf *tfp);\n+int tf_msg_session_close(struct tf *tfp,\n+\t\t\t struct tf_session *tfs);\n \n /**\n  * Sends session query config request to TF Firmware\n@@ -139,6 +143,7 @@ int tf_msg_session_qcfg(struct tf *tfp);\n  *   0 on Success else internal Truflow error\n  */\n int tf_msg_session_resc_qcaps(struct tf *tfp,\n+\t\t\t      struct tf_dev_info *dev,\n \t\t\t      enum tf_dir dir,\n \t\t\t      uint16_t size,\n \t\t\t      struct tf_rm_resc_req_entry *query,\n@@ -166,6 +171,7 @@ int tf_msg_session_resc_qcaps(struct tf *tfp,\n  *   0 on Success else internal Truflow error\n  */\n int tf_msg_session_resc_alloc(struct tf *tfp,\n+\t\t\t      struct tf_dev_info *dev,\n \t\t\t      enum tf_dir dir,\n \t\t\t      uint16_t size,\n \t\t\t      struct tf_rm_resc_req_entry *request,\n@@ -368,6 +374,7 @@ int tf_msg_em_op(struct tf *tfp,\n  *  0 on Success else internal Truflow error\n  */\n int tf_msg_tcam_entry_set(struct tf *tfp,\n+\t\t\t  struct tf_dev_info *dev,\n \t\t\t  struct tf_tcam_set_parms *parms);\n \n /**\n@@ -383,6 +390,7 @@ int tf_msg_tcam_entry_set(struct tf *tfp,\n  *  0 on Success else internal Truflow error\n  */\n int tf_msg_tcam_entry_free(struct tf *tfp,\n+\t\t\t   struct tf_dev_info *dev,\n \t\t\t   struct tf_tcam_free_parms *parms);\n \n /**\ndiff --git a/drivers/net/bnxt/tf_core/tf_rm.c b/drivers/net/bnxt/tf_core/tf_rm.c\nindex f93a6d9018..2c08fb80fe 100644\n--- a/drivers/net/bnxt/tf_core/tf_rm.c\n+++ b/drivers/net/bnxt/tf_core/tf_rm.c\n@@ -415,6 +415,7 @@ tf_rm_create_db(struct tf *tfp,\n \n \t/* Get Firmware Capabilities */\n \trc = tf_msg_session_resc_qcaps(tfp,\n+\t\t\t\t       dev,\n \t\t\t\t       parms->dir,\n \t\t\t\t       max_types,\n \t\t\t\t       query,\n@@ -499,6 +500,7 @@ tf_rm_create_db(struct tf *tfp,\n \t}\n \n \trc = tf_msg_session_resc_alloc(tfp,\n+\t\t\t\t       dev,\n \t\t\t\t       parms->dir,\n \t\t\t\t       hcapi_items,\n \t\t\t\t       req,\ndiff --git a/drivers/net/bnxt/tf_core/tf_session.c b/drivers/net/bnxt/tf_core/tf_session.c\nindex 6335ad358c..b3fa7e13ff 100644\n--- a/drivers/net/bnxt/tf_core/tf_session.c\n+++ b/drivers/net/bnxt/tf_core/tf_session.c\n@@ -56,14 +56,19 @@ tf_session_create(struct tf *tfp,\n \tuint8_t fw_session_id;\n \tuint8_t fw_session_client_id;\n \tunion tf_session_id *session_id;\n+\tstruct tf_dev_info dev;\n \n \tTF_CHECK_PARMS2(tfp, parms);\n \n+\ttf_dev_bind_ops(parms->open_cfg->device_type,\n+\t\t\t&dev);\n+\n \t/* Open FW session and get a new session_id */\n \trc = tf_msg_session_open(tfp,\n \t\t\t\t parms->open_cfg->ctrl_chan_name,\n \t\t\t\t &fw_session_id,\n-\t\t\t\t &fw_session_client_id);\n+\t\t\t\t &fw_session_client_id,\n+\t\t\t\t &dev);\n \tif (rc) {\n \t\t/* Log error */\n \t\tif (rc == -EEXIST)\n@@ -177,6 +182,13 @@ tf_session_create(struct tf *tfp,\n \tif (rc)\n \t\treturn rc;\n \n+\tif (session->dev.ops->tf_dev_get_mailbox == NULL) {\n+\t\t/* Log error */\n+\t\tTFP_DRV_LOG(ERR,\n+\t\t\t    \"No tf_dev_get_mailbox() defined for device\\n\");\n+\t\tgoto cleanup;\n+\t}\n+\n \tsession->dev_init = true;\n \n \treturn 0;\n@@ -234,8 +246,9 @@ tf_session_client_create(struct tf *tfp,\n \n \trc = tf_msg_session_client_register\n \t\t    (tfp,\n-\t\t    parms->ctrl_chan_name,\n-\t\t    &session_client_id.internal.fw_session_client_id);\n+\t\t     session,\n+\t\t     parms->ctrl_chan_name,\n+\t\t     &session_client_id.internal.fw_session_client_id);\n \tif (rc) {\n \t\tTFP_DRV_LOG(ERR,\n \t\t\t    \"Failed to create client on session, rc:%s\\n\",\n@@ -346,6 +359,7 @@ tf_session_client_destroy(struct tf *tfp,\n \n \trc = tf_msg_session_client_unregister\n \t\t\t(tfp,\n+\t\t\ttfs,\n \t\t\tparms->session_client_id.internal.fw_session_client_id);\n \n \t/* Log error, but continue. If FW fails we do not really have\n@@ -534,7 +548,7 @@ tf_session_close_session(struct tf *tfp,\n \t\t\t    strerror(-rc));\n \t}\n \n-\trc = tf_msg_session_close(tfp);\n+\trc = tf_msg_session_close(tfp, tfs);\n \tif (rc) {\n \t\t/* Log error */\n \t\tTFP_DRV_LOG(ERR,\ndiff --git a/drivers/net/bnxt/tf_core/tf_tcam.c b/drivers/net/bnxt/tf_core/tf_tcam.c\nindex 22bc01c95d..038aa40e92 100644\n--- a/drivers/net/bnxt/tf_core/tf_tcam.c\n+++ b/drivers/net/bnxt/tf_core/tf_tcam.c\n@@ -428,7 +428,7 @@ tf_tcam_free(struct tf *tfp,\n \tif (rc)\n \t\treturn rc;\n \n-\trc = tf_msg_tcam_entry_free(tfp, parms);\n+\trc = tf_msg_tcam_entry_free(tfp, dev, parms);\n \tif (rc) {\n \t\t/* Log error */\n \t\tTFP_DRV_LOG(ERR,\n@@ -652,7 +652,7 @@ tf_tcam_set(struct tf *tfp __rte_unused,\n \tif (rc)\n \t\treturn rc;\n \n-\trc = tf_msg_tcam_entry_set(tfp, parms);\n+\trc = tf_msg_tcam_entry_set(tfp, dev, parms);\n \tif (rc) {\n \t\t/* Log error */\n \t\tTFP_DRV_LOG(ERR,\n",
    "prefixes": [
        "03/58"
    ]
}