get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 130175,
    "url": "http://patchwork.dpdk.org/api/patches/130175/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20230811163419.165790-4-hkalra@marvell.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.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": "<20230811163419.165790-4-hkalra@marvell.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230811163419.165790-4-hkalra@marvell.com",
    "date": "2023-08-11T16:34:13",
    "name": "[3/9] common/cnxk: maintaining representor state",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "8dfd94294407d6c1ffba8eee347b19db08049d17",
    "submitter": {
        "id": 1182,
        "url": "http://patchwork.dpdk.org/api/people/1182/?format=api",
        "name": "Harman Kalra",
        "email": "hkalra@marvell.com"
    },
    "delegate": {
        "id": 310,
        "url": "http://patchwork.dpdk.org/api/users/310/?format=api",
        "username": "jerin",
        "first_name": "Jerin",
        "last_name": "Jacob",
        "email": "jerinj@marvell.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20230811163419.165790-4-hkalra@marvell.com/mbox/",
    "series": [
        {
            "id": 29193,
            "url": "http://patchwork.dpdk.org/api/series/29193/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=29193",
            "date": "2023-08-11T16:34:10",
            "name": "net/cnxk: support for port representors",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/29193/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/130175/comments/",
    "check": "warning",
    "checks": "http://patchwork.dpdk.org/api/patches/130175/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 79ADA43036;\n\tFri, 11 Aug 2023 18:35:26 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 9172F4326B;\n\tFri, 11 Aug 2023 18:35:11 +0200 (CEST)",
            "from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com\n [67.231.156.173])\n by mails.dpdk.org (Postfix) with ESMTP id E98DA40E03\n for <dev@dpdk.org>; Fri, 11 Aug 2023 18:35:07 +0200 (CEST)",
            "from pps.filterd (m0045851.ppops.net [127.0.0.1])\n by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id\n 37BEGFrQ021082 for <dev@dpdk.org>; Fri, 11 Aug 2023 09:35:07 -0700",
            "from dc5-exch01.marvell.com ([199.233.59.181])\n by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3sd8ya2qsa-2\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT)\n for <dev@dpdk.org>; Fri, 11 Aug 2023 09:35:07 -0700",
            "from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH01.marvell.com\n (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.48;\n Fri, 11 Aug 2023 09:35:01 -0700",
            "from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com\n (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.48 via Frontend\n Transport; Fri, 11 Aug 2023 09:35:01 -0700",
            "from localhost.localdomain (unknown [10.29.52.211])\n by maili.marvell.com (Postfix) with ESMTP id 1DDE93F707D;\n Fri, 11 Aug 2023 09:34:58 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com;\n h=from : to : cc :\n subject : date : message-id : in-reply-to : references : mime-version :\n content-type; s=pfpt0220; bh=RKguetw2Y3TykXF8rOE9J0pV+Qfap5jZLs9u3gfuPKE=;\n b=F5TLo095WoFfLFMyPRuFcylPvMcvlbCVpcm+4/OeJ3xXfW1zAynMhAX/1OLfSAQcUXWu\n wANmzgfueHDPbqyRrE6waW6Mzx0l3uwb9XaxyZAPKfyVErdsnZJLS0G3y1q91cGFTHtx\n GK51d6zBBRjjRFTnHChdq14DcP0QWui4syaWXmQr8CxZbcC3FQ9ed4VfWsbDT5p4ZAmJ\n 1PgWvzza2R5v/ikCOhWB4H8CPBNBCYhq5MKfpW3UNQne2Y5HwIUZdt0tR3cjMSaCbLLn\n x6U02+gesV7agSIaAyyu/rHmKwfkyGZpc7wUyXtoIZCPuDXAsCl3BdpmlCdoctvn1tUu zQ==",
        "From": "Harman Kalra <hkalra@marvell.com>",
        "To": "<jerinj@marvell.com>, Nithin Dabilpuram <ndabilpuram@marvell.com>, \"Kiran\n Kumar K\" <kirankumark@marvell.com>, Sunil Kumar Kori <skori@marvell.com>,\n Satha Rao <skoteshwar@marvell.com>",
        "CC": "<dev@dpdk.org>, Harman Kalra <hkalra@marvell.com>",
        "Subject": "[PATCH 3/9] common/cnxk: maintaining representor state",
        "Date": "Fri, 11 Aug 2023 22:04:13 +0530",
        "Message-ID": "<20230811163419.165790-4-hkalra@marvell.com>",
        "X-Mailer": "git-send-email 2.18.0",
        "In-Reply-To": "<20230811163419.165790-1-hkalra@marvell.com>",
        "References": "<20230811163419.165790-1-hkalra@marvell.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Proofpoint-ORIG-GUID": "yVf5Fi8um6KZeM5A3woD_p5eZzc9wWs4",
        "X-Proofpoint-GUID": "yVf5Fi8um6KZeM5A3woD_p5eZzc9wWs4",
        "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.267,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26\n definitions=2023-08-11_08,2023-08-10_01,2023-05-22_02",
        "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"
    },
    "content": "Maintaining the state of representor which describes whether it\nhas an active VF and what is the func id of the representee.\n\nImplement a mbox between VF and PF for the VF to know if\nrepresentors are available.\n\nSigned-off-by: Harman Kalra <hkalra@marvell.com>\n---\n drivers/common/cnxk/roc_dev.c      | 167 +++++++++++++++++++++++------\n drivers/common/cnxk/roc_dev_priv.h |   7 +-\n drivers/common/cnxk/roc_nix.c      |  23 ++++\n drivers/common/cnxk/roc_nix.h      |  22 ++--\n drivers/common/cnxk/version.map    |   3 +\n 5 files changed, 182 insertions(+), 40 deletions(-)",
    "diff": "diff --git a/drivers/common/cnxk/roc_dev.c b/drivers/common/cnxk/roc_dev.c\nindex 4b0ba218ed..4057380eb7 100644\n--- a/drivers/common/cnxk/roc_dev.c\n+++ b/drivers/common/cnxk/roc_dev.c\n@@ -216,15 +216,120 @@ af_pf_wait_msg(struct dev *dev, uint16_t vf, int num_msg)\n \treturn req_hdr->num_msgs;\n }\n \n+static int\n+foward_msg_to_af(struct dev *dev, struct mbox_msghdr *msg, size_t size)\n+{\n+\tstruct mbox_msghdr *af_req;\n+\n+\t/* Reserve AF/PF mbox message */\n+\tsize = PLT_ALIGN(size, MBOX_MSG_ALIGN);\n+\taf_req = mbox_alloc_msg(dev->mbox, 0, size);\n+\tif (af_req == NULL)\n+\t\treturn -ENOSPC;\n+\tmbox_req_init(msg->id, af_req);\n+\n+\t/* Copy message from VF<->PF mbox to PF<->AF mbox */\n+\tmbox_memcpy((uint8_t *)af_req + sizeof(struct mbox_msghdr),\n+\t\t    (uint8_t *)msg + sizeof(struct mbox_msghdr),\n+\t\t    size - sizeof(struct mbox_msghdr));\n+\taf_req->pcifunc = msg->pcifunc;\n+\n+\treturn 0;\n+}\n+\n+static int\n+process_vf_ready_msg(struct dev *dev, struct mbox *mbox, struct mbox_msghdr *msg,\n+\t\t     uint16_t vf)\n+{\n+\tuint16_t max_bits = sizeof(dev->active_vfs[0]) * 8;\n+\tstruct ready_msg_rsp *rsp;\n+\tint rc;\n+\n+\t/* Handle READY message in PF */\n+\tdev->active_vfs[vf / max_bits] |= BIT_ULL(vf % max_bits);\n+\trsp = (struct ready_msg_rsp *)mbox_alloc_msg(mbox, vf, sizeof(*rsp));\n+\tif (!rsp) {\n+\t\tplt_err(\"Failed to alloc VF%d READY message\", vf);\n+\t\treturn -1;\n+\t}\n+\n+\tmbox_rsp_init(msg->id, rsp);\n+\n+\t/* PF/VF function ID */\n+\trsp->hdr.pcifunc = msg->pcifunc;\n+\trsp->hdr.rc = 0;\n+\n+\t/* Set pffunc value to its representor, op = 0 */\n+\tif (dev->ops && dev->ops->rep_state) {\n+\t\trc = dev->ops->rep_state(dev->roc_nix, msg->pcifunc, 0);\n+\t\tif (rc < 0)\n+\t\t\tplt_err(\"Failed to set repr status, pcifunc 0x%x\",\n+\t\t\t\tmsg->pcifunc);\n+\t}\n+\n+\treturn 0;\n+}\n+\n+static int\n+process_vf_read_base_rule_msg(struct dev *dev, struct mbox *mbox, struct mbox_msghdr *msg,\n+\t\t\t      uint16_t vf, size_t size, int *routed)\n+{\n+\tstruct npc_mcam_read_base_rule_rsp *rsp;\n+\tint route = *routed;\n+\tint rc = 0;\n+\n+\t/* Check if pcifunc has representor, op = 1 */\n+\tif (dev->ops && dev->ops->rep_state) {\n+\t\trc = dev->ops->rep_state(dev->roc_nix, msg->pcifunc, 1);\n+\t\tif (rc < 0) {\n+\t\t\tplt_err(\"Failed to get repr status, pcifunc 0x%x\",\n+\t\t\t\tmsg->pcifunc);\n+\t\t\treturn rc;\n+\t\t}\n+\t}\n+\n+\t/* If ret is 1 meaning pci func has a representor,\n+\t * return without forwarding base rule mbox\n+\t */\n+\tif (rc == 1) {\n+\t\trsp = (struct npc_mcam_read_base_rule_rsp *)mbox_alloc_msg(\n+\t\t\t\t\t\t\t\t\t   mbox, vf, sizeof(*rsp));\n+\t\tif (!rsp) {\n+\t\t\tplt_err(\"Failed to alloc VF%d rep status message\", vf);\n+\t\t\treturn -1;\n+\t\t}\n+\n+\t\tmbox_rsp_init(msg->id, rsp);\n+\n+\t\t/* PF/VF function ID */\n+\t\trsp->hdr.pcifunc = msg->pcifunc;\n+\t\trsp->hdr.rc = 0;\n+\t} else {\n+\t\t/* If ret is 0, default case i.e. forwarding to AF\n+\t\t * should happen.\n+\t\t */\n+\t\trc = foward_msg_to_af(dev, msg, size);\n+\t\tif (rc) {\n+\t\t\tplt_err(\"Failed to forward msg ID %d to af, err %d\",\n+\t\t\t\tmsg->id, rc);\n+\t\t\treturn rc;\n+\t\t}\n+\t\troute++;\n+\t}\n+\t*routed = route;\n+\n+\treturn 0;\n+}\n+\n /* PF receives mbox DOWN messages from VF and forwards to AF */\n static int\n vf_pf_process_msgs(struct dev *dev, uint16_t vf)\n {\n \tstruct mbox *mbox = &dev->mbox_vfpf;\n \tstruct mbox_dev *mdev = &mbox->dev[vf];\n+\tint offset, routed = 0, ret = 0;\n \tstruct mbox_hdr *req_hdr;\n \tstruct mbox_msghdr *msg;\n-\tint offset, routed = 0;\n \tsize_t size;\n \tuint16_t i;\n \n@@ -242,42 +347,31 @@ vf_pf_process_msgs(struct dev *dev, uint16_t vf)\n \t\t/* RVU_PF_FUNC_S */\n \t\tmsg->pcifunc = dev_pf_func(dev->pf, vf);\n \n-\t\tif (msg->id == MBOX_MSG_READY) {\n-\t\t\tstruct ready_msg_rsp *rsp;\n-\t\t\tuint16_t max_bits = sizeof(dev->active_vfs[0]) * 8;\n-\n-\t\t\t/* Handle READY message in PF */\n-\t\t\tdev->active_vfs[vf / max_bits] |=\n-\t\t\t\tBIT_ULL(vf % max_bits);\n-\t\t\trsp = (struct ready_msg_rsp *)mbox_alloc_msg(\n-\t\t\t\tmbox, vf, sizeof(*rsp));\n-\t\t\tif (!rsp) {\n-\t\t\t\tplt_err(\"Failed to alloc VF%d READY message\",\n-\t\t\t\t\tvf);\n+\t\tswitch (msg->id) {\n+\t\tcase MBOX_MSG_READY:\n+\t\t\tret = process_vf_ready_msg(dev, mbox, msg, vf);\n+\t\t\tif (ret) {\n+\t\t\t\tplt_err(\"Failed to process ready msg for vf %d\", vf);\n \t\t\t\tcontinue;\n \t\t\t}\n \n-\t\t\tmbox_rsp_init(msg->id, rsp);\n+\t\t\tbreak;\n+\t\tcase MBOX_MSG_NPC_MCAM_READ_BASE_RULE:\n+\t\t\tret = process_vf_read_base_rule_msg(dev, mbox, msg, vf, size, &routed);\n+\t\t\tif (ret) {\n+\t\t\t\tplt_err(\"Failed to process base rule for vf %d,\terr %d\", vf, ret);\n+\t\t\t\tcontinue;\n+\t\t\t}\n \n-\t\t\t/* PF/VF function ID */\n-\t\t\trsp->hdr.pcifunc = msg->pcifunc;\n-\t\t\trsp->hdr.rc = 0;\n-\t\t} else {\n-\t\t\tstruct mbox_msghdr *af_req;\n-\t\t\t/* Reserve AF/PF mbox message */\n-\t\t\tsize = PLT_ALIGN(size, MBOX_MSG_ALIGN);\n-\t\t\taf_req = mbox_alloc_msg(dev->mbox, 0, size);\n-\t\t\tif (af_req == NULL)\n-\t\t\t\treturn -ENOSPC;\n-\t\t\tmbox_req_init(msg->id, af_req);\n-\n-\t\t\t/* Copy message from VF<->PF mbox to PF<->AF mbox */\n-\t\t\tmbox_memcpy((uint8_t *)af_req +\n-\t\t\t\t\t    sizeof(struct mbox_msghdr),\n-\t\t\t\t    (uint8_t *)msg + sizeof(struct mbox_msghdr),\n-\t\t\t\t    size - sizeof(struct mbox_msghdr));\n-\t\t\taf_req->pcifunc = msg->pcifunc;\n+\t\t\tbreak;\n+\t\tdefault: {\n+\t\t\tret = foward_msg_to_af(dev, msg, size);\n+\t\t\tif (ret) {\n+\t\t\t\tplt_err(\"Failed to forward msg ID %d to af, err %d\", msg->id, ret);\n+\t\t\t\treturn ret;\n+\t\t\t}\n \t\t\trouted++;\n+\t\t} break;\n \t\t}\n \t\toffset = mbox->rx_start + msg->next_msgoff;\n \t}\n@@ -1051,6 +1145,7 @@ vf_flr_handle_msg(void *param, dev_intr_t *flr)\n {\n \tuint16_t vf, max_vf, max_bits;\n \tstruct dev *dev = param;\n+\tint ret;\n \n \tmax_bits = sizeof(flr->bits[0]) * sizeof(uint64_t);\n \tmax_vf = max_bits * MAX_VFPF_DWORD_BITS;\n@@ -1063,6 +1158,14 @@ vf_flr_handle_msg(void *param, dev_intr_t *flr)\n \t\t\tvf_flr_send_msg(dev, vf);\n \t\t\tflr->bits[vf / max_bits] &= ~(BIT_ULL(vf % max_bits));\n \n+\t\t\t/* Reset VF representors state, op = 2 */\n+\t\t\tif (dev->ops && dev->ops->rep_state) {\n+\t\t\t\tret = dev->ops->rep_state(dev->roc_nix, dev_pf_func(dev->pf, vf),\n+\t\t\t\t\t\t\t   2);\n+\t\t\t\tif (ret < 0)\n+\t\t\t\t\tplt_err(\"Failed to set repr status, for vf %x\", vf);\n+\t\t\t}\n+\n \t\t\t/* Signal FLR finish */\n \t\t\tplt_write64(BIT_ULL(vf % max_bits),\n \t\t\t\t    dev->bar2 + RVU_PF_VFTRPENDX(vf / max_bits));\ndiff --git a/drivers/common/cnxk/roc_dev_priv.h b/drivers/common/cnxk/roc_dev_priv.h\nindex 1f84f74ff3..50a7a67d42 100644\n--- a/drivers/common/cnxk/roc_dev_priv.h\n+++ b/drivers/common/cnxk/roc_dev_priv.h\n@@ -34,14 +34,17 @@ typedef int (*ptp_info_t)(void *roc_nix, bool enable);\n typedef void (*q_err_cb_t)(void *roc_nix, void *data);\n \n /* Link status get callback */\n-typedef void (*link_status_get_t)(void *roc_nix,\n-\t\t\t\t  struct cgx_link_user_info *link);\n+typedef void (*link_status_get_t)(void *roc_nix, struct cgx_link_user_info *link);\n+\n+/* Process representor status callback */\n+typedef int (*rep_state_t)(void *roc_nix, uint16_t pf_func, uint8_t op);\n \n struct dev_ops {\n \tlink_info_t link_status_update;\n \tptp_info_t ptp_info_update;\n \tlink_status_get_t link_status_get;\n \tq_err_cb_t q_err_cb;\n+\trep_state_t rep_state;\n };\n \n #define dev_is_vf(dev) ((dev)->hwcap & DEV_HWCAP_F_VF)\ndiff --git a/drivers/common/cnxk/roc_nix.c b/drivers/common/cnxk/roc_nix.c\nindex 152ef7269e..0ee534f188 100644\n--- a/drivers/common/cnxk/roc_nix.c\n+++ b/drivers/common/cnxk/roc_nix.c\n@@ -522,3 +522,26 @@ roc_nix_dev_fini(struct roc_nix *roc_nix)\n \trc |= dev_fini(&nix->dev, nix->pci_dev);\n \treturn rc;\n }\n+\n+int\n+roc_nix_process_rep_state_cb_register(struct roc_nix *roc_nix,\n+\t\t\t\t\t       process_rep_state_t proc_rep_st)\n+{\n+\tstruct nix *nix = roc_nix_to_nix_priv(roc_nix);\n+\tstruct dev *dev = &nix->dev;\n+\n+\tif (proc_rep_st == NULL)\n+\t\treturn NIX_ERR_PARAM;\n+\n+\tdev->ops->rep_state = (rep_state_t)proc_rep_st;\n+\treturn 0;\n+}\n+\n+void\n+roc_nix_process_rep_state_cb_unregister(struct roc_nix *roc_nix)\n+{\n+\tstruct nix *nix = roc_nix_to_nix_priv(roc_nix);\n+\tstruct dev *dev = &nix->dev;\n+\n+\tdev->ops->rep_state = NULL;\n+}\ndiff --git a/drivers/common/cnxk/roc_nix.h b/drivers/common/cnxk/roc_nix.h\nindex 9c2ba9a685..47ab3560ea 100644\n--- a/drivers/common/cnxk/roc_nix.h\n+++ b/drivers/common/cnxk/roc_nix.h\n@@ -443,8 +443,14 @@ typedef int (*ptp_info_update_t)(struct roc_nix *roc_nix, bool enable);\n typedef void (*q_err_get_t)(struct roc_nix *roc_nix, void *data);\n \n /* Link status get callback */\n-typedef void (*link_info_get_t)(struct roc_nix *roc_nix,\n-\t\t\t\tstruct roc_nix_link_info *link);\n+typedef void (*link_info_get_t)(struct roc_nix *roc_nix, struct roc_nix_link_info *link);\n+\n+/* Process representor status callback:\n+ *  op = 0 update pffunc of vf being represented\n+ *  op = 1 check if any representor is representing pffunc\n+ *  op = 2 vf is going down, reset rep state\n+ */\n+typedef int (*process_rep_state_t)(void *roc_nix, uint16_t pf_func, uint8_t op);\n \n TAILQ_HEAD(roc_nix_list, roc_nix);\n \n@@ -520,6 +526,9 @@ roc_nix_tm_max_shaper_burst_get(void)\n /* Dev */\n int __roc_api roc_nix_dev_init(struct roc_nix *roc_nix);\n int __roc_api roc_nix_dev_fini(struct roc_nix *roc_nix);\n+int __roc_api roc_nix_process_rep_state_cb_register(struct roc_nix *roc_nix,\n+\t\t\t\t\t\t\t     process_rep_state_t proc_rep_st);\n+void __roc_api roc_nix_process_rep_state_cb_unregister(struct roc_nix *roc_nix);\n \n /* Type */\n bool __roc_api roc_nix_is_lbk(struct roc_nix *roc_nix);\n@@ -532,13 +541,14 @@ int __roc_api roc_nix_get_vf(struct roc_nix *roc_nix);\n uint16_t __roc_api roc_nix_get_pf_func(struct roc_nix *roc_nix);\n uint16_t __roc_api roc_nix_get_vwqe_interval(struct roc_nix *roc_nix);\n int __roc_api roc_nix_max_pkt_len(struct roc_nix *roc_nix);\n+bool __roc_api roc_nix_has_rep(struct roc_nix *roc_nix);\n \n /* LF ops */\n-int __roc_api roc_nix_lf_alloc(struct roc_nix *roc_nix, uint32_t nb_rxq,\n-\t\t\t       uint32_t nb_txq, uint64_t rx_cfg);\n+int __roc_api roc_nix_lf_alloc(struct roc_nix *roc_nix, uint32_t nb_rxq, uint32_t nb_txq,\n+\t\t\t       uint64_t rx_cfg);\n int __roc_api roc_nix_lf_free(struct roc_nix *roc_nix);\n-int __roc_api roc_nix_lf_inl_ipsec_cfg(struct roc_nix *roc_nix,\n-\t\t\t\t       struct roc_nix_ipsec_cfg *cfg, bool enb);\n+int __roc_api roc_nix_lf_inl_ipsec_cfg(struct roc_nix *roc_nix, struct roc_nix_ipsec_cfg *cfg,\n+\t\t\t\t       bool enb);\n int __roc_api roc_nix_cpt_ctx_cache_sync(struct roc_nix *roc_nix);\n int __roc_api roc_nix_rx_drop_re_set(struct roc_nix *roc_nix, bool ena);\n \ndiff --git a/drivers/common/cnxk/version.map b/drivers/common/cnxk/version.map\nindex 1d6e306848..327840429f 100644\n--- a/drivers/common/cnxk/version.map\n+++ b/drivers/common/cnxk/version.map\n@@ -205,6 +205,8 @@ INTERNAL {\n \troc_nix_cqe_dump;\n \troc_nix_dev_fini;\n \troc_nix_dev_init;\n+\troc_nix_process_rep_state_cb_register;\n+\troc_nix_process_rep_state_cb_unregister;\n \troc_nix_dump;\n \troc_nix_err_intr_ena_dis;\n \troc_nix_fc_config_get;\n@@ -217,6 +219,7 @@ INTERNAL {\n \troc_nix_get_pf_func;\n \troc_nix_get_vf;\n \troc_nix_get_vwqe_interval;\n+\troc_nix_has_rep;\n \troc_nix_inl_cb_register;\n \troc_nix_inl_cb_unregister;\n \troc_nix_inl_ctx_write;\n",
    "prefixes": [
        "3/9"
    ]
}