get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 64460,
    "url": "http://patches.dpdk.org/api/patches/64460/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1578844612-153139-1-git-send-email-bingz@mellanox.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": "<1578844612-153139-1-git-send-email-bingz@mellanox.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1578844612-153139-1-git-send-email-bingz@mellanox.com",
    "date": "2020-01-12T15:56:52",
    "name": "[v2] net/mlx5: fix modify actions support limitation",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "bc791f1165dc5cb2850c308263b6e49b7982ec16",
    "submitter": {
        "id": 1357,
        "url": "http://patches.dpdk.org/api/people/1357/?format=api",
        "name": "Bing Zhao",
        "email": "bingz@mellanox.com"
    },
    "delegate": {
        "id": 3268,
        "url": "http://patches.dpdk.org/api/users/3268/?format=api",
        "username": "rasland",
        "first_name": "Raslan",
        "last_name": "Darawsheh",
        "email": "rasland@nvidia.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1578844612-153139-1-git-send-email-bingz@mellanox.com/mbox/",
    "series": [
        {
            "id": 8062,
            "url": "http://patches.dpdk.org/api/series/8062/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=8062",
            "date": "2020-01-12T15:56:52",
            "name": "[v2] net/mlx5: fix modify actions support limitation",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/8062/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/64460/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/64460/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 E5DAEA04F1;\n\tSun, 12 Jan 2020 16:57:01 +0100 (CET)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 264D71D930;\n\tSun, 12 Jan 2020 16:57:01 +0100 (CET)",
            "from git-send-mailer.rdmz.labs.mlnx (unknown [37.142.13.130])\n by dpdk.org (Postfix) with ESMTP id 5B4161D92D;\n Sun, 12 Jan 2020 16:56:59 +0100 (CET)"
        ],
        "From": "Bing Zhao <bingz@mellanox.com>",
        "To": "orika@mellanox.com, viacheslavo@mellanox.com, rasland@mellanox.com,\n matan@mellanox.com",
        "Cc": "dev@dpdk.org,\n\tstable@dpdk.org",
        "Date": "Sun, 12 Jan 2020 17:56:52 +0200",
        "Message-Id": "<1578844612-153139-1-git-send-email-bingz@mellanox.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "In-Reply-To": "<1578292317-58225-1-git-send-email-bingz@mellanox.com>",
        "References": "<1578292317-58225-1-git-send-email-bingz@mellanox.com>",
        "Subject": "[dpdk-dev] [PATCH v2] net/mlx5: fix modify actions support\n\tlimitation",
        "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": "In the root table, there is some limitation of total number of header\nmodify actions, 16 or 8 for each. But in other tables, there is no\nsuch strict limitation. In an IPv6 case, the IP fields modifying\nwill occupy more actions than that in IPv4, so the total support\nnumber should be increased in order to support as many actions as\npossible for an IPv6 + TCP packet.\nAnd in the meanwhile, the memory consumption should also be taken\ninto consideration because sometimes only several actions are needed.\nThe root table checking could also be done in low layer driver and\nthe error code will be returned if the actions number is over the\nmaximal supported value.\n\nFixes: 0e9d00027686 (\"net/mlx5: check maximum modify actions number\")\nSigned-off-by: Bing Zhao <bingz@mellanox.com>\n---\n drivers/net/mlx5/mlx5_flow.h    |  15 +++---\n drivers/net/mlx5/mlx5_flow_dv.c | 104 ++++++++++++++++++++++------------------\n 2 files changed, 66 insertions(+), 53 deletions(-)",
    "diff": "diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h\nindex 27d82ac..4b493ee 100644\n--- a/drivers/net/mlx5/mlx5_flow.h\n+++ b/drivers/net/mlx5/mlx5_flow.h\n@@ -385,11 +385,14 @@ struct mlx5_flow_dv_tag_resource {\n \n /*\n  * Number of modification commands.\n- * If extensive metadata registers are supported\n- * the maximal actions amount is 16 and 8 otherwise.\n+ * If extensive metadata registers are supported, the maximal actions amount is\n+ * 16 and 8 otherwise on root table. The validation could also be done in the\n+ * lower driver layer.\n+ * On non-root table, there is no limitation, but 32 is enough right now.\n  */\n-#define MLX5_MODIFY_NUM 16\n-#define MLX5_MODIFY_NUM_NO_MREG 8\n+#define MLX5_MAX_MODIFY_NUM\t\t\t32\n+#define MLX5_ROOT_TBL_MODIFY_NUM\t\t16\n+#define MLX5_ROOT_TBL_MODIFY_NUM_NO_MREG\t8\n \n /* Modify resource structure */\n struct mlx5_flow_dv_modify_hdr_resource {\n@@ -400,9 +403,9 @@ struct mlx5_flow_dv_modify_hdr_resource {\n \t/**< Verbs modify header action object. */\n \tuint8_t ft_type; /**< Flow table type, Rx or Tx. */\n \tuint32_t actions_num; /**< Number of modification actions. */\n-\tstruct mlx5_modification_cmd actions[MLX5_MODIFY_NUM];\n-\t/**< Modification actions. */\n \tuint64_t flags; /**< Flags for RDMA API. */\n+\tstruct mlx5_modification_cmd actions[];\n+\t/**< Modification actions. */\n };\n \n /* Jump action resource structure. */\ndiff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c\nindex e8a764c..398d60f 100644\n--- a/drivers/net/mlx5/mlx5_flow_dv.c\n+++ b/drivers/net/mlx5/mlx5_flow_dv.c\n@@ -363,7 +363,7 @@ struct field_modify_info modify_tcp[] = {\n \t\tuint32_t mask;\n \t\tuint32_t data;\n \n-\t\tif (i >= MLX5_MODIFY_NUM)\n+\t\tif (i >= MLX5_MAX_MODIFY_NUM)\n \t\t\treturn rte_flow_error_set(error, EINVAL,\n \t\t\t\t RTE_FLOW_ERROR_TYPE_ACTION, NULL,\n \t\t\t\t \"too many items to modify\");\n@@ -404,11 +404,11 @@ struct field_modify_info modify_tcp[] = {\n \t\t++i;\n \t\t++field;\n \t} while (field->size);\n-\tresource->actions_num = i;\n-\tif (!resource->actions_num)\n+\tif (resource->actions_num == i)\n \t\treturn rte_flow_error_set(error, EINVAL,\n \t\t\t\t\t  RTE_FLOW_ERROR_TYPE_ACTION, NULL,\n \t\t\t\t\t  \"invalid modification flow item\");\n+\tresource->actions_num = i;\n \treturn 0;\n }\n \n@@ -569,7 +569,7 @@ struct field_modify_info modify_tcp[] = {\n \tstruct mlx5_modification_cmd *actions = &resource->actions[i];\n \tstruct field_modify_info *field = modify_vlan_out_first_vid;\n \n-\tif (i >= MLX5_MODIFY_NUM)\n+\tif (i >= MLX5_MAX_MODIFY_NUM)\n \t\treturn rte_flow_error_set(error, EINVAL,\n \t\t\t RTE_FLOW_ERROR_TYPE_ACTION, NULL,\n \t\t\t \"too many items to modify\");\n@@ -902,7 +902,7 @@ struct field_modify_info modify_tcp[] = {\n \tstruct mlx5_modification_cmd *actions = resource->actions;\n \tuint32_t i = resource->actions_num;\n \n-\tif (i >= MLX5_MODIFY_NUM)\n+\tif (i >= MLX5_MAX_MODIFY_NUM)\n \t\treturn rte_flow_error_set(error, EINVAL,\n \t\t\t\t\t  RTE_FLOW_ERROR_TYPE_ACTION, NULL,\n \t\t\t\t\t  \"too many items to modify\");\n@@ -914,10 +914,6 @@ struct field_modify_info modify_tcp[] = {\n \tactions[i].data1 = rte_cpu_to_be_32(conf->data);\n \t++i;\n \tresource->actions_num = i;\n-\tif (!resource->actions_num)\n-\t\treturn rte_flow_error_set(error, EINVAL,\n-\t\t\t\t\t  RTE_FLOW_ERROR_TYPE_ACTION, NULL,\n-\t\t\t\t\t  \"invalid modification flow item\");\n \treturn 0;\n }\n \n@@ -2256,7 +2252,6 @@ struct field_modify_info modify_tcp[] = {\n \t\tdomain = sh->rx_domain;\n \telse\n \t\tdomain = sh->tx_domain;\n-\n \t/* Lookup a matching resource from cache. */\n \tLIST_FOREACH(cache_resource, &sh->encaps_decaps, next) {\n \t\tif (resource->reformat_type == cache_resource->reformat_type &&\n@@ -3367,21 +3362,27 @@ struct field_modify_info modify_tcp[] = {\n  *\n  * @param dev\n  *   Pointer to rte_eth_dev structure.\n+ * @param flags\n+ *   Flags bits to check if root level.\n  *\n  * @return\n  *   Max number of modify header actions device can support.\n  */\n static unsigned int\n-flow_dv_modify_hdr_action_max(struct rte_eth_dev *dev)\n+flow_dv_modify_hdr_action_max(struct rte_eth_dev *dev, uint64_t flags)\n {\n \t/*\n \t * There's no way to directly query the max cap. Although it has to be\n \t * acquried by iterative trial, it is a safe assumption that more\n \t * actions are supported by FW if extensive metadata register is\n-\t * supported.\n+\t * supported. (Only in the root table)\n \t */\n-\treturn mlx5_flow_ext_mreg_supported(dev) ? MLX5_MODIFY_NUM :\n-\t\t\t\t\t\t   MLX5_MODIFY_NUM_NO_MREG;\n+\tif (!(flags & MLX5DV_DR_ACTION_FLAGS_ROOT_LEVEL))\n+\t\treturn MLX5_MAX_MODIFY_NUM;\n+\telse\n+\t\treturn mlx5_flow_ext_mreg_supported(dev) ?\n+\t\t\t\t\tMLX5_ROOT_TBL_MODIFY_NUM :\n+\t\t\t\t\tMLX5_ROOT_TBL_MODIFY_NUM_NO_MREG;\n }\n \n /**\n@@ -3472,8 +3473,12 @@ struct field_modify_info modify_tcp[] = {\n \tstruct mlx5_ibv_shared *sh = priv->sh;\n \tstruct mlx5_flow_dv_modify_hdr_resource *cache_resource;\n \tstruct mlx5dv_dr_domain *ns;\n+\tuint32_t actions_len;\n \n-\tif (resource->actions_num > flow_dv_modify_hdr_action_max(dev))\n+\tresource->flags =\n+\t\tdev_flow->group ? 0 : MLX5DV_DR_ACTION_FLAGS_ROOT_LEVEL;\n+\tif (resource->actions_num > flow_dv_modify_hdr_action_max(dev,\n+\t\t\t\t    resource->flags))\n \t\treturn rte_flow_error_set(error, EOVERFLOW,\n \t\t\t\t\t  RTE_FLOW_ERROR_TYPE_ACTION, NULL,\n \t\t\t\t\t  \"too many modify header items\");\n@@ -3483,17 +3488,15 @@ struct field_modify_info modify_tcp[] = {\n \t\tns = sh->tx_domain;\n \telse\n \t\tns = sh->rx_domain;\n-\tresource->flags =\n-\t\tdev_flow->group ? 0 : MLX5DV_DR_ACTION_FLAGS_ROOT_LEVEL;\n \t/* Lookup a matching resource from cache. */\n+\tactions_len = resource->actions_num * sizeof(resource->actions[0]);\n \tLIST_FOREACH(cache_resource, &sh->modify_cmds, next) {\n \t\tif (resource->ft_type == cache_resource->ft_type &&\n \t\t    resource->actions_num == cache_resource->actions_num &&\n \t\t    resource->flags == cache_resource->flags &&\n \t\t    !memcmp((const void *)resource->actions,\n \t\t\t    (const void *)cache_resource->actions,\n-\t\t\t    (resource->actions_num *\n-\t\t\t\t\t    sizeof(resource->actions[0])))) {\n+\t\t\t    actions_len)) {\n \t\t\tDRV_LOG(DEBUG, \"modify-header resource %p: refcnt %d++\",\n \t\t\t\t(void *)cache_resource,\n \t\t\t\trte_atomic32_read(&cache_resource->refcnt));\n@@ -3503,18 +3506,18 @@ struct field_modify_info modify_tcp[] = {\n \t\t}\n \t}\n \t/* Register new modify-header resource. */\n-\tcache_resource = rte_calloc(__func__, 1, sizeof(*cache_resource), 0);\n+\tcache_resource = rte_calloc(__func__, 1,\n+\t\t\t\t    sizeof(*cache_resource) + actions_len, 0);\n \tif (!cache_resource)\n \t\treturn rte_flow_error_set(error, ENOMEM,\n \t\t\t\t\t  RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL,\n \t\t\t\t\t  \"cannot allocate resource memory\");\n \t*cache_resource = *resource;\n+\trte_memcpy(cache_resource->actions, resource->actions, actions_len);\n \tcache_resource->verbs_action =\n \t\tmlx5_glue->dv_create_flow_action_modify_header\n-\t\t\t\t\t(sh->ctx, cache_resource->ft_type,\n-\t\t\t\t\t ns, cache_resource->flags,\n-\t\t\t\t\t cache_resource->actions_num *\n-\t\t\t\t\t sizeof(cache_resource->actions[0]),\n+\t\t\t\t\t(sh->ctx, cache_resource->ft_type, ns,\n+\t\t\t\t\t cache_resource->flags, actions_len,\n \t\t\t\t\t (uint64_t *)cache_resource->actions);\n \tif (!cache_resource->verbs_action) {\n \t\trte_free(cache_resource);\n@@ -6739,10 +6742,13 @@ struct field_modify_info modify_tcp[] = {\n \t};\n \tint actions_n = 0;\n \tbool actions_end = false;\n-\tstruct mlx5_flow_dv_modify_hdr_resource mhdr_res = {\n-\t\t.ft_type = attr->egress ? MLX5DV_FLOW_TABLE_TYPE_NIC_TX :\n-\t\t\t\t\t  MLX5DV_FLOW_TABLE_TYPE_NIC_RX\n-\t};\n+\tunion {\n+\t\tstruct mlx5_flow_dv_modify_hdr_resource res;\n+\t\tuint8_t len[sizeof(struct mlx5_flow_dv_modify_hdr_resource) +\n+\t\t\t    sizeof(struct mlx5_modification_cmd) *\n+\t\t\t    (MLX5_MAX_MODIFY_NUM + 1)];\n+\t} mhdr_dummy;\n+\tstruct mlx5_flow_dv_modify_hdr_resource *mhdr_res = &mhdr_dummy.res;\n \tunion flow_dv_attr flow_attr = { .attr = 0 };\n \tuint32_t tag_be;\n \tunion mlx5_flow_tbl_key tbl_key;\n@@ -6754,15 +6760,19 @@ struct field_modify_info modify_tcp[] = {\n \tuint32_t table;\n \tint ret = 0;\n \n+\tmhdr_res->ft_type = attr->egress ? MLX5DV_FLOW_TABLE_TYPE_NIC_TX :\n+\t\t\t\t\t   MLX5DV_FLOW_TABLE_TYPE_NIC_RX;\n \tret = mlx5_flow_group_to_table(attr, dev_flow->external, attr->group,\n \t\t\t\t       &table, error);\n \tif (ret)\n \t\treturn ret;\n \tdev_flow->group = table;\n \tif (attr->transfer)\n-\t\tmhdr_res.ft_type = MLX5DV_FLOW_TABLE_TYPE_FDB;\n+\t\tmhdr_res->ft_type = MLX5DV_FLOW_TABLE_TYPE_FDB;\n \tif (priority == MLX5_FLOW_PRIO_RSVD)\n \t\tpriority = dev_conf->flow_prio - 1;\n+\t/* number of actions must be set to 0 in case of dirty stack. */\n+\tmhdr_res->actions_num = 0;\n \tfor (; !actions_end ; actions++) {\n \t\tconst struct rte_flow_action_queue *queue;\n \t\tconst struct rte_flow_action_rss *rss;\n@@ -6800,7 +6810,7 @@ struct field_modify_info modify_tcp[] = {\n \t\t\t\t};\n \n \t\t\t\tif (flow_dv_convert_action_mark(dev, &mark,\n-\t\t\t\t\t\t\t\t&mhdr_res,\n+\t\t\t\t\t\t\t\tmhdr_res,\n \t\t\t\t\t\t\t\terror))\n \t\t\t\t\treturn -rte_errno;\n \t\t\t\taction_flags |= MLX5_FLOW_ACTION_MARK_EXT;\n@@ -6822,7 +6832,7 @@ struct field_modify_info modify_tcp[] = {\n \t\t\t\t\t\tactions->conf;\n \n \t\t\t\tif (flow_dv_convert_action_mark(dev, mark,\n-\t\t\t\t\t\t\t\t&mhdr_res,\n+\t\t\t\t\t\t\t\tmhdr_res,\n \t\t\t\t\t\t\t\terror))\n \t\t\t\t\treturn -rte_errno;\n \t\t\t\taction_flags |= MLX5_FLOW_ACTION_MARK_EXT;\n@@ -6843,7 +6853,7 @@ struct field_modify_info modify_tcp[] = {\n \t\t\tbreak;\n \t\tcase RTE_FLOW_ACTION_TYPE_SET_META:\n \t\t\tif (flow_dv_convert_action_set_meta\n-\t\t\t\t(dev, &mhdr_res, attr,\n+\t\t\t\t(dev, mhdr_res, attr,\n \t\t\t\t (const struct rte_flow_action_set_meta *)\n \t\t\t\t  actions->conf, error))\n \t\t\t\treturn -rte_errno;\n@@ -6851,7 +6861,7 @@ struct field_modify_info modify_tcp[] = {\n \t\t\tbreak;\n \t\tcase RTE_FLOW_ACTION_TYPE_SET_TAG:\n \t\t\tif (flow_dv_convert_action_set_tag\n-\t\t\t\t(dev, &mhdr_res,\n+\t\t\t\t(dev, mhdr_res,\n \t\t\t\t (const struct rte_flow_action_set_tag *)\n \t\t\t\t  actions->conf, error))\n \t\t\t\treturn -rte_errno;\n@@ -6951,7 +6961,7 @@ struct field_modify_info modify_tcp[] = {\n \t\t\tmlx5_update_vlan_vid_pcp(actions, &vlan);\n \t\t\t/* If no VLAN push - this is a modify header action */\n \t\t\tif (flow_dv_convert_action_modify_vlan_vid\n-\t\t\t\t\t\t(&mhdr_res, actions, error))\n+\t\t\t\t\t\t(mhdr_res, actions, error))\n \t\t\t\treturn -rte_errno;\n \t\t\taction_flags |= MLX5_FLOW_ACTION_OF_SET_VLAN_VID;\n \t\t\tbreak;\n@@ -7050,7 +7060,7 @@ struct field_modify_info modify_tcp[] = {\n \t\tcase RTE_FLOW_ACTION_TYPE_SET_MAC_SRC:\n \t\tcase RTE_FLOW_ACTION_TYPE_SET_MAC_DST:\n \t\t\tif (flow_dv_convert_action_modify_mac\n-\t\t\t\t\t(&mhdr_res, actions, error))\n+\t\t\t\t\t(mhdr_res, actions, error))\n \t\t\t\treturn -rte_errno;\n \t\t\taction_flags |= actions->type ==\n \t\t\t\t\tRTE_FLOW_ACTION_TYPE_SET_MAC_SRC ?\n@@ -7060,7 +7070,7 @@ struct field_modify_info modify_tcp[] = {\n \t\tcase RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC:\n \t\tcase RTE_FLOW_ACTION_TYPE_SET_IPV4_DST:\n \t\t\tif (flow_dv_convert_action_modify_ipv4\n-\t\t\t\t\t(&mhdr_res, actions, error))\n+\t\t\t\t\t(mhdr_res, actions, error))\n \t\t\t\treturn -rte_errno;\n \t\t\taction_flags |= actions->type ==\n \t\t\t\t\tRTE_FLOW_ACTION_TYPE_SET_IPV4_SRC ?\n@@ -7070,7 +7080,7 @@ struct field_modify_info modify_tcp[] = {\n \t\tcase RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC:\n \t\tcase RTE_FLOW_ACTION_TYPE_SET_IPV6_DST:\n \t\t\tif (flow_dv_convert_action_modify_ipv6\n-\t\t\t\t\t(&mhdr_res, actions, error))\n+\t\t\t\t\t(mhdr_res, actions, error))\n \t\t\t\treturn -rte_errno;\n \t\t\taction_flags |= actions->type ==\n \t\t\t\t\tRTE_FLOW_ACTION_TYPE_SET_IPV6_SRC ?\n@@ -7080,7 +7090,7 @@ struct field_modify_info modify_tcp[] = {\n \t\tcase RTE_FLOW_ACTION_TYPE_SET_TP_SRC:\n \t\tcase RTE_FLOW_ACTION_TYPE_SET_TP_DST:\n \t\t\tif (flow_dv_convert_action_modify_tp\n-\t\t\t\t\t(&mhdr_res, actions, items,\n+\t\t\t\t\t(mhdr_res, actions, items,\n \t\t\t\t\t &flow_attr, error))\n \t\t\t\treturn -rte_errno;\n \t\t\taction_flags |= actions->type ==\n@@ -7090,13 +7100,13 @@ struct field_modify_info modify_tcp[] = {\n \t\t\tbreak;\n \t\tcase RTE_FLOW_ACTION_TYPE_DEC_TTL:\n \t\t\tif (flow_dv_convert_action_modify_dec_ttl\n-\t\t\t\t\t(&mhdr_res, items, &flow_attr, error))\n+\t\t\t\t\t(mhdr_res, items, &flow_attr, error))\n \t\t\t\treturn -rte_errno;\n \t\t\taction_flags |= MLX5_FLOW_ACTION_DEC_TTL;\n \t\t\tbreak;\n \t\tcase RTE_FLOW_ACTION_TYPE_SET_TTL:\n \t\t\tif (flow_dv_convert_action_modify_ttl\n-\t\t\t\t\t(&mhdr_res, actions, items,\n+\t\t\t\t\t(mhdr_res, actions, items,\n \t\t\t\t\t &flow_attr, error))\n \t\t\t\treturn -rte_errno;\n \t\t\taction_flags |= MLX5_FLOW_ACTION_SET_TTL;\n@@ -7104,7 +7114,7 @@ struct field_modify_info modify_tcp[] = {\n \t\tcase RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ:\n \t\tcase RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ:\n \t\t\tif (flow_dv_convert_action_modify_tcp_seq\n-\t\t\t\t\t(&mhdr_res, actions, error))\n+\t\t\t\t\t(mhdr_res, actions, error))\n \t\t\t\treturn -rte_errno;\n \t\t\taction_flags |= actions->type ==\n \t\t\t\t\tRTE_FLOW_ACTION_TYPE_INC_TCP_SEQ ?\n@@ -7115,7 +7125,7 @@ struct field_modify_info modify_tcp[] = {\n \t\tcase RTE_FLOW_ACTION_TYPE_INC_TCP_ACK:\n \t\tcase RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK:\n \t\t\tif (flow_dv_convert_action_modify_tcp_ack\n-\t\t\t\t\t(&mhdr_res, actions, error))\n+\t\t\t\t\t(mhdr_res, actions, error))\n \t\t\t\treturn -rte_errno;\n \t\t\taction_flags |= actions->type ==\n \t\t\t\t\tRTE_FLOW_ACTION_TYPE_INC_TCP_ACK ?\n@@ -7124,13 +7134,13 @@ struct field_modify_info modify_tcp[] = {\n \t\t\tbreak;\n \t\tcase MLX5_RTE_FLOW_ACTION_TYPE_TAG:\n \t\t\tif (flow_dv_convert_action_set_reg\n-\t\t\t\t\t(&mhdr_res, actions, error))\n+\t\t\t\t\t(mhdr_res, actions, error))\n \t\t\t\treturn -rte_errno;\n \t\t\taction_flags |= MLX5_FLOW_ACTION_SET_TAG;\n \t\t\tbreak;\n \t\tcase MLX5_RTE_FLOW_ACTION_TYPE_COPY_MREG:\n \t\t\tif (flow_dv_convert_action_copy_mreg\n-\t\t\t\t\t(dev, &mhdr_res, actions, error))\n+\t\t\t\t\t(dev, mhdr_res, actions, error))\n \t\t\t\treturn -rte_errno;\n \t\t\taction_flags |= MLX5_FLOW_ACTION_SET_TAG;\n \t\t\tbreak;\n@@ -7155,10 +7165,10 @@ struct field_modify_info modify_tcp[] = {\n \t\t\tbreak;\n \t\tcase RTE_FLOW_ACTION_TYPE_END:\n \t\t\tactions_end = true;\n-\t\t\tif (mhdr_res.actions_num) {\n+\t\t\tif (mhdr_res->actions_num) {\n \t\t\t\t/* create modify action if needed. */\n \t\t\t\tif (flow_dv_modify_hdr_resource_register\n-\t\t\t\t\t(dev, &mhdr_res, dev_flow, error))\n+\t\t\t\t\t(dev, mhdr_res, dev_flow, error))\n \t\t\t\t\treturn -rte_errno;\n \t\t\t\tdev_flow->dv.actions[modify_action_position] =\n \t\t\t\t\tdev_flow->dv.modify_hdr->verbs_action;\n@@ -7167,7 +7177,7 @@ struct field_modify_info modify_tcp[] = {\n \t\tdefault:\n \t\t\tbreak;\n \t\t}\n-\t\tif (mhdr_res.actions_num &&\n+\t\tif (mhdr_res->actions_num &&\n \t\t    modify_action_position == UINT32_MAX)\n \t\t\tmodify_action_position = actions_n++;\n \t}\n",
    "prefixes": [
        "v2"
    ]
}