get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 83669,
    "url": "https://patches.dpdk.org/api/patches/83669/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20201104082959.63800-3-chenxux.di@intel.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": "<20201104082959.63800-3-chenxux.di@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20201104082959.63800-3-chenxux.di@intel.com",
    "date": "2020-11-04T08:29:59",
    "name": "[2/2] net/i40e: fix incorrect FDIR flex pit",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "f6851893c93fb6469587801da33ea85c00ff511c",
    "submitter": {
        "id": 1409,
        "url": "https://patches.dpdk.org/api/people/1409/?format=api",
        "name": "Chenxu Di",
        "email": "chenxux.di@intel.com"
    },
    "delegate": {
        "id": 1540,
        "url": "https://patches.dpdk.org/api/users/1540/?format=api",
        "username": "qzhan15",
        "first_name": "Qi",
        "last_name": "Zhang",
        "email": "qi.z.zhang@intel.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20201104082959.63800-3-chenxux.di@intel.com/mbox/",
    "series": [
        {
            "id": 13655,
            "url": "https://patches.dpdk.org/api/series/13655/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=13655",
            "date": "2020-11-04T08:29:57",
            "name": "net/i40e: fix incorrect FDIR flex configuration",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/13655/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/83669/comments/",
    "check": "warning",
    "checks": "https://patches.dpdk.org/api/patches/83669/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 16CF4A04E7;\n\tWed,  4 Nov 2020 09:45:22 +0100 (CET)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 1D10FC858;\n\tWed,  4 Nov 2020 09:44:48 +0100 (CET)",
            "from mga07.intel.com (mga07.intel.com [134.134.136.100])\n by dpdk.org (Postfix) with ESMTP id 3324BC87E;\n Wed,  4 Nov 2020 09:44:45 +0100 (CET)",
            "from orsmga005.jf.intel.com ([10.7.209.41])\n by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 04 Nov 2020 00:44:44 -0800",
            "from dpdk-server06.sh.intel.com ([10.239.255.61])\n by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 04 Nov 2020 00:44:41 -0800"
        ],
        "IronPort-SDR": [
            "\n zs65uBkQGCd+I0OvjiqjXG8OcQGTYhb6Wzv4re7yKoxVuoNpyqRnkgi0XGTh9MQW0IotaZrW9X\n pG5OYO1OODOw==",
            "\n m3++paPIbfCFUqLuquZQJPxo8f0YU/NfXovX6Eyrir33UJYLiRRE/DiflZavcNN+EWRGxY2Q1u\n yCcvRPNIvHGQ=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6000,8403,9794\"; a=\"233349917\"",
            "E=Sophos;i=\"5.77,450,1596524400\"; d=\"scan'208\";a=\"233349917\"",
            "E=Sophos;i=\"5.77,450,1596524400\"; d=\"scan'208\";a=\"538834806\""
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "From": "Chenxu Di <chenxux.di@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "beilei.xing@intel.com, jia.guo@intel.com, haiyue.wang@intel.com,\n Chenxu Di <chenxux.di@intel.com>, stable@dpdk.org",
        "Date": "Wed,  4 Nov 2020 08:29:59 +0000",
        "Message-Id": "<20201104082959.63800-3-chenxux.di@intel.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20201104082959.63800-1-chenxux.di@intel.com>",
        "References": "<20201104082959.63800-1-chenxux.di@intel.com>",
        "Subject": "[dpdk-dev] [PATCH 2/2] net/i40e: fix incorrect FDIR flex pit",
        "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": "The register of FDIR flex pit should not be set during flow validate.\nIt should be set when flow create.\n\nFixes: 6ced3dd72f5f (\"net/i40e: support flexible payload parsing for FDIR\")\nCc: stable@dpdk.org\n\nSigned-off-by: Chenxu Di <chenxux.di@intel.com>\n---\n drivers/net/i40e/i40e_ethdev.h |  21 ++++---\n drivers/net/i40e/i40e_fdir.c   | 100 +++++++++++++++++++++++++++++++++\n drivers/net/i40e/i40e_flow.c   |  98 +++-----------------------------\n 3 files changed, 119 insertions(+), 100 deletions(-)",
    "diff": "diff --git a/drivers/net/i40e/i40e_ethdev.h b/drivers/net/i40e/i40e_ethdev.h\nindex 6be929f65..e00133c88 100644\n--- a/drivers/net/i40e/i40e_ethdev.h\n+++ b/drivers/net/i40e/i40e_ethdev.h\n@@ -599,12 +599,22 @@ enum i40e_fdir_ip_type {\n \tI40E_FDIR_IPTYPE_IPV6,\n };\n \n+/*\n+ * Structure to store flex pit for flow diretor.\n+ */\n+struct i40e_fdir_flex_pit {\n+\tuint8_t src_offset; /* offset in words from the beginning of payload */\n+\tuint8_t size;       /* size in words */\n+\tuint8_t dst_offset; /* offset in words of flexible payload */\n+};\n+\n /* A structure used to contain extend input of flow */\n struct i40e_fdir_flow_ext {\n \tuint16_t vlan_tci;\n \tuint8_t flexbytes[RTE_ETH_FDIR_MAX_FLEXLEN];\n \t/* It is filled by the flexible payload to match. */\n \tuint8_t flex_mask[I40E_FDIR_MAX_FLEX_LEN];\n+\tuint8_t raw_id;\n \tuint8_t is_vf;   /* 1 for VF, 0 for port dev */\n \tuint16_t dst_id; /* VF ID, available when is_vf is 1*/\n \tbool inner_ip;   /* If there is inner ip */\n@@ -613,6 +623,8 @@ struct i40e_fdir_flow_ext {\n \tbool customized_pctype; /* If customized pctype is used */\n \tbool pkt_template; /* If raw packet template is used */\n \tbool is_udp; /* ipv4|ipv6 udp flow */\n+\tenum i40e_flxpld_layer_idx layer_idx;\n+\tstruct i40e_fdir_flex_pit flex_pit[I40E_MAX_FLXPLD_LAYER * I40E_MAX_FLXPLD_FIED];\n };\n \n /* A structure used to define the input for a flow director filter entry */\n@@ -664,15 +676,6 @@ struct i40e_fdir_filter_conf {\n \tstruct i40e_fdir_action action;  /* Action taken when match */\n };\n \n-/*\n- * Structure to store flex pit for flow diretor.\n- */\n-struct i40e_fdir_flex_pit {\n-\tuint8_t src_offset;    /* offset in words from the beginning of payload */\n-\tuint8_t size;          /* size in words */\n-\tuint8_t dst_offset;    /* offset in words of flexible payload */\n-};\n-\n struct i40e_fdir_flex_mask {\n \tuint8_t word_mask;  /**< Bit i enables word i of flexible payload */\n \tuint8_t nb_bitmask;\ndiff --git a/drivers/net/i40e/i40e_fdir.c b/drivers/net/i40e/i40e_fdir.c\nindex e31464eb7..e64cb2fd0 100644\n--- a/drivers/net/i40e/i40e_fdir.c\n+++ b/drivers/net/i40e/i40e_fdir.c\n@@ -1765,6 +1765,81 @@ i40e_add_del_fdir_filter(struct rte_eth_dev *dev,\n \treturn ret;\n }\n \n+static int\n+i40e_flow_store_flex_pit(struct i40e_pf *pf,\n+\t\t\t struct i40e_fdir_flex_pit *flex_pit,\n+\t\t\t enum i40e_flxpld_layer_idx layer_idx,\n+\t\t\t uint8_t raw_id)\n+{\n+\tuint8_t field_idx;\n+\n+\tfield_idx = layer_idx * I40E_MAX_FLXPLD_FIED + raw_id;\n+\t/* Check if the configuration is conflicted */\n+\tif (pf->fdir.flex_pit_flag[layer_idx] &&\n+\t    (pf->fdir.flex_set[field_idx].src_offset != flex_pit->src_offset ||\n+\t     pf->fdir.flex_set[field_idx].size != flex_pit->size ||\n+\t     pf->fdir.flex_set[field_idx].dst_offset != flex_pit->dst_offset))\n+\t\treturn -1;\n+\n+\t/* Check if the configuration exists. */\n+\tif (pf->fdir.flex_pit_flag[layer_idx] &&\n+\t    (pf->fdir.flex_set[field_idx].src_offset == flex_pit->src_offset &&\n+\t     pf->fdir.flex_set[field_idx].size == flex_pit->size &&\n+\t     pf->fdir.flex_set[field_idx].dst_offset == flex_pit->dst_offset))\n+\t\treturn 1;\n+\n+\tpf->fdir.flex_set[field_idx].src_offset =\n+\t\tflex_pit->src_offset;\n+\tpf->fdir.flex_set[field_idx].size =\n+\t\tflex_pit->size;\n+\tpf->fdir.flex_set[field_idx].dst_offset =\n+\t\tflex_pit->dst_offset;\n+\n+\treturn 0;\n+}\n+\n+static void\n+i40e_flow_set_fdir_flex_pit(struct i40e_pf *pf,\n+\t\t\t    enum i40e_flxpld_layer_idx layer_idx,\n+\t\t\t    uint8_t raw_id)\n+{\n+\tstruct i40e_hw *hw = I40E_PF_TO_HW(pf);\n+\tuint32_t flx_pit, flx_ort;\n+\tuint8_t field_idx;\n+\tuint16_t min_next_off = 0;  /* in words */\n+\tuint8_t i;\n+\n+\tif (raw_id) {\n+\t\tflx_ort = (1 << I40E_GLQF_ORT_FLX_PAYLOAD_SHIFT) |\n+\t\t\t  (raw_id << I40E_GLQF_ORT_FIELD_CNT_SHIFT) |\n+\t\t\t  (layer_idx * I40E_MAX_FLXPLD_FIED);\n+\t\tI40E_WRITE_GLB_REG(hw, I40E_GLQF_ORT(33 + layer_idx), flx_ort);\n+\t}\n+\n+\t/* Set flex pit */\n+\tfor (i = 0; i < raw_id; i++) {\n+\t\tfield_idx = layer_idx * I40E_MAX_FLXPLD_FIED + i;\n+\t\tflx_pit = MK_FLX_PIT(pf->fdir.flex_set[field_idx].src_offset,\n+\t\t\t\t     pf->fdir.flex_set[field_idx].size,\n+\t\t\t\t     pf->fdir.flex_set[field_idx].dst_offset);\n+\n+\t\tI40E_WRITE_REG(hw, I40E_PRTQF_FLX_PIT(field_idx), flx_pit);\n+\t\tmin_next_off = pf->fdir.flex_set[field_idx].src_offset +\n+\t\t\tpf->fdir.flex_set[field_idx].size;\n+\t}\n+\n+\tfor (; i < I40E_MAX_FLXPLD_FIED; i++) {\n+\t\t/* set the non-used register obeying register's constrain */\n+\t\tfield_idx = layer_idx * I40E_MAX_FLXPLD_FIED + i;\n+\t\tflx_pit = MK_FLX_PIT(min_next_off, NONUSE_FLX_PIT_FSIZE,\n+\t\t\t\t     NONUSE_FLX_PIT_DEST_OFF);\n+\t\tI40E_WRITE_REG(hw, I40E_PRTQF_FLX_PIT(field_idx), flx_pit);\n+\t\tmin_next_off++;\n+\t}\n+\n+\tpf->fdir.flex_pit_flag[layer_idx] = 1;\n+}\n+\n static int\n i40e_flow_store_flex_mask(struct i40e_pf *pf,\n \t\t\t  enum i40e_filter_pctype pctype,\n@@ -1889,13 +1964,17 @@ i40e_flow_add_del_fdir_filter(struct rte_eth_dev *dev,\n {\n \tstruct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n \tstruct i40e_pf *pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private);\n+\tenum i40e_flxpld_layer_idx layer_idx = I40E_FLXPLD_L2_IDX;\n \tunsigned char *pkt = NULL;\n \tenum i40e_filter_pctype pctype;\n \tstruct i40e_fdir_info *fdir_info = &pf->fdir;\n \tuint8_t flex_mask[I40E_FDIR_MAX_FLEX_LEN];\n \tstruct i40e_fdir_filter *node;\n \tstruct i40e_fdir_filter check_filter; /* Check if the filter exists */\n+\tstruct i40e_fdir_flex_pit flex_pit;\n+\tbool cfg_flex_pit = true;\n \tbool wait_status = true;\n+\tuint8_t field_idx;\n \tint ret = 0;\n \tint i;\n \n@@ -1931,6 +2010,27 @@ i40e_flow_add_del_fdir_filter(struct rte_eth_dev *dev,\n \n \tif (add) {\n \t\tif (!filter->input.flow_ext.customized_pctype) {\n+\t\t\tfor (i = 0; i < filter->input.flow_ext.raw_id; i++) {\n+\t\t\t\tlayer_idx = filter->input.flow_ext.layer_idx;\n+\t\t\t\tfield_idx = layer_idx * I40E_MAX_FLXPLD_FIED + i;\n+\t\t\t\tflex_pit = filter->input.flow_ext.flex_pit[field_idx];\n+\n+\t\t\t\t/* Store flex pit to SW */\n+\t\t\t\tret = i40e_flow_store_flex_pit(pf, &flex_pit,\n+\t\t\t\t\t\t\t       layer_idx, i);\n+\t\t\t\tif (ret < 0) {\n+\t\t\t\t\tPMD_DRV_LOG(ERR, \"Conflict with the\"\n+\t\t\t\t\t\t    \" first flexible rule.\");\n+\t\t\t\t\treturn -EINVAL;\n+\t\t\t\t} else if (ret > 0) {\n+\t\t\t\t\tcfg_flex_pit = false;\n+\t\t\t\t}\n+\t\t\t}\n+\n+\t\t\tif (cfg_flex_pit)\n+\t\t\t\ti40e_flow_set_fdir_flex_pit(pf, layer_idx,\n+\t\t\t\t\t\tfilter->input.flow_ext.raw_id);\n+\n \t\t\t/* Store flex mask to SW */\n \t\t\tfor (i = 0; i < I40E_FDIR_MAX_FLEX_LEN; i++)\n \t\t\t\tflex_mask[i] =\ndiff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c\nindex 4f916494e..098ae13ab 100644\n--- a/drivers/net/i40e/i40e_flow.c\n+++ b/drivers/net/i40e/i40e_flow.c\n@@ -2240,81 +2240,6 @@ i40e_flow_check_raw_item(const struct rte_flow_item *item,\n \treturn 0;\n }\n \n-static int\n-i40e_flow_store_flex_pit(struct i40e_pf *pf,\n-\t\t\t struct i40e_fdir_flex_pit *flex_pit,\n-\t\t\t enum i40e_flxpld_layer_idx layer_idx,\n-\t\t\t uint8_t raw_id)\n-{\n-\tuint8_t field_idx;\n-\n-\tfield_idx = layer_idx * I40E_MAX_FLXPLD_FIED + raw_id;\n-\t/* Check if the configuration is conflicted */\n-\tif (pf->fdir.flex_pit_flag[layer_idx] &&\n-\t    (pf->fdir.flex_set[field_idx].src_offset != flex_pit->src_offset ||\n-\t     pf->fdir.flex_set[field_idx].size != flex_pit->size ||\n-\t     pf->fdir.flex_set[field_idx].dst_offset != flex_pit->dst_offset))\n-\t\treturn -1;\n-\n-\t/* Check if the configuration exists. */\n-\tif (pf->fdir.flex_pit_flag[layer_idx] &&\n-\t    (pf->fdir.flex_set[field_idx].src_offset == flex_pit->src_offset &&\n-\t     pf->fdir.flex_set[field_idx].size == flex_pit->size &&\n-\t     pf->fdir.flex_set[field_idx].dst_offset == flex_pit->dst_offset))\n-\t\treturn 1;\n-\n-\tpf->fdir.flex_set[field_idx].src_offset =\n-\t\tflex_pit->src_offset;\n-\tpf->fdir.flex_set[field_idx].size =\n-\t\tflex_pit->size;\n-\tpf->fdir.flex_set[field_idx].dst_offset =\n-\t\tflex_pit->dst_offset;\n-\n-\treturn 0;\n-}\n-\n-static void\n-i40e_flow_set_fdir_flex_pit(struct i40e_pf *pf,\n-\t\t\t    enum i40e_flxpld_layer_idx layer_idx,\n-\t\t\t    uint8_t raw_id)\n-{\n-\tstruct i40e_hw *hw = I40E_PF_TO_HW(pf);\n-\tuint32_t flx_pit, flx_ort;\n-\tuint8_t field_idx;\n-\tuint16_t min_next_off = 0;  /* in words */\n-\tuint8_t i;\n-\n-\tif (raw_id) {\n-\t\tflx_ort = (1 << I40E_GLQF_ORT_FLX_PAYLOAD_SHIFT) |\n-\t\t\t  (raw_id << I40E_GLQF_ORT_FIELD_CNT_SHIFT) |\n-\t\t\t  (layer_idx * I40E_MAX_FLXPLD_FIED);\n-\t\tI40E_WRITE_GLB_REG(hw, I40E_GLQF_ORT(33 + layer_idx), flx_ort);\n-\t}\n-\n-\t/* Set flex pit */\n-\tfor (i = 0; i < raw_id; i++) {\n-\t\tfield_idx = layer_idx * I40E_MAX_FLXPLD_FIED + i;\n-\t\tflx_pit = MK_FLX_PIT(pf->fdir.flex_set[field_idx].src_offset,\n-\t\t\t\t     pf->fdir.flex_set[field_idx].size,\n-\t\t\t\t     pf->fdir.flex_set[field_idx].dst_offset);\n-\n-\t\tI40E_WRITE_REG(hw, I40E_PRTQF_FLX_PIT(field_idx), flx_pit);\n-\t\tmin_next_off = pf->fdir.flex_set[field_idx].src_offset +\n-\t\t\tpf->fdir.flex_set[field_idx].size;\n-\t}\n-\n-\tfor (; i < I40E_MAX_FLXPLD_FIED; i++) {\n-\t\t/* set the non-used register obeying register's constrain */\n-\t\tfield_idx = layer_idx * I40E_MAX_FLXPLD_FIED + i;\n-\t\tflx_pit = MK_FLX_PIT(min_next_off, NONUSE_FLX_PIT_FSIZE,\n-\t\t\t\t     NONUSE_FLX_PIT_DEST_OFF);\n-\t\tI40E_WRITE_REG(hw, I40E_PRTQF_FLX_PIT(field_idx), flx_pit);\n-\t\tmin_next_off++;\n-\t}\n-\n-\tpf->fdir.flex_pit_flag[layer_idx] = 1;\n-}\n-\n static int\n i40e_flow_set_fdir_inset(struct i40e_pf *pf,\n \t\t\t enum i40e_filter_pctype pctype,\n@@ -2534,10 +2459,10 @@ i40e_flow_parse_fdir_pattern(struct rte_eth_dev *dev,\n \tstruct i40e_fdir_flex_pit flex_pit;\n \tuint8_t next_dst_off = 0;\n \tuint16_t flex_size;\n-\tbool cfg_flex_pit = true;\n \tuint16_t ether_type;\n \tuint32_t vtc_flow_cpu;\n \tbool outer_ip = true;\n+\tuint8_t field_idx;\n \tint ret;\n \n \tmemset(off_arr, 0, sizeof(off_arr));\n@@ -3089,6 +3014,7 @@ i40e_flow_parse_fdir_pattern(struct rte_eth_dev *dev,\n \n \t\t\tflex_size = 0;\n \t\t\tmemset(&flex_pit, 0, sizeof(struct i40e_fdir_flex_pit));\n+\t\t\tfield_idx = layer_idx * I40E_MAX_FLXPLD_FIED + raw_id;\n \t\t\tflex_pit.size =\n \t\t\t\traw_spec->length / sizeof(uint16_t);\n \t\t\tflex_pit.dst_offset =\n@@ -3115,18 +3041,6 @@ i40e_flow_parse_fdir_pattern(struct rte_eth_dev *dev,\n \t\t\t\treturn -rte_errno;\n \t\t\t}\n \n-\t\t\t/* Store flex pit to SW */\n-\t\t\tret = i40e_flow_store_flex_pit(pf, &flex_pit,\n-\t\t\t\t\t\t       layer_idx, raw_id);\n-\t\t\tif (ret < 0) {\n-\t\t\t\trte_flow_error_set(error, EINVAL,\n-\t\t\t\t   RTE_FLOW_ERROR_TYPE_ITEM,\n-\t\t\t\t   item,\n-\t\t\t\t   \"Conflict with the first flexible rule.\");\n-\t\t\t\treturn -rte_errno;\n-\t\t\t} else if (ret > 0)\n-\t\t\t\tcfg_flex_pit = false;\n-\n \t\t\tfor (i = 0; i < raw_spec->length; i++) {\n \t\t\t\tj = i + next_dst_off;\n \t\t\t\tfilter->input.flow_ext.flexbytes[j] =\n@@ -3137,6 +3051,11 @@ i40e_flow_parse_fdir_pattern(struct rte_eth_dev *dev,\n \n \t\t\tnext_dst_off += raw_spec->length;\n \t\t\traw_id++;\n+\n+\t\t\tmemcpy(&filter->input.flow_ext.flex_pit[field_idx],\n+\t\t\t       &flex_pit, sizeof(struct i40e_fdir_flex_pit));\n+\t\t\tfilter->input.flow_ext.layer_idx = layer_idx;\n+\t\t\tfilter->input.flow_ext.raw_id = raw_id;\n \t\t\tbreak;\n \t\tcase RTE_FLOW_ITEM_TYPE_VF:\n \t\t\tvf_spec = item->spec;\n@@ -3222,9 +3141,6 @@ i40e_flow_parse_fdir_pattern(struct rte_eth_dev *dev,\n \t\t\t\t\t   \"Invalid pattern mask.\");\n \t\t\treturn -rte_errno;\n \t\t}\n-\n-\t\tif (cfg_flex_pit)\n-\t\t\ti40e_flow_set_fdir_flex_pit(pf, layer_idx, raw_id);\n \t}\n \n \tfilter->input.pctype = pctype;\n",
    "prefixes": [
        "2/2"
    ]
}