get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 110761,
    "url": "http://patches.dpdk.org/api/patches/110761/?format=api",
    "web_url": "http://patches.dpdk.org/project/dts/patch/20220506023002.895409-1-qi.fu@intel.com/",
    "project": {
        "id": 3,
        "url": "http://patches.dpdk.org/api/projects/3/?format=api",
        "name": "DTS",
        "link_name": "dts",
        "list_id": "dts.dpdk.org",
        "list_email": "dts@dpdk.org",
        "web_url": "",
        "scm_url": "git://dpdk.org/tools/dts",
        "webscm_url": "http://git.dpdk.org/tools/dts/",
        "list_archive_url": "https://inbox.dpdk.org/dts",
        "list_archive_url_format": "https://inbox.dpdk.org/dts/{}",
        "commit_url_format": ""
    },
    "msgid": "<20220506023002.895409-1-qi.fu@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dts/20220506023002.895409-1-qi.fu@intel.com",
    "date": "2022-05-06T02:30:02",
    "name": "[V3] cvl_switch_filter_test_plan:add pattern any rule test cases",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "b2a770127640c541bdcc6da23b08c118bde329c5",
    "submitter": {
        "id": 1689,
        "url": "http://patches.dpdk.org/api/people/1689/?format=api",
        "name": "Fu, Qi",
        "email": "qi.fu@intel.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dts/patch/20220506023002.895409-1-qi.fu@intel.com/mbox/",
    "series": [
        {
            "id": 22803,
            "url": "http://patches.dpdk.org/api/series/22803/?format=api",
            "web_url": "http://patches.dpdk.org/project/dts/list/?series=22803",
            "date": "2022-05-06T02:30:02",
            "name": "[V3] cvl_switch_filter_test_plan:add pattern any rule test cases",
            "version": 3,
            "mbox": "http://patches.dpdk.org/series/22803/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/110761/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/110761/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dts-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 464FCA0505;\n\tFri,  6 May 2022 04:30:14 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 3DB554280D;\n\tFri,  6 May 2022 04:30:14 +0200 (CEST)",
            "from mga07.intel.com (mga07.intel.com [134.134.136.100])\n by mails.dpdk.org (Postfix) with ESMTP id 4318F4068A\n for <dts@dpdk.org>; Fri,  6 May 2022 04:30:12 +0200 (CEST)",
            "from orsmga001.jf.intel.com ([10.7.209.18])\n by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 05 May 2022 19:30:10 -0700",
            "from dpdk-qifu-cxl.sh.intel.com ([10.67.119.95])\n by orsmga001.jf.intel.com with ESMTP; 05 May 2022 19:30:09 -0700"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1651804212; x=1683340212;\n h=from:to:cc:subject:date:message-id:mime-version:\n content-transfer-encoding;\n bh=eOG8JlW9QysSfeHz0GRSixRxuxPjhWuiN8VLl5zN2/w=;\n b=dkmoZL+OSO711TsRPmjuxI2J/txWGIGKWfIO6B+7mHSbqbkXxqR2pL1G\n FMI+khxCK47wNYrjOPqZKnSsAhp4lHGC/WMAK6fw5YhMyUc/HSY9C8Hr8\n t5oVC7j04GzoCOLL5074WlavPilRCk/Ur6SXE+wc4481f8UwhyIx7Oain\n nJ+Ts4t+WrYfmUAtPNIjkZhguibxPRAcSxDQ8/Vk0HPiE9cCAY9qqncUW\n aYPAAFWewEYcEYBwigV3Ss0PYff8EFfOcqHZwN086Et62ya4H4Lw5tdDg\n vrpIJvftDXIsl1Zvg8hpNJRbiNwryyulytxByXPsUSMmaKKZYaAsNTCkr Q==;",
        "X-IronPort-AV": [
            "E=McAfee;i=\"6400,9594,10338\"; a=\"331312193\"",
            "E=Sophos;i=\"5.91,203,1647327600\"; d=\"scan'208\";a=\"331312193\"",
            "E=Sophos;i=\"5.91,203,1647327600\"; d=\"scan'208\";a=\"600342909\""
        ],
        "X-ExtLoop1": "1",
        "From": "Qi Fu <qi.fu@intel.com>",
        "To": "dts@dpdk.org",
        "Cc": "Qi Fu <qi.fu@intel.com>",
        "Subject": "[dts][PATCH V3]cvl_switch_filter_test_plan:add pattern any rule test\n cases",
        "Date": "Fri,  6 May 2022 10:30:02 +0800",
        "Message-Id": "<20220506023002.895409-1-qi.fu@intel.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-BeenThere": "dts@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "test suite reviews and discussions <dts.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dts>,\n <mailto:dts-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dts/>",
        "List-Post": "<mailto:dts@dpdk.org>",
        "List-Help": "<mailto:dts-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dts>,\n <mailto:dts-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dts-bounces@dpdk.org"
    },
    "content": "rte_flow enable new feature to support \"drop any\" and \"steering all to queue\".\nthese pattern any rules programmed to switch filter.\nso add pattern any test cases to cvl_switch_filter_test_plan.rst.\n\nSigned-off-by: Qi Fu <qi.fu@intel.com>\n---\n test_plans/cvl_switch_filter_test_plan.rst | 171 +++++++++++++++++++++\n 1 file changed, 171 insertions(+)",
    "diff": "diff --git a/test_plans/cvl_switch_filter_test_plan.rst b/test_plans/cvl_switch_filter_test_plan.rst\nindex 6688b842..def9394d 100644\n--- a/test_plans/cvl_switch_filter_test_plan.rst\n+++ b/test_plans/cvl_switch_filter_test_plan.rst\n@@ -41,6 +41,7 @@ This document provides the plan for testing switch filter feature of CVL, includ\n \n * Enable switch filter for IPv4/IPv6 + TCP/UDP in non-pipeline/pipeline mode (comm #1 package)\n * Enable switch filter for tunnel : VXLAN / NVGRE in non-pipeline/pipeline mode (comm #1 package)\n+* Enable \"drop any\" and \"steering all to queue\" action, any pattern packets will hit rule if these rules be created\n \n In pipeline mode, a flow can be set at one specific stage by setting parameter ``priority``. Currently,\n we support two stages: priority = 0 or !0. Flows with priority 0 located at the first pipeline stage\n@@ -5596,4 +5597,174 @@ Tester::\n    Check the rule not exists in the list.\n    Send matched packets in step 4, check the action is not right.\n \n+Pattern Any Test Case\n+=====================\n \n+Test case 1: check rule is programmed to switch\n+-----------------------------------------------\n+\n+1. launch testpmd with --log-level=\"ice,7\" create a rule::\n+\n+    testpmd> flow create 0 ingress pattern any / end actions drop / end\n+    ice_flow_create(): Succeeded to create (2) flow\n+    Flow rule #0 created\n+\n+2. destroy drop any rule::\n+\n+    testpmd> flow destroy 0 rule 0\n+\n+3. create to queue rule::\n+\n+    testpmd> flow create 0 ingress pattern any / end actions queue index 4 / end\n+    ice_flow_create(): Succeeded to create (2) flow\n+    Flow rule #0 created\n+\n+Test case 2: drop any rule\n+--------------------------\n+1. create a rule::\n+\n+    testpmd> flow create 0 ingress pattern any / end actions drop / end\n+    testpmd> flow list 0\n+\n+    check the rule exists in the list.\n+\n+2. send matched packets::\n+\n+    >>> sendp([Ether()/IP(dst=\"192.168.0.1\")/UDP()/VXLAN(vni=2)/Ether()/IP(src=\"192.168.0.2\", dst=\"192.168.0.3\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\n+    >>> sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether()/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\n+    >>> sendp([Ether()/IP(src=\"192.168.0.2\", dst=\"192.168.0.3\",tos=4,frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\n+    >>> sendp([Ether()/IP(src=\"192.168.0.2\",dst=\"192.168.0.3\",tos=4,proto=0x06)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\n+    >>> sendp([Ether()/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1515\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",tc=3)/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\n+    >>> sendp([Ether()/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1515\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",tc=3)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\n+    >>> sendp([Ether(dst=\"00:11:22:33:44:55\")/PPPoED()/Raw(\"x\" *80)],iface=\"ens786f0\",count=1)\n+    >>> sendp([Ether(dst=\"00:11:22:33:44:55\", type=0x8863)/Raw(\"x\" *80)],iface=\"ens786f0\",count=1)\n+    >>> sendp([Ether(dst=\"00:11:22:33:44:55\", type=0x8864)/PPPoE(sessionid=3)/Raw(\"x\" *80)],iface=\"ens786f0\",count=1)\n+    >>> sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP()/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\n+    >>> sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+    >>> sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+    >>> sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/SCTP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+    >>> sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\", nh=51)/AH(spi=11)/Raw(\"x\"*480)], iface=\"ens786f0\")\n+    >>> sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(dport=4500)/ESP(spi=11)/Raw(\"x\"*480)], iface=\"ens786f0\")\n+    >>> sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\", nh=50)/ESP(spi=11)/Raw(\"x\"*480)], iface=\"ens786f0\")\n+    >>> sendp([Ether(dst=\"00:11:22:33:44:54\")/IP(src=\"192.168.0.25\",dst=\"192.168.0.23\")/UDP(sport=23,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+    >>> sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"ens786f0\")\n+    >>> sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/ICMP()/(\"X\"*480)],iface=\"ens786f0\")\n+    >>> sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=33)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+    check port 0 can't receive these packets.\n+\n+3. verify rules can be destroyed::\n+\n+    testpmd> flow destroy 0 rule 0\n+    testpmd> flow list 0\n+\n+   check the rule not exists in the list.\n+   send matched packets in step 2, check the packets are received by port 0.\n+\n+Test case 3: any to queue rule\n+------------------------------\n+1. create a rule::\n+\n+    testpmd> flow create 0 ingress pattern any / end actions queue index 4 / end\n+    testpmd> flow list 0\n+\n+    check the rule exists in the list.\n+\n+2. send matched packets, same with test case 2 step 2, check port 0 receive these packets by queue 4.\n+\n+3. verify rules can be destroyed::\n+\n+    testpmd> flow destroy 0 rule 0\n+    testpmd> flow list 0\n+\n+    check the rule not exists in the list.\n+    send matched packets in step 2, check the packets are received by queue 0.\n+\n+Test case 4: pattern any priority check\n+---------------------------------------\n+\n+subcase 1: non-pipeline mode\n+............................\n+\n+1. create drop any rule with priority 0, to queue rule with priority 1::\n+\n+    testpmd> flow create 0 priority 0 ingress pattern any / end actions drop / end\n+    ice_flow_create(): Succeeded to create (2) flow\n+    Flow rule #0 created\n+\n+    testpmd> flow create 0 priority 1 ingress pattern any / end actions queue index 4 / end\n+    ice_flow_create(): Succeeded to create (2) flow\n+    Flow rule #1 created\n+\n+    testpmd> flow list 0\n+    ID      Group   Prio    Attr    Rule\n+    0       0       0       i--     ANY => DROP\n+    1       0       1       i--     ANY => QUEUE\n+\n+2. send matched packets, same with test case 2 step 2, check all the packets are dropped.\n+\n+3. destroy rule 0, send matched packets, check all the packets received by queue 4.\n+\n+4. destroy rule 1, send matched packets, check all the packets received by rss.\n+\n+5. change the rule priority, repeat step 2-4, check the result is same.\n+\n+subcase 2: non-pipeline mode with other rule\n+............................................\n+\n+1. create 2 rules::\n+\n+    testpmd> flow create 0 priority 1 ingress pattern any / end actions drop / end\n+    testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is 1.1.1.2 dst is 1.1.1.3 tos is 4 / udp src is 23 dst is 25 / end actions queue index 2 / end\n+\n+2. send packet which match 2 rules, check the packet is dropped::\n+\n+    >>> sendp([Ether()/IP(src=\"1.1.1.2\",dst=\"1.1.1.3\",tos=4)/UDP(sport=23,dport=25)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\n+\n+3. destroy rule 0, repeat step 2, check the packet is received by queue 2::\n+\n+    testpmd> flow destroy 0 rule 0\n+\n+4. create 2 rules::\n+\n+    testpmd> flow create 0 priority 1 ingress pattern any / end actions queue index 4 / end\n+    testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is 1.1.1.2 dst is 1.1.1.3 tos is 4 / udp src is 23 dst is 25 / end actions queue index 2 / end\n+\n+5. send packet which match 2 rules, check the packet is received by queue 2::\n+\n+    >>> sendp([Ether()/IP(src=\"1.1.1.2\",dst=\"1.1.1.3\",tos=4)/UDP(sport=23,dport=25)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\n+\n+6. destroy rule 1, repeat step 5, check the packet is received by queue 4::\n+\n+    testpmd> flow destroy 0 rule 1\n+\n+subcase 3: pipeline mode\n+........................\n+\n+1. launch testpmd with pipeline mode, create rule, check the rule can be created::\n+\n+    testpmd> flow create 0 priority 0 ingress pattern any / end actions drop / end\n+\n+2. destroy the rule::\n+\n+    testpmd> flow flush 0\n+\n+3. create rule, check the rule can be created::\n+\n+    testpmd> flow create 0 priority 0 ingress pattern any / end actions queue index 4 / end\n+\n+4. destroy the rule::\n+\n+    testpmd> flow flush 0\n+\n+5. create rule, check the rule can not be created::\n+\n+    testpmd> flow create 0 priority 1 ingress pattern any / end actions drop / end\n+\n+6. destroy the rule::\n+\n+    testpmd> flow flush 0\n+\n+7. create rule, check the rule can not be created::\n+\n+    testpmd> flow create 0 priority 1 ingress pattern any / end actions queue index 4 / end\n",
    "prefixes": [
        "V3"
    ]
}