Show a patch.

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

{
    "id": 73497,
    "url": "https://patches.dpdk.org/api/patches/73497/",
    "web_url": "https://patches.dpdk.org/patch/73497/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/",
        "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"
    },
    "msgid": "<20200708042613.249847-2-junfeng.guo@intel.com>",
    "date": "2020-07-08T04:26:12",
    "name": "[v4,1/2] net/ice: add FD support for GTPU with outer IPv4 and IPv6",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "19855ef4db9d79d8c0da4d297eafed9f830f5bef",
    "submitter": {
        "id": 1785,
        "url": "https://patches.dpdk.org/api/people/1785/",
        "name": "Guo, Junfeng",
        "email": "junfeng.guo@intel.com"
    },
    "delegate": {
        "id": 1540,
        "url": "https://patches.dpdk.org/api/users/1540/",
        "username": "qzhan15",
        "first_name": "Qi",
        "last_name": "Zhang",
        "email": "qi.z.zhang@intel.com"
    },
    "mbox": "https://patches.dpdk.org/patch/73497/mbox/",
    "series": [
        {
            "id": 10873,
            "url": "https://patches.dpdk.org/api/series/10873/",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=10873",
            "date": "2020-07-08T04:26:11",
            "name": "add FD support for GTPU with outer IP on PF and VF",
            "version": 4,
            "mbox": "https://patches.dpdk.org/series/10873/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/73497/comments/",
    "check": "fail",
    "checks": "https://patches.dpdk.org/api/patches/73497/checks/",
    "tags": {},
    "headers": {
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "Return-Path": "<dev-bounces@dpdk.org>",
        "IronPort-SDR": [
            "\n q7VKzC4ZAOq51aETxGACvWKHyp8COuLZBzAR4kCwaWab0vzM5ETjhH6gGJXbHuSH0lV7e2gBe+\n tQwhWYJpViRQ==",
            "\n qQ0g23vFGXiUcXQPl6UMueegXbBRNGJlYGMdX2tCAzYq4v8ESrqwq4ZHLKpQruNXEx/uhMrJ5A\n dAAQcYPqQOuA=="
        ],
        "X-Mailer": "git-send-email 2.25.1",
        "To": "qi.z.zhang@intel.com,\n\txiaolong.ye@intel.com,\n\tbeilei.xing@intel.com",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Received": [
            "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 613F8A00BE;\n\tWed,  8 Jul 2020 06:28:06 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 988821DE32;\n\tWed,  8 Jul 2020 06:28:00 +0200 (CEST)",
            "from mga03.intel.com (mga03.intel.com [134.134.136.65])\n by dpdk.org (Postfix) with ESMTP id 359DC1DE23\n for <dev@dpdk.org>; Wed,  8 Jul 2020 06:27:59 +0200 (CEST)",
            "from orsmga008.jf.intel.com ([10.7.209.65])\n by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 07 Jul 2020 21:27:58 -0700",
            "from dpdk-junfengguo-v3.sh.intel.com ([10.67.119.146])\n by orsmga008.jf.intel.com with ESMTP; 07 Jul 2020 21:27:55 -0700"
        ],
        "X-BeenThere": "dev@dpdk.org",
        "X-Amp-File-Uploaded": "False",
        "Subject": "[dpdk-dev] [PATCH v4 1/2] net/ice: add FD support for GTPU with\n\touter IPv4 and IPv6",
        "Cc": "dev@dpdk.org, jia.guo@intel.com, junfeng.guo@intel.com, simei.su@intel.com",
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "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-Post": "<mailto:dev@dpdk.org>",
        "In-Reply-To": "<20200708042613.249847-1-junfeng.guo@intel.com>",
        "Precedence": "list",
        "X-ExtLoop1": "1",
        "From": "Junfeng Guo <junfeng.guo@intel.com>",
        "Content-Transfer-Encoding": "8bit",
        "MIME-Version": "1.0",
        "X-IronPort-AV": [
            "E=McAfee;i=\"6000,8403,9675\"; a=\"147743868\"",
            "E=Sophos;i=\"5.75,326,1589266800\"; d=\"scan'208\";a=\"147743868\"",
            "E=Sophos;i=\"5.75,326,1589266800\"; d=\"scan'208\";a=\"314524759\""
        ],
        "References": "<20200617024355.44220-1-junfeng.guo@intel.com>\n <20200708042613.249847-1-junfeng.guo@intel.com>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>",
        "Errors-To": "dev-bounces@dpdk.org",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "Message-Id": "<20200708042613.249847-2-junfeng.guo@intel.com>",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Date": "Wed,  8 Jul 2020 12:26:12 +0800",
        "X-Mailman-Version": "2.1.15"
    },
    "content": "Add FDir support for MAC_IPV4_GTPU and MAC_IPV6_GTPU type with outer\nIPv4/IPv6 address, teid and qfi fields matching. Note that outer IPv4\nand IPv6 matching fields here include both SRC & DST of both IPv4 &\nIPv6.\n\nSigned-off-by: Junfeng Guo <junfeng.guo@intel.com>\n---\n drivers/net/ice/ice_fdir_filter.c  | 53 ++++++++++++++++++++++++++----\n drivers/net/ice/ice_generic_flow.c | 33 ++++++++++++++++---\n drivers/net/ice/ice_generic_flow.h | 12 +++++--\n 3 files changed, 85 insertions(+), 13 deletions(-)",
    "diff": "diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c\nindex 3bee4a103..710995749 100644\n--- a/drivers/net/ice/ice_fdir_filter.c\n+++ b/drivers/net/ice/ice_fdir_filter.c\n@@ -70,13 +70,20 @@\n \tICE_FDIR_INSET_VXLAN_IPV4 | \\\n \tICE_INSET_TUN_SCTP_SRC_PORT | ICE_INSET_TUN_SCTP_DST_PORT)\n \n-#define ICE_FDIR_INSET_GTPU (\\\n+#define ICE_FDIR_INSET_IPV4_GTPU (\\\n \tICE_INSET_IPV4_SRC | ICE_INSET_IPV4_DST | ICE_INSET_GTPU_TEID)\n \n-#define ICE_FDIR_INSET_GTPU_EH (\\\n+#define ICE_FDIR_INSET_IPV4_GTPU_EH (\\\n \tICE_INSET_IPV4_SRC | ICE_INSET_IPV4_DST | \\\n \tICE_INSET_GTPU_TEID | ICE_INSET_GTPU_QFI)\n \n+#define ICE_FDIR_INSET_IPV6_GTPU (\\\n+\tICE_INSET_IPV6_SRC | ICE_INSET_IPV6_DST | ICE_INSET_GTPU_TEID)\n+\n+#define ICE_FDIR_INSET_IPV6_GTPU_EH (\\\n+\tICE_INSET_IPV6_SRC | ICE_INSET_IPV6_DST | \\\n+\tICE_INSET_GTPU_TEID | ICE_INSET_GTPU_QFI)\n+\n static struct ice_pattern_match_item ice_fdir_pattern_os[] = {\n \t{pattern_eth_ipv4,             ICE_FDIR_INSET_ETH_IPV4,              ICE_INSET_NONE},\n \t{pattern_eth_ipv4_udp,         ICE_FDIR_INSET_ETH_IPV4_UDP,          ICE_INSET_NONE},\n@@ -130,8 +137,10 @@ static struct ice_pattern_match_item ice_fdir_pattern_comms[] = {\n \t\t\t\t       ICE_FDIR_INSET_VXLAN_IPV4_TCP,        ICE_INSET_NONE},\n \t{pattern_eth_ipv4_udp_vxlan_eth_ipv4_sctp,\n \t\t\t\t       ICE_FDIR_INSET_VXLAN_IPV4_SCTP,       ICE_INSET_NONE},\n-\t{pattern_eth_ipv4_gtpu,\t       ICE_FDIR_INSET_GTPU,                  ICE_INSET_NONE},\n-\t{pattern_eth_ipv4_gtpu_eh,     ICE_FDIR_INSET_GTPU_EH,               ICE_INSET_NONE},\n+\t{pattern_eth_ipv4_gtpu,\t       ICE_FDIR_INSET_IPV4_GTPU,             ICE_INSET_NONE},\n+\t{pattern_eth_ipv4_gtpu_eh,     ICE_FDIR_INSET_IPV4_GTPU_EH,          ICE_INSET_NONE},\n+\t{pattern_eth_ipv6_gtpu,\t       ICE_FDIR_INSET_IPV6_GTPU,             ICE_INSET_NONE},\n+\t{pattern_eth_ipv6_gtpu_eh,     ICE_FDIR_INSET_IPV6_GTPU_EH,          ICE_INSET_NONE},\n };\n \n static struct ice_flow_parser ice_fdir_parser_os;\n@@ -782,6 +791,21 @@ ice_fdir_cross_prof_conflict(struct ice_pf *pf,\n \t\t\t(pf, cflct_ptype, is_tunnel))\n \t\t\tgoto err;\n \t\tbreak;\n+\t/* IPv6 GTPU */\n+\tcase ICE_FLTR_PTYPE_NONF_IPV6_GTPU_IPV6_OTHER:\n+\t\tcflct_ptype = ICE_FLTR_PTYPE_NONF_IPV6_GTPU_IPV6_OTHER;\n+\t\tif (!ice_fdir_prof_resolve_conflict\n+\t\t\t(pf, cflct_ptype, is_tunnel))\n+\t\t\tgoto err;\n+\t\tcflct_ptype = ICE_FLTR_PTYPE_NONF_IPV6_GTPU_IPV6_OTHER;\n+\t\tif (!ice_fdir_prof_resolve_conflict\n+\t\t\t(pf, cflct_ptype, is_tunnel))\n+\t\t\tgoto err;\n+\t\tcflct_ptype = ICE_FLTR_PTYPE_NONF_IPV6_GTPU_IPV6_OTHER;\n+\t\tif (!ice_fdir_prof_resolve_conflict\n+\t\t\t(pf, cflct_ptype, is_tunnel))\n+\t\t\tgoto err;\n+\t\tbreak;\n \t/* IPv6 */\n \tcase ICE_FLTR_PTYPE_NONF_IPV6_UDP:\n \tcase ICE_FLTR_PTYPE_NONF_IPV6_TCP:\n@@ -1013,6 +1037,19 @@ ice_fdir_input_set_conf(struct ice_pf *pf, enum ice_fltr_ptype flow,\n \t\telse\n \t\t\tPMD_DRV_LOG(ERR, \"not supported tunnel type.\");\n \t\tbreak;\n+\tcase ICE_FLTR_PTYPE_NONF_IPV6_GTPU_IPV6_OTHER:\n+\t\tif (ttype == ICE_FDIR_TUNNEL_TYPE_GTPU)\n+\t\t\tICE_FLOW_SET_HDRS(seg, ICE_FLOW_SEG_HDR_GTPU_IP |\n+\t\t\t\t\t  ICE_FLOW_SEG_HDR_IPV6 |\n+\t\t\t\t\t  ICE_FLOW_SEG_HDR_IPV_OTHER);\n+\t\telse if (ttype == ICE_FDIR_TUNNEL_TYPE_GTPU_EH)\n+\t\t\tICE_FLOW_SET_HDRS(seg, ICE_FLOW_SEG_HDR_GTPU_EH |\n+\t\t\t\t\t  ICE_FLOW_SEG_HDR_GTPU_IP |\n+\t\t\t\t\t  ICE_FLOW_SEG_HDR_IPV6 |\n+\t\t\t\t\t  ICE_FLOW_SEG_HDR_IPV_OTHER);\n+\t\telse\n+\t\t\tPMD_DRV_LOG(ERR, \"not supported tunnel type.\");\n+\t\tbreak;\n \tcase ICE_FLTR_PTYPE_NON_IP_L2:\n \t\tICE_FLOW_SET_HDRS(seg, ICE_FLOW_SEG_HDR_ETH_NON_IP);\n \t\tbreak;\n@@ -1970,8 +2007,12 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,\n \t}\n \n \tif (tunnel_type == ICE_FDIR_TUNNEL_TYPE_GTPU ||\n-\t    tunnel_type == ICE_FDIR_TUNNEL_TYPE_GTPU_EH)\n-\t\tflow_type = ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV4_OTHER;\n+\t    tunnel_type == ICE_FDIR_TUNNEL_TYPE_GTPU_EH) {\n+\t\tif (flow_type == ICE_FLTR_PTYPE_NONF_IPV4_UDP)\n+\t\t\tflow_type = ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV4_OTHER;\n+\t\telse\n+\t\t\tflow_type = ICE_FLTR_PTYPE_NONF_IPV6_GTPU_IPV6_OTHER;\n+\t}\n \n \tfilter->tunnel_type = tunnel_type;\n \tfilter->input.flow_type = flow_type;\ndiff --git a/drivers/net/ice/ice_generic_flow.c b/drivers/net/ice/ice_generic_flow.c\nindex ad103d0e8..9f83a428d 100644\n--- a/drivers/net/ice/ice_generic_flow.c\n+++ b/drivers/net/ice/ice_generic_flow.c\n@@ -1033,7 +1033,7 @@ enum rte_flow_item_type pattern_eth_ipv6_nvgre_eth_ipv6_icmp6[] = {\n \tRTE_FLOW_ITEM_TYPE_END,\n };\n \n-/* GTPU */\n+/*IPv4 GTPU (EH) */\n enum rte_flow_item_type pattern_eth_ipv4_gtpu[] = {\n \tRTE_FLOW_ITEM_TYPE_ETH,\n \tRTE_FLOW_ITEM_TYPE_IPV4,\n@@ -1041,22 +1041,45 @@ enum rte_flow_item_type pattern_eth_ipv4_gtpu[] = {\n \tRTE_FLOW_ITEM_TYPE_GTPU,\n \tRTE_FLOW_ITEM_TYPE_END,\n };\n-enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv4[] = {\n+\n+enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh[] = {\n \tRTE_FLOW_ITEM_TYPE_ETH,\n \tRTE_FLOW_ITEM_TYPE_IPV4,\n \tRTE_FLOW_ITEM_TYPE_UDP,\n \tRTE_FLOW_ITEM_TYPE_GTPU,\n-\tRTE_FLOW_ITEM_TYPE_IPV4,\n+\tRTE_FLOW_ITEM_TYPE_GTP_PSC,\n \tRTE_FLOW_ITEM_TYPE_END,\n };\n-enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh[] = {\n+\n+/*IPv6 GTPU (EH) */\n+enum rte_flow_item_type pattern_eth_ipv6_gtpu[] = {\n \tRTE_FLOW_ITEM_TYPE_ETH,\n-\tRTE_FLOW_ITEM_TYPE_IPV4,\n+\tRTE_FLOW_ITEM_TYPE_IPV6,\n+\tRTE_FLOW_ITEM_TYPE_UDP,\n+\tRTE_FLOW_ITEM_TYPE_GTPU,\n+\tRTE_FLOW_ITEM_TYPE_END,\n+};\n+\n+enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh[] = {\n+\tRTE_FLOW_ITEM_TYPE_ETH,\n+\tRTE_FLOW_ITEM_TYPE_IPV6,\n \tRTE_FLOW_ITEM_TYPE_UDP,\n \tRTE_FLOW_ITEM_TYPE_GTPU,\n \tRTE_FLOW_ITEM_TYPE_GTP_PSC,\n \tRTE_FLOW_ITEM_TYPE_END,\n };\n+\n+/*IPv4 GTPU IPv4 */\n+enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv4[] = {\n+\tRTE_FLOW_ITEM_TYPE_ETH,\n+\tRTE_FLOW_ITEM_TYPE_IPV4,\n+\tRTE_FLOW_ITEM_TYPE_UDP,\n+\tRTE_FLOW_ITEM_TYPE_GTPU,\n+\tRTE_FLOW_ITEM_TYPE_IPV4,\n+\tRTE_FLOW_ITEM_TYPE_END,\n+};\n+\n+/*IPv4 GTPU EH IPv4 */\n enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4[] = {\n \tRTE_FLOW_ITEM_TYPE_ETH,\n \tRTE_FLOW_ITEM_TYPE_IPV4,\ndiff --git a/drivers/net/ice/ice_generic_flow.h b/drivers/net/ice/ice_generic_flow.h\nindex 492a48cd9..3ce9a1f27 100644\n--- a/drivers/net/ice/ice_generic_flow.h\n+++ b/drivers/net/ice/ice_generic_flow.h\n@@ -361,10 +361,18 @@ extern enum rte_flow_item_type pattern_eth_ipv6_nvgre_eth_ipv6_udp[];\n extern enum rte_flow_item_type pattern_eth_ipv6_nvgre_eth_ipv6_sctp[];\n extern enum rte_flow_item_type pattern_eth_ipv6_nvgre_eth_ipv6_icmp6[];\n \n-/* GTPU */\n+/* IPv4 GTPU (EH) */\n extern enum rte_flow_item_type pattern_eth_ipv4_gtpu[];\n-extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv4[];\n extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh[];\n+\n+/* IPv6 GTPU (EH) */\n+extern enum rte_flow_item_type pattern_eth_ipv6_gtpu[];\n+extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh[];\n+\n+/* IPv4 GTPU IPv4 */\n+extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv4[];\n+\n+/* IPv4 GTPU EH IPv4 */\n extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4[];\n extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_udp[];\n extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_tcp[];\n",
    "prefixes": [
        "v4",
        "1/2"
    ]
}