get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 11676,
    "url": "https://patches.dpdk.org/api/patches/11676/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1458738432-3184-6-git-send-email-jingjing.wu@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": "<1458738432-3184-6-git-send-email-jingjing.wu@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1458738432-3184-6-git-send-email-jingjing.wu@intel.com",
    "date": "2016-03-23T13:07:08",
    "name": "[dpdk-dev,v6,5/9] i40e: allow filtering on more IP Header fields",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "42793052630bc108d91d11bd62e054ed416157b0",
    "submitter": {
        "id": 47,
        "url": "https://patches.dpdk.org/api/people/47/?format=api",
        "name": "Jingjing Wu",
        "email": "jingjing.wu@intel.com"
    },
    "delegate": {
        "id": 10,
        "url": "https://patches.dpdk.org/api/users/10/?format=api",
        "username": "bruce",
        "first_name": "Bruce",
        "last_name": "Richardson",
        "email": "bruce.richardson@intel.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1458738432-3184-6-git-send-email-jingjing.wu@intel.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/11676/comments/",
    "check": "pending",
    "checks": "https://patches.dpdk.org/api/patches/11676/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id 8DB972BAC;\n\tWed, 23 Mar 2016 14:07:45 +0100 (CET)",
            "from mga11.intel.com (mga11.intel.com [192.55.52.93])\n\tby dpdk.org (Postfix) with ESMTP id 9CA5C2B98\n\tfor <dev@dpdk.org>; Wed, 23 Mar 2016 14:07:43 +0100 (CET)",
            "from orsmga003.jf.intel.com ([10.7.209.27])\n\tby fmsmga102.fm.intel.com with ESMTP; 23 Mar 2016 06:07:30 -0700",
            "from shvmail01.sh.intel.com ([10.239.29.42])\n\tby orsmga003.jf.intel.com with ESMTP; 23 Mar 2016 06:07:30 -0700",
            "from shecgisg004.sh.intel.com (shecgisg004.sh.intel.com\n\t[10.239.29.89])\n\tby shvmail01.sh.intel.com with ESMTP id u2ND7RfT018300;\n\tWed, 23 Mar 2016 21:07:27 +0800",
            "from shecgisg004.sh.intel.com (localhost [127.0.0.1])\n\tby shecgisg004.sh.intel.com (8.13.6/8.13.6/SuSE Linux 0.8) with ESMTP\n\tid u2ND7PtQ003667; Wed, 23 Mar 2016 21:07:27 +0800",
            "(from wujingji@localhost)\n\tby shecgisg004.sh.intel.com (8.13.6/8.13.6/Submit) id u2ND7PxJ003663; \n\tWed, 23 Mar 2016 21:07:25 +0800"
        ],
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.24,382,1455004800\"; d=\"scan'208\";a=\"769859345\"",
        "From": "Jingjing Wu <jingjing.wu@intel.com>",
        "To": "bruce.richardson@intel.com",
        "Cc": "dev@dpdk.org, jingjing.wu@intel.com, helin.zhang@intel.com",
        "Date": "Wed, 23 Mar 2016 21:07:08 +0800",
        "Message-Id": "<1458738432-3184-6-git-send-email-jingjing.wu@intel.com>",
        "X-Mailer": "git-send-email 1.7.4.1",
        "In-Reply-To": "<1458738432-3184-1-git-send-email-jingjing.wu@intel.com>",
        "References": "<1458541132-11953-1-git-send-email-jingjing.wu@intel.com>\n\t<1458738432-3184-1-git-send-email-jingjing.wu@intel.com>",
        "Subject": "[dpdk-dev] [PATCH v6 5/9] i40e: allow filtering on more IP Header\n\tfields",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "patches and discussions about DPDK <dev.dpdk.org>",
        "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "This patch extends flow director to select more IP Header fields\nas filter input set.\n\nSigned-off-by: Jingjing Wu <jingjing.wu@intel.com>\nAcked-by: Helin Zhang <helin.zhang@intel.com>\n---\n drivers/net/i40e/i40e_ethdev.c | 69 ++++++++++++++++++++++++++++++++++--------\n drivers/net/i40e/i40e_fdir.c   | 26 +++++++++++-----\n 2 files changed, 75 insertions(+), 20 deletions(-)",
    "diff": "diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c\nindex 32249f9..ff0ee2e 100644\n--- a/drivers/net/i40e/i40e_ethdev.c\n+++ b/drivers/net/i40e/i40e_ethdev.c\n@@ -210,6 +210,8 @@\n #define I40E_REG_INSET_L3_IP4_TOS                0x0040000000000000ULL\n /* IPv4 Protocol */\n #define I40E_REG_INSET_L3_IP4_PROTO              0x0004000000000000ULL\n+/* IPv4 Time to Live */\n+#define I40E_REG_INSET_L3_IP4_TTL                0x0004000000000000ULL\n /* Source IPv6 address */\n #define I40E_REG_INSET_L3_SRC_IP6                0x0007F80000000000ULL\n /* Destination IPv6 address */\n@@ -218,6 +220,8 @@\n #define I40E_REG_INSET_L3_IP6_TC                 0x0040000000000000ULL\n /* IPv6 Next Header */\n #define I40E_REG_INSET_L3_IP6_NEXT_HDR           0x0008000000000000ULL\n+/* IPv6 Hop Limit */\n+#define I40E_REG_INSET_L3_IP6_HOP_LIMIT          0x0008000000000000ULL\n /* Source L4 port */\n #define I40E_REG_INSET_L4_SRC_PORT               0x0000000400000000ULL\n /* Destination L4 port */\n@@ -261,10 +265,12 @@\n #define I40E_TRANSLATE_INSET 0\n #define I40E_TRANSLATE_REG   1\n \n-#define I40E_INSET_IPV4_TOS_MASK      0x0009FF00UL\n-#define I40E_INSET_IPV4_PROTO_MASK    0x000DFF00UL\n-#define I40E_INSET_IPV6_TC_MASK       0x0009F00FUL\n-#define I40E_INSET_IPV6_NEXT_HDR_MASK 0x000C00FFUL\n+#define I40E_INSET_IPV4_TOS_MASK        0x0009FF00UL\n+#define I40E_INSET_IPv4_TTL_MASK        0x000D00FFUL\n+#define I40E_INSET_IPV4_PROTO_MASK      0x000DFF00UL\n+#define I40E_INSET_IPV6_TC_MASK         0x0009F00FUL\n+#define I40E_INSET_IPV6_HOP_LIMIT_MASK  0x000CFF00UL\n+#define I40E_INSET_IPV6_NEXT_HDR_MASK   0x000C00FFUL\n \n #define I40E_GL_SWT_L2TAGCTRL(_i)             (0x001C0A70 + ((_i) * 4))\n #define I40E_GL_SWT_L2TAGCTRL_ETHERTYPE_SHIFT 16\n@@ -6760,30 +6766,47 @@ i40e_get_valid_input_set(enum i40e_filter_pctype pctype,\n \t */\n \tstatic const uint64_t valid_fdir_inset_table[] = {\n \t\t[I40E_FILTER_PCTYPE_FRAG_IPV4] =\n-\t\tI40E_INSET_IPV4_SRC | I40E_INSET_IPV4_DST,\n+\t\tI40E_INSET_IPV4_SRC | I40E_INSET_IPV4_DST |\n+\t\tI40E_INSET_IPV4_TOS | I40E_INSET_IPV4_PROTO |\n+\t\tI40E_INSET_IPV4_TTL,\n \t\t[I40E_FILTER_PCTYPE_NONF_IPV4_UDP] =\n \t\tI40E_INSET_IPV4_SRC | I40E_INSET_IPV4_DST |\n+\t\tI40E_INSET_IPV4_TOS | I40E_INSET_IPV4_TTL |\n \t\tI40E_INSET_SRC_PORT | I40E_INSET_DST_PORT,\n \t\t[I40E_FILTER_PCTYPE_NONF_IPV4_TCP] =\n-\t\tI40E_INSET_IPV4_SRC | I40E_INSET_IPV4_DST,\n+\t\tI40E_INSET_IPV4_SRC | I40E_INSET_IPV4_DST |\n+\t\tI40E_INSET_IPV4_TOS | I40E_INSET_IPV4_TTL |\n+\t\tI40E_INSET_SRC_PORT | I40E_INSET_DST_PORT,\n \t\t[I40E_FILTER_PCTYPE_NONF_IPV4_SCTP] =\n \t\tI40E_INSET_IPV4_SRC | I40E_INSET_IPV4_DST |\n+\t\tI40E_INSET_IPV4_TOS | I40E_INSET_IPV4_TTL |\n \t\tI40E_INSET_SRC_PORT | I40E_INSET_DST_PORT |\n \t\tI40E_INSET_SCTP_VT,\n \t\t[I40E_FILTER_PCTYPE_NONF_IPV4_OTHER] =\n-\t\tI40E_INSET_IPV4_SRC | I40E_INSET_IPV4_DST,\n+\t\tI40E_INSET_IPV4_SRC | I40E_INSET_IPV4_DST |\n+\t\tI40E_INSET_IPV4_TOS | I40E_INSET_IPV4_PROTO |\n+\t\tI40E_INSET_IPV4_TTL,\n \t\t[I40E_FILTER_PCTYPE_FRAG_IPV6] =\n-\t\tI40E_INSET_IPV6_SRC | I40E_INSET_IPV6_DST,\n+\t\tI40E_INSET_IPV6_SRC | I40E_INSET_IPV6_DST |\n+\t\tI40E_INSET_IPV6_TC | I40E_INSET_IPV6_NEXT_HDR |\n+\t\tI40E_INSET_IPV6_HOP_LIMIT,\n \t\t[I40E_FILTER_PCTYPE_NONF_IPV6_UDP] =\n-\t\tI40E_INSET_IPV6_SRC | I40E_INSET_IPV6_DST,\n+\t\tI40E_INSET_IPV6_SRC | I40E_INSET_IPV6_DST |\n+\t\tI40E_INSET_IPV6_TC | I40E_INSET_IPV6_HOP_LIMIT |\n+\t\tI40E_INSET_SRC_PORT | I40E_INSET_DST_PORT,\n \t\t[I40E_FILTER_PCTYPE_NONF_IPV6_TCP] =\n-\t\tI40E_INSET_IPV6_SRC | I40E_INSET_IPV6_DST,\n+\t\tI40E_INSET_IPV6_SRC | I40E_INSET_IPV6_DST |\n+\t\tI40E_INSET_IPV6_TC | I40E_INSET_IPV6_HOP_LIMIT |\n+\t\tI40E_INSET_SRC_PORT | I40E_INSET_DST_PORT,\n \t\t[I40E_FILTER_PCTYPE_NONF_IPV6_SCTP] =\n \t\tI40E_INSET_IPV6_SRC | I40E_INSET_IPV6_DST |\n+\t\tI40E_INSET_IPV6_TC | I40E_INSET_IPV6_HOP_LIMIT |\n \t\tI40E_INSET_SRC_PORT | I40E_INSET_DST_PORT |\n \t\tI40E_INSET_SCTP_VT,\n \t\t[I40E_FILTER_PCTYPE_NONF_IPV6_OTHER] =\n-\t\tI40E_INSET_IPV6_SRC | I40E_INSET_IPV6_DST,\n+\t\tI40E_INSET_IPV6_SRC | I40E_INSET_IPV6_DST |\n+\t\tI40E_INSET_IPV6_TC | I40E_INSET_IPV6_NEXT_HDR |\n+\t\tI40E_INSET_IPV6_HOP_LIMIT,\n \t\t[I40E_FILTER_PCTYPE_L2_PAYLOAD] =\n \t\tI40E_INSET_LAST_ETHER_TYPE,\n \t};\n@@ -6883,11 +6906,14 @@ i40e_parse_input_set(uint64_t *inset,\n \t\t{RTE_ETH_INPUT_SET_L3_DST_IP4, I40E_INSET_IPV4_DST},\n \t\t{RTE_ETH_INPUT_SET_L3_IP4_TOS, I40E_INSET_IPV4_TOS},\n \t\t{RTE_ETH_INPUT_SET_L3_IP4_PROTO, I40E_INSET_IPV4_PROTO},\n+\t\t{RTE_ETH_INPUT_SET_L3_IP4_TTL, I40E_INSET_IPV4_TTL},\n \t\t{RTE_ETH_INPUT_SET_L3_SRC_IP6, I40E_INSET_IPV6_SRC},\n \t\t{RTE_ETH_INPUT_SET_L3_DST_IP6, I40E_INSET_IPV6_DST},\n \t\t{RTE_ETH_INPUT_SET_L3_IP6_TC, I40E_INSET_IPV6_TC},\n \t\t{RTE_ETH_INPUT_SET_L3_IP6_NEXT_HEADER,\n \t\t\tI40E_INSET_IPV6_NEXT_HDR},\n+\t\t{RTE_ETH_INPUT_SET_L3_IP6_HOP_LIMITS,\n+\t\t\tI40E_INSET_IPV6_HOP_LIMIT},\n \t\t{RTE_ETH_INPUT_SET_L4_UDP_SRC_PORT, I40E_INSET_SRC_PORT},\n \t\t{RTE_ETH_INPUT_SET_L4_TCP_SRC_PORT, I40E_INSET_SRC_PORT},\n \t\t{RTE_ETH_INPUT_SET_L4_SCTP_SRC_PORT, I40E_INSET_SRC_PORT},\n@@ -6974,10 +7000,12 @@ i40e_translate_input_set_reg(uint64_t input)\n \t\t{I40E_INSET_IPV4_DST, I40E_REG_INSET_L3_DST_IP4},\n \t\t{I40E_INSET_IPV4_TOS, I40E_REG_INSET_L3_IP4_TOS},\n \t\t{I40E_INSET_IPV4_PROTO, I40E_REG_INSET_L3_IP4_PROTO},\n+\t\t{I40E_INSET_IPV4_TTL, I40E_REG_INSET_L3_IP4_TTL},\n \t\t{I40E_INSET_IPV6_SRC, I40E_REG_INSET_L3_SRC_IP6},\n \t\t{I40E_INSET_IPV6_DST, I40E_REG_INSET_L3_DST_IP6},\n \t\t{I40E_INSET_IPV6_TC, I40E_REG_INSET_L3_IP6_TC},\n \t\t{I40E_INSET_IPV6_NEXT_HDR, I40E_REG_INSET_L3_IP6_NEXT_HDR},\n+\t\t{I40E_INSET_IPV6_HOP_LIMIT, I40E_REG_INSET_L3_IP6_HOP_LIMIT},\n \t\t{I40E_INSET_SRC_PORT, I40E_REG_INSET_L4_SRC_PORT},\n \t\t{I40E_INSET_DST_PORT, I40E_REG_INSET_L4_DST_PORT},\n \t\t{I40E_INSET_SCTP_VT, I40E_REG_INSET_L4_SCTP_VERIFICATION_TAG},\n@@ -7017,23 +7045,38 @@ static int\n i40e_generate_inset_mask_reg(uint64_t inset, uint32_t *mask, uint8_t nb_elem)\n {\n \tuint8_t i, idx = 0;\n+\tuint64_t inset_need_mask = inset;\n \n \tstatic const struct {\n \t\tuint64_t inset;\n \t\tuint32_t mask;\n \t} inset_mask_map[] = {\n \t\t{I40E_INSET_IPV4_TOS, I40E_INSET_IPV4_TOS_MASK},\n+\t\t{I40E_INSET_IPV4_PROTO | I40E_INSET_IPV4_TTL, 0},\n \t\t{I40E_INSET_IPV4_PROTO, I40E_INSET_IPV4_PROTO_MASK},\n+\t\t{I40E_INSET_IPV4_TTL, I40E_INSET_IPv4_TTL_MASK},\n \t\t{I40E_INSET_IPV6_TC, I40E_INSET_IPV6_TC_MASK},\n+\t\t{I40E_INSET_IPV6_NEXT_HDR | I40E_INSET_IPV6_HOP_LIMIT, 0},\n \t\t{I40E_INSET_IPV6_NEXT_HDR, I40E_INSET_IPV6_NEXT_HDR_MASK},\n+\t\t{I40E_INSET_IPV6_HOP_LIMIT, I40E_INSET_IPV6_HOP_LIMIT_MASK},\n \t};\n \n \tif (!inset || !mask || !nb_elem)\n \t\treturn 0;\n \n-\n \tfor (i = 0, idx = 0; i < RTE_DIM(inset_mask_map); i++) {\n-\t\tif ((inset & inset_mask_map[i].inset) == inset_mask_map[i].inset) {\n+\t\t/* Clear the inset bit, if no MASK is required,\n+\t\t * for example proto + ttl\n+\t\t */\n+\t\tif ((inset & inset_mask_map[i].inset) ==\n+\t\t     inset_mask_map[i].inset && inset_mask_map[i].mask == 0)\n+\t\t\tinset_need_mask &= ~inset_mask_map[i].inset;\n+\t\tif (!inset_need_mask)\n+\t\t\treturn 0;\n+\t}\n+\tfor (i = 0, idx = 0; i < RTE_DIM(inset_mask_map); i++) {\n+\t\tif ((inset_need_mask & inset_mask_map[i].inset) ==\n+\t\t    inset_mask_map[i].inset) {\n \t\t\tif (idx >= nb_elem) {\n \t\t\t\tPMD_DRV_LOG(ERR, \"exceed maximal number of bitmasks\");\n \t\t\t\treturn -EINVAL;\ndiff --git a/drivers/net/i40e/i40e_fdir.c b/drivers/net/i40e/i40e_fdir.c\nindex f8055e7..ebbe612 100644\n--- a/drivers/net/i40e/i40e_fdir.c\n+++ b/drivers/net/i40e/i40e_fdir.c\n@@ -66,7 +66,9 @@\n #define I40E_FDIR_IP_DEFAULT_TTL            0x40\n #define I40E_FDIR_IP_DEFAULT_VERSION_IHL    0x45\n #define I40E_FDIR_TCP_DEFAULT_DATAOFF       0x50\n-#define I40E_FDIR_IPv6_DEFAULT_VTC_FLOW     0x60300000\n+#define I40E_FDIR_IPv6_DEFAULT_VTC_FLOW     0x60000000\n+#define I40E_FDIR_IPv6_TC_OFFSET            20\n+\n #define I40E_FDIR_IPv6_DEFAULT_HOP_LIMITS   0xFF\n #define I40E_FDIR_IPv6_PAYLOAD_LEN          380\n #define I40E_FDIR_UDP_DEFAULT_LEN           400\n@@ -720,7 +722,13 @@ i40e_fdir_fill_eth_ip_head(const struct rte_eth_fdir_input *fdir_input,\n \t\tip->version_ihl = I40E_FDIR_IP_DEFAULT_VERSION_IHL;\n \t\t/* set len to by default */\n \t\tip->total_length = rte_cpu_to_be_16(I40E_FDIR_IP_DEFAULT_LEN);\n-\t\tip->time_to_live = I40E_FDIR_IP_DEFAULT_TTL;\n+\t\tip->next_proto_id = fdir_input->flow.ip4_flow.proto ?\n+\t\t\t\t\tfdir_input->flow.ip4_flow.proto :\n+\t\t\t\t\tnext_proto[fdir_input->flow_type];\n+\t\tip->time_to_live = fdir_input->flow.ip4_flow.ttl ?\n+\t\t\t\t\tfdir_input->flow.ip4_flow.ttl :\n+\t\t\t\t\tI40E_FDIR_IP_DEFAULT_TTL;\n+\t\tip->type_of_service = fdir_input->flow.ip4_flow.tos;\n \t\t/*\n \t\t * The source and destination fields in the transmitted packet\n \t\t * need to be presented in a reversed order with respect\n@@ -728,7 +736,6 @@ i40e_fdir_fill_eth_ip_head(const struct rte_eth_fdir_input *fdir_input,\n \t\t */\n \t\tip->src_addr = fdir_input->flow.ip4_flow.dst_ip;\n \t\tip->dst_addr = fdir_input->flow.ip4_flow.src_ip;\n-\t\tip->next_proto_id = next_proto[fdir_input->flow_type];\n \t\tbreak;\n \tcase RTE_ETH_FLOW_NONFRAG_IPV6_TCP:\n \tcase RTE_ETH_FLOW_NONFRAG_IPV6_UDP:\n@@ -739,11 +746,17 @@ i40e_fdir_fill_eth_ip_head(const struct rte_eth_fdir_input *fdir_input,\n \n \t\tether->ether_type = rte_cpu_to_be_16(ETHER_TYPE_IPv6);\n \t\tip6->vtc_flow =\n-\t\t\trte_cpu_to_be_32(I40E_FDIR_IPv6_DEFAULT_VTC_FLOW);\n+\t\t\trte_cpu_to_be_32(I40E_FDIR_IPv6_DEFAULT_VTC_FLOW |\n+\t\t\t\t\t (fdir_input->flow.ipv6_flow.tc <<\n+\t\t\t\t\t  I40E_FDIR_IPv6_TC_OFFSET));\n \t\tip6->payload_len =\n \t\t\trte_cpu_to_be_16(I40E_FDIR_IPv6_PAYLOAD_LEN);\n-\t\tip6->hop_limits = I40E_FDIR_IPv6_DEFAULT_HOP_LIMITS;\n-\n+\t\tip6->proto = fdir_input->flow.ipv6_flow.proto ?\n+\t\t\t\t\tfdir_input->flow.ipv6_flow.proto :\n+\t\t\t\t\tnext_proto[fdir_input->flow_type];\n+\t\tip6->hop_limits = fdir_input->flow.ipv6_flow.hop_limits ?\n+\t\t\t\t\tfdir_input->flow.ipv6_flow.hop_limits :\n+\t\t\t\t\tI40E_FDIR_IPv6_DEFAULT_HOP_LIMITS;\n \t\t/*\n \t\t * The source and destination fields in the transmitted packet\n \t\t * need to be presented in a reversed order with respect\n@@ -755,7 +768,6 @@ i40e_fdir_fill_eth_ip_head(const struct rte_eth_fdir_input *fdir_input,\n \t\trte_memcpy(&(ip6->dst_addr),\n \t\t\t   &(fdir_input->flow.ipv6_flow.src_ip),\n \t\t\t   IPV6_ADDR_LEN);\n-\t\tip6->proto = next_proto[fdir_input->flow_type];\n \t\tbreak;\n \tdefault:\n \t\tPMD_DRV_LOG(ERR, \"unknown flow type %u.\",\n",
    "prefixes": [
        "dpdk-dev",
        "v6",
        "5/9"
    ]
}