get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 68519,
    "url": "https://patches.dpdk.org/api/patches/68519/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1586938751-32808-34-git-send-email-venkatkumar.duvvuru@broadcom.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": "<1586938751-32808-34-git-send-email-venkatkumar.duvvuru@broadcom.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1586938751-32808-34-git-send-email-venkatkumar.duvvuru@broadcom.com",
    "date": "2020-04-15T08:19:10",
    "name": "[v4,33/34] net/bnxt: add support for injecting mark into packet’s mbuf",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "8ab6a15b30284460e640236f2b8016200231e59c",
    "submitter": {
        "id": 1635,
        "url": "https://patches.dpdk.org/api/people/1635/?format=api",
        "name": "Venkat Duvvuru",
        "email": "venkatkumar.duvvuru@broadcom.com"
    },
    "delegate": {
        "id": 1766,
        "url": "https://patches.dpdk.org/api/users/1766/?format=api",
        "username": "ajitkhaparde",
        "first_name": "Ajit",
        "last_name": "Khaparde",
        "email": "ajit.khaparde@broadcom.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1586938751-32808-34-git-send-email-venkatkumar.duvvuru@broadcom.com/mbox/",
    "series": [
        {
            "id": 9386,
            "url": "https://patches.dpdk.org/api/series/9386/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=9386",
            "date": "2020-04-15T08:18:37",
            "name": "add support for host based flow table management",
            "version": 4,
            "mbox": "https://patches.dpdk.org/series/9386/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/68519/comments/",
    "check": "fail",
    "checks": "https://patches.dpdk.org/api/patches/68519/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 dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 781C3A0563;\n\tWed, 15 Apr 2020 10:27:03 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id C0BFB1D62F;\n\tWed, 15 Apr 2020 10:20:53 +0200 (CEST)",
            "from mail-pf1-f195.google.com (mail-pf1-f195.google.com\n [209.85.210.195]) by dpdk.org (Postfix) with ESMTP id CACF21D571\n for <dev@dpdk.org>; Wed, 15 Apr 2020 10:20:50 +0200 (CEST)",
            "by mail-pf1-f195.google.com with SMTP id y25so1196661pfn.5\n for <dev@dpdk.org>; Wed, 15 Apr 2020 01:20:50 -0700 (PDT)",
            "from S60.dhcp.broadcom.net ([192.19.234.250])\n by smtp.gmail.com with ESMTPSA id fy21sm3819019pjb.25.2020.04.15.01.20.47\n (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);\n Wed, 15 Apr 2020 01:20:48 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com;\n s=google;\n h=from:to:cc:subject:date:message-id:in-reply-to:references\n :mime-version:content-transfer-encoding;\n bh=dMog4HurHdG92ygenIiRNGXBdVu/NvRB+TO4BExLogQ=;\n b=TKMOW0LjBrNRw4OP9Rc9NWX1InIG7HALtBrv0euzePLhwa1ys/bUgri8zxWU7Bt5tO\n OkLiht54WDjGNzvmqik1+pbhlLeXJ7UQ5CgklKN7S2aANC/3RYtboxdI9GeqoQTGU518\n Szp2uYJns7DVeJlxZU1k22vDEiXGZX1sY+8QM=",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20161025;\n h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n :references:mime-version:content-transfer-encoding;\n bh=dMog4HurHdG92ygenIiRNGXBdVu/NvRB+TO4BExLogQ=;\n b=GjEXchhg92cm0RDTzDyGQ3qO0TzVVPmOuq3LbN+tRYlVDHVOws8H9sgVLFuNcy8y9/\n 6DJPFNTFEk92EM4KlkRvOSaWJFZTFlw4tLKOMiVLA+iBTa8EQyplSn4o4/1IKGZviVhu\n rFakWs8v7mtkDKpEKVEzdkJa9fzG4otd6hOBFZXEXrl19vlEMmXVTjoOxbHfuwKwVLxb\n fYBhOmMGN6nNI3JW3VEdcZRSa9WH1GDwj5h1atRolnL2Fc7HaqwJU1JxvUxHRcDBlKgE\n MXoiKBjinK/St0ktb7O49VhuKEWJ6b/I1FrYLACH5JB0cN4KHwwr3gii/vThDHiYrp0t\n 2Fsw==",
        "X-Gm-Message-State": "AGi0PuYKGGCbGaygUaHIcFjl/1KYWuyd2kZ9NJMsYXqZdBFyoKNN7dhB\n dMvL5nQNUfUV7lLC0K7lMXixhUGtKKQDRr/Vjk8j7Cbo889hn9XnkUJQWXRamlSg0aT3iGuod3/\n JDeY6IqJw+X2af4sk5+Nnn7GBjHSfrEUanzcvL8w6cgvhNfR8/PrIJ3msAdja1OKobszr",
        "X-Google-Smtp-Source": "\n APiQypLNxYAjxj43mVrNtQ+4of1xa4iKhAfn9yAHvawfD6Avht01WkzjAXm3KAtVedDiiU1L5+3Srw==",
        "X-Received": "by 2002:a65:4645:: with SMTP id k5mr23336033pgr.115.1586938849396;\n Wed, 15 Apr 2020 01:20:49 -0700 (PDT)",
        "From": "Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>",
        "To": "dev@dpdk.org",
        "Cc": "Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>,\n Mike Baucom <michael.baucom@broadcom.com>",
        "Date": "Wed, 15 Apr 2020 13:49:10 +0530",
        "Message-Id": "\n <1586938751-32808-34-git-send-email-venkatkumar.duvvuru@broadcom.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "\n <1586938751-32808-1-git-send-email-venkatkumar.duvvuru@broadcom.com>",
        "References": "\n <1586852011-37536-1-git-send-email-venkatkumar.duvvuru@broadcom.com>\n <1586938751-32808-1-git-send-email-venkatkumar.duvvuru@broadcom.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] =?utf-8?q?=5BPATCH_v4_33/34=5D_net/bnxt=3A_add_support_f?=\n\t=?utf-8?q?or_injecting_mark_into_packet=E2=80=99s_mbuf?=",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "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": "When a flow is offloaded with MARK action (RTE_FLOW_ACTION_TYPE_MARK),\neach packet of that flow will have metadata set in its completion.\nThis metadata will be used to fetch an index into a mark table where\nthe actual MARK for that flow is stored. Fetch the MARK from the mark\ntable and inject it into packet’s mbuf.\n\nSigned-off-by: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>\nSigned-off-by: Mike Baucom <michael.baucom@broadcom.com>\nReviewed-by: Lance Richardson <lance.richardson@broadcom.com>\nReviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>\n---\n drivers/net/bnxt/bnxt_rxr.c            | 153 ++++++++++++++++++++++++---------\n drivers/net/bnxt/tf_ulp/ulp_mark_mgr.c |  55 +++++++++++-\n drivers/net/bnxt/tf_ulp/ulp_mark_mgr.h |  18 ++++\n 3 files changed, 183 insertions(+), 43 deletions(-)",
    "diff": "diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c\nindex bef9720..40da2f2 100644\n--- a/drivers/net/bnxt/bnxt_rxr.c\n+++ b/drivers/net/bnxt/bnxt_rxr.c\n@@ -20,6 +20,9 @@\n #include \"bnxt_hwrm.h\"\n #endif\n \n+#include <bnxt_tf_common.h>\n+#include <ulp_mark_mgr.h>\n+\n /*\n  * RX Ring handling\n  */\n@@ -399,6 +402,109 @@ bnxt_get_rx_ts_thor(struct bnxt *bp, uint32_t rx_ts_cmpl)\n }\n #endif\n \n+static void\n+bnxt_ulp_set_mark_in_mbuf(struct bnxt *bp, struct rx_pkt_cmpl_hi *rxcmp1,\n+\t\t\t  struct rte_mbuf *mbuf)\n+{\n+\tuint32_t cfa_code;\n+\tuint32_t meta_fmt;\n+\tuint32_t meta;\n+\tuint32_t eem = 0;\n+\tuint32_t mark_id;\n+\tuint32_t flags2;\n+\tint rc;\n+\n+\tcfa_code = rte_le_to_cpu_16(rxcmp1->cfa_code);\n+\tflags2 = rte_le_to_cpu_32(rxcmp1->flags2);\n+\tmeta = rte_le_to_cpu_32(rxcmp1->metadata);\n+\tif (meta) {\n+\t\tmeta >>= BNXT_RX_META_CFA_CODE_SHIFT;\n+\n+\t\t/* The flags field holds extra bits of info from [6:4]\n+\t\t * which indicate if the flow is in TCAM or EM or EEM\n+\t\t */\n+\t\tmeta_fmt = (flags2 & BNXT_CFA_META_FMT_MASK) >>\n+\t\t\t    BNXT_CFA_META_FMT_SHFT;\n+\t\t/* meta_fmt == 4 => 'b100 => 'b10x => EM.\n+\t\t * meta_fmt == 5 => 'b101 => 'b10x => EM + VLAN\n+\t\t * meta_fmt == 6 => 'b110 => 'b11x => EEM\n+\t\t * meta_fmt == 7 => 'b111 => 'b11x => EEM + VLAN.\n+\t\t */\n+\t\tmeta_fmt >>= BNXT_CFA_META_FMT_EM_EEM_SHFT;\n+\n+\t\teem = meta_fmt == BNXT_CFA_META_FMT_EEM;\n+\n+\t\t/* For EEM flows, The first part of cfa_code is 16 bits.\n+\t\t * The second part is embedded in the\n+\t\t * metadata field from bit 19 onwards. The driver needs to\n+\t\t * ignore the first 19 bits of metadata and use the next 12\n+\t\t * bits as higher 12 bits of cfa_code.\n+\t\t */\n+\t\tif (eem)\n+\t\t\tcfa_code |= meta << BNXT_CFA_CODE_META_SHIFT;\n+\t}\n+\n+\tif (cfa_code) {\n+\t\tmbuf->hash.fdir.hi = 0;\n+\t\tmbuf->hash.fdir.id = 0;\n+\t\tif (eem)\n+\t\t\trc = ulp_mark_db_mark_get(&bp->ulp_ctx, true,\n+\t\t\t\t\t\t  cfa_code, &mark_id);\n+\t\telse\n+\t\t\trc = ulp_mark_db_mark_get(&bp->ulp_ctx, false,\n+\t\t\t\t\t\t  cfa_code, &mark_id);\n+\t\t/* If the above fails, simply return and don't add the mark to\n+\t\t * mbuf\n+\t\t */\n+\t\tif (rc)\n+\t\t\treturn;\n+\n+\t\tmbuf->hash.fdir.hi\t= mark_id;\n+\t\tmbuf->udata64\t\t= (cfa_code & 0xffffffffull) << 32;\n+\t\tmbuf->hash.fdir.id\t= rxcmp1->cfa_code;\n+\t\tmbuf->ol_flags\t\t|= PKT_RX_FDIR | PKT_RX_FDIR_ID;\n+\t}\n+}\n+\n+void bnxt_set_mark_in_mbuf(struct bnxt *bp,\n+\t\t\t   struct rx_pkt_cmpl_hi *rxcmp1,\n+\t\t\t   struct rte_mbuf *mbuf)\n+{\n+\tuint32_t cfa_code = 0;\n+\tuint8_t meta_fmt = 0;\n+\tuint16_t flags2 = 0;\n+\tuint32_t meta =  0;\n+\n+\tcfa_code = rte_le_to_cpu_16(rxcmp1->cfa_code);\n+\tif (!cfa_code)\n+\t\treturn;\n+\n+\tif (cfa_code && !bp->mark_table[cfa_code].valid)\n+\t\treturn;\n+\n+\tflags2 = rte_le_to_cpu_16(rxcmp1->flags2);\n+\tmeta = rte_le_to_cpu_32(rxcmp1->metadata);\n+\tif (meta) {\n+\t\tmeta >>= BNXT_RX_META_CFA_CODE_SHIFT;\n+\n+\t\t/* The flags field holds extra bits of info from [6:4]\n+\t\t * which indicate if the flow is in TCAM or EM or EEM\n+\t\t */\n+\t\tmeta_fmt = (flags2 & BNXT_CFA_META_FMT_MASK) >>\n+\t\t\t   BNXT_CFA_META_FMT_SHFT;\n+\n+\t\t/* meta_fmt == 4 => 'b100 => 'b10x => EM.\n+\t\t * meta_fmt == 5 => 'b101 => 'b10x => EM + VLAN\n+\t\t * meta_fmt == 6 => 'b110 => 'b11x => EEM\n+\t\t * meta_fmt == 7 => 'b111 => 'b11x => EEM + VLAN.\n+\t\t */\n+\t\tmeta_fmt >>= BNXT_CFA_META_FMT_EM_EEM_SHFT;\n+\t}\n+\n+\tmbuf->hash.fdir.hi = bp->mark_table[cfa_code].mark_id;\n+\tmbuf->ol_flags |= PKT_RX_FDIR | PKT_RX_FDIR_ID;\n+}\n+\n static int bnxt_rx_pkt(struct rte_mbuf **rx_pkt,\n \t\t\t    struct bnxt_rx_queue *rxq, uint32_t *raw_cons)\n {\n@@ -415,6 +521,7 @@ static int bnxt_rx_pkt(struct rte_mbuf **rx_pkt,\n \tuint16_t cmp_type;\n \tuint32_t flags2_f = 0;\n \tuint16_t flags_type;\n+\tstruct bnxt *bp = rxq->bp;\n \n \trxcmp = (struct rx_pkt_cmpl *)\n \t    &cpr->cp_desc_ring[cp_cons];\n@@ -490,7 +597,10 @@ static int bnxt_rx_pkt(struct rte_mbuf **rx_pkt,\n \t\tmbuf->ol_flags |= PKT_RX_RSS_HASH;\n \t}\n \n-\tbnxt_set_mark_in_mbuf(rxq->bp, rxcmp1, mbuf);\n+\tif (bp->truflow)\n+\t\tbnxt_ulp_set_mark_in_mbuf(rxq->bp, rxcmp1, mbuf);\n+\telse\n+\t\tbnxt_set_mark_in_mbuf(rxq->bp, rxcmp1, mbuf);\n \n #ifdef RTE_LIBRTE_IEEE1588\n \tif (unlikely((flags_type & RX_PKT_CMPL_FLAGS_MASK) ==\n@@ -896,44 +1006,3 @@ int bnxt_init_one_rx_ring(struct bnxt_rx_queue *rxq)\n \n \treturn 0;\n }\n-\n-void bnxt_set_mark_in_mbuf(struct bnxt *bp,\n-\t\t\t   struct rx_pkt_cmpl_hi *rxcmp1,\n-\t\t\t   struct rte_mbuf *mbuf)\n-{\n-\tuint32_t cfa_code = 0;\n-\tuint8_t meta_fmt =  0;\n-\tuint16_t flags2 = 0;\n-\tuint32_t meta =  0;\n-\n-\tcfa_code = rte_le_to_cpu_16(rxcmp1->cfa_code);\n-\tif (!cfa_code)\n-\t\treturn;\n-\n-\tif (cfa_code && !bp->mark_table[cfa_code].valid)\n-\t\treturn;\n-\n-\tflags2 = rte_le_to_cpu_16(rxcmp1->flags2);\n-\tmeta = rte_le_to_cpu_32(rxcmp1->metadata);\n-\tif (meta) {\n-\t\tmeta >>= BNXT_RX_META_CFA_CODE_SHIFT;\n-\n-\t\t/*\n-\t\t * The flags field holds extra bits of info from [6:4]\n-\t\t * which indicate if the flow is in TCAM or EM or EEM\n-\t\t */\n-\t\tmeta_fmt = (flags2 & BNXT_CFA_META_FMT_MASK) >>\n-\t\t\t   BNXT_CFA_META_FMT_SHFT;\n-\n-\t\t/*\n-\t\t * meta_fmt == 4 => 'b100 => 'b10x => EM.\n-\t\t * meta_fmt == 5 => 'b101 => 'b10x => EM + VLAN\n-\t\t * meta_fmt == 6 => 'b110 => 'b11x => EEM\n-\t\t * meta_fmt == 7 => 'b111 => 'b11x => EEM + VLAN.\n-\t\t */\n-\t\tmeta_fmt >>= BNXT_CFA_META_FMT_EM_EEM_SHFT;\n-\t}\n-\n-\tmbuf->hash.fdir.hi = bp->mark_table[cfa_code].mark_id;\n-\tmbuf->ol_flags |= PKT_RX_FDIR | PKT_RX_FDIR_ID;\n-}\ndiff --git a/drivers/net/bnxt/tf_ulp/ulp_mark_mgr.c b/drivers/net/bnxt/tf_ulp/ulp_mark_mgr.c\nindex 566668e..ad83531 100644\n--- a/drivers/net/bnxt/tf_ulp/ulp_mark_mgr.c\n+++ b/drivers/net/bnxt/tf_ulp/ulp_mark_mgr.c\n@@ -58,7 +58,7 @@ ulp_mark_db_mark_set(struct bnxt_ulp_context *ctxt,\n \tidx = ulp_mark_db_idx_get(is_gfid, fid, mtbl);\n \n \tif (is_gfid) {\n-\t\tBNXT_TF_DBG(ERR, \"Set GFID[0x%0x] = 0x%0x\\n\", idx, mark);\n+\t\tBNXT_TF_DBG(DEBUG, \"Set GFID[0x%0x] = 0x%0x\\n\", idx, mark);\n \n \t\tmtbl->gfid_tbl[idx].mark_id = mark;\n \t\tmtbl->gfid_tbl[idx].valid = true;\n@@ -176,6 +176,59 @@ ulp_mark_db_deinit(struct bnxt_ulp_context *ctxt)\n }\n \n /*\n+ * Get a Mark from the Mark Manager\n+ *\n+ * ctxt [in] The ulp context for the mark manager\n+ *\n+ * is_gfid [in] The type of fid (GFID or LFID)\n+ *\n+ * fid [in] The flow id that is returned by HW in BD\n+ *\n+ * mark [out] The mark that is associated with the FID\n+ *\n+ */\n+int32_t\n+ulp_mark_db_mark_get(struct bnxt_ulp_context *ctxt,\n+\t\t     bool is_gfid,\n+\t\t     uint32_t fid,\n+\t\t     uint32_t *mark)\n+{\n+\tstruct bnxt_ulp_mark_tbl *mtbl;\n+\tuint32_t idx = 0;\n+\n+\tif (!ctxt || !mark)\n+\t\treturn -EINVAL;\n+\n+\tmtbl = bnxt_ulp_cntxt_ptr2_mark_db_get(ctxt);\n+\tif (!mtbl) {\n+\t\tBNXT_TF_DBG(ERR, \"Unable to get Mark Table\\n\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\tidx = ulp_mark_db_idx_get(is_gfid, fid, mtbl);\n+\n+\tif (is_gfid) {\n+\t\tif (!mtbl->gfid_tbl[idx].valid)\n+\t\t\treturn -EINVAL;\n+\n+\t\tBNXT_TF_DBG(DEBUG, \"Get GFID[0x%0x] = 0x%0x\\n\",\n+\t\t\t    idx, mtbl->gfid_tbl[idx].mark_id);\n+\n+\t\t*mark = mtbl->gfid_tbl[idx].mark_id;\n+\t} else {\n+\t\tif (!mtbl->gfid_tbl[idx].valid)\n+\t\t\treturn -EINVAL;\n+\n+\t\tBNXT_TF_DBG(DEBUG, \"Get LFID[0x%0x] = 0x%0x\\n\",\n+\t\t\t    idx, mtbl->lfid_tbl[idx].mark_id);\n+\n+\t\t*mark = mtbl->lfid_tbl[idx].mark_id;\n+\t}\n+\n+\treturn 0;\n+}\n+\n+/*\n  * Adds a Mark to the Mark Manager\n  *\n  * ctxt [in] The ulp context for the mark manager\ndiff --git a/drivers/net/bnxt/tf_ulp/ulp_mark_mgr.h b/drivers/net/bnxt/tf_ulp/ulp_mark_mgr.h\nindex f0d1515..0f8a5e5 100644\n--- a/drivers/net/bnxt/tf_ulp/ulp_mark_mgr.h\n+++ b/drivers/net/bnxt/tf_ulp/ulp_mark_mgr.h\n@@ -55,6 +55,24 @@ int32_t\n ulp_mark_db_deinit(struct bnxt_ulp_context *ctxt);\n \n /*\n+ * Get a Mark from the Mark Manager\n+ *\n+ * ctxt [in] The ulp context for the mark manager\n+ *\n+ * is_gfid [in] The type of fid (GFID or LFID)\n+ *\n+ * fid [in] The flow id that is returned by HW in BD\n+ *\n+ * mark [out] The mark that is associated with the FID\n+ *\n+ */\n+int32_t\n+ulp_mark_db_mark_get(struct bnxt_ulp_context *ctxt,\n+\t\t     bool is_gfid,\n+\t\t     uint32_t fid,\n+\t\t     uint32_t *mark);\n+\n+/*\n  * Adds a Mark to the Mark Manager\n  *\n  * ctxt [in] The ulp context for the mark manager\n",
    "prefixes": [
        "v4",
        "33/34"
    ]
}