get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 98173,
    "url": "http://patches.dpdk.org/api/patches/98173/?format=api",
    "web_url": "http://patches.dpdk.org/project/dts/patch/20210907193714.16028-4-zhiminx.huang@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": "<20210907193714.16028-4-zhiminx.huang@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dts/20210907193714.16028-4-zhiminx.huang@intel.com",
    "date": "2021-09-07T19:37:13",
    "name": "[V2,3/4] tests/kernelpf_iavf:add new case",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "9decc1a8b9b9f12674a56b45b9c70a7652b284f3",
    "submitter": {
        "id": 1685,
        "url": "http://patches.dpdk.org/api/people/1685/?format=api",
        "name": "Huang, ZhiminX",
        "email": "zhiminx.huang@intel.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dts/patch/20210907193714.16028-4-zhiminx.huang@intel.com/mbox/",
    "series": [
        {
            "id": 18735,
            "url": "http://patches.dpdk.org/api/series/18735/?format=api",
            "web_url": "http://patches.dpdk.org/project/dts/list/?series=18735",
            "date": "2021-09-07T19:37:10",
            "name": "add plan and case",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/18735/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/98173/comments/",
    "check": "pending",
    "checks": "http://patches.dpdk.org/api/patches/98173/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 9964BA0C46;\n\tTue,  7 Sep 2021 13:05:53 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 831B141175;\n\tTue,  7 Sep 2021 13:05:53 +0200 (CEST)",
            "from mga09.intel.com (mga09.intel.com [134.134.136.24])\n by mails.dpdk.org (Postfix) with ESMTP id 439DC410EC\n for <dts@dpdk.org>; Tue,  7 Sep 2021 13:05:52 +0200 (CEST)",
            "from orsmga007.jf.intel.com ([10.7.209.58])\n by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 07 Sep 2021 04:05:51 -0700",
            "from unknown (HELO localhost.localdomain) ([10.240.183.103])\n by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 07 Sep 2021 04:05:50 -0700"
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6200,9189,10099\"; a=\"220194164\"",
            "E=Sophos;i=\"5.85,274,1624345200\"; d=\"scan'208\";a=\"220194164\"",
            "E=Sophos;i=\"5.85,274,1624345200\"; d=\"scan'208\";a=\"469154253\""
        ],
        "From": "Zhimin Huang <zhiminx.huang@intel.com>",
        "To": "dts@dpdk.org",
        "Cc": "Zhimin Huang <zhiminx.huang@intel.com>",
        "Date": "Wed,  8 Sep 2021 03:37:13 +0800",
        "Message-Id": "<20210907193714.16028-4-zhiminx.huang@intel.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20210907193714.16028-1-zhiminx.huang@intel.com>",
        "References": "<20210907193714.16028-1-zhiminx.huang@intel.com>",
        "Subject": "[dts] [PATCH V2 3/4] tests/kernelpf_iavf:add new case",
        "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",
        "Sender": "\"dts\" <dts-bounces@dpdk.org>"
    },
    "content": "add some new test points in test case:\n add remove mac test.\n add check rss reta changed.\n add rss hash key test.\n\nSigned-off-by: Zhimin Huang <zhiminx.huang@intel.com>\n---\n tests/TestSuite_kernelpf_iavf.py | 42 +++++++++++++++++++++++++++++++-\n 1 file changed, 41 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/tests/TestSuite_kernelpf_iavf.py b/tests/TestSuite_kernelpf_iavf.py\nindex 5db1ec0..6a858fc 100644\n--- a/tests/TestSuite_kernelpf_iavf.py\n+++ b/tests/TestSuite_kernelpf_iavf.py\n@@ -277,6 +277,17 @@ class TestKernelpfIavf(TestCase):\n         # send packet with wrong mac\n         self.send_random_pkt(self.wrong_mac, count=100)\n         self.verify_packet_count(0)\n+        self.vm_testpmd.execute_cmd('clear port stats all')\n+        self.vm_testpmd.execute_cmd(\"mac_addr remove 0 %s\" % self.add_addr)\n+        self.send_random_pkt(self.add_addr, count=100)\n+        self.verify_packet_count(0)\n+        self.vm_testpmd.execute_cmd('clear port stats all')\n+        self.vm_testpmd.execute_cmd(\"mac_addr add 0 00:01:23:45:67:11\")\n+        self.send_random_pkt(self.add_addr, count=100)\n+        self.verify_packet_count(0)\n+        self.vm_testpmd.execute_cmd('clear port stats all')\n+        self.send_random_pkt(\"00:01:23:45:67:11\", count=100)\n+        self.verify_packet_count(100)\n \n     def get_testpmd_vf_mac(self, out):\n         result = re.search(\"([a-f0-9]{2}:){5}[a-f0-9]{2}\", out, re.IGNORECASE)\n@@ -635,8 +646,11 @@ class TestKernelpfIavf(TestCase):\n         self.vm_testpmd.start_testpmd(\"all\", \"--txq=4 --rxq=4\")\n         self.vm_testpmd.execute_cmd(\"set fwd mac\")\n         self.vm_testpmd.execute_cmd(\"set verbose 1\")\n-        for i, j in zip(list(range(64)), [0, 1, 2, 3]*16):\n+        default_rss_reta = self.vm_testpmd.execute_cmd(\"show port 0 rss reta 64 (0xffffffffffffffff)\")\n+        for i, j in zip(list(range(64)), [3, 2, 1, 0]*16):\n             self.vm_testpmd.execute_cmd(\"port config 0 rss reta (%d,%d)\" % (i, j))\n+        change_rss_reta = self.vm_testpmd.execute_cmd(\"show port 0 rss reta 64 (0xffffffffffffffff)\")\n+        self.verify(default_rss_reta != change_rss_reta, \"port config rss reta failed\")\n         for type in rss_type:\n             self.vm_testpmd.execute_cmd(\"port config all rss %s\" % type)\n             self.vm_testpmd.execute_cmd(\"start\")\n@@ -646,6 +660,32 @@ class TestKernelpfIavf(TestCase):\n             self.verify_packet_number(out)\n             self.vm_testpmd.execute_cmd(\"clear port stats all\")\n \n+    def test_vf_rss_hash_key(self):\n+        update_hash_key = '1b9d58a4b961d9cd1c56ad1621c3ad51632c16a5d16c21c3513d132c135d132c13ad1531c23a51d6ac49879c499d798a7d949c8a'\n+        self.vm_testpmd.start_testpmd(\"all\", \"--txq=4 --rxq=4\")\n+        self.vm_testpmd.execute_cmd(\"show port 0 rss-hash key\")\n+        self.vm_testpmd.execute_cmd(\"set fwd rxonly\")\n+        self.vm_testpmd.execute_cmd(\"set verbose 1\")\n+        self.vm_testpmd.execute_cmd(\"start\")\n+        pkt1_info = self.send_pkt_gethash()\n+        self.vm_testpmd.execute_cmd(\"port config 0 rss-hash-key ipv4 {}\".format(update_hash_key))\n+        out = self.vm_testpmd.execute_cmd(\"show port 0 rss-hash key\")\n+        self.verify(update_hash_key in out.lower(), \"rss hash key update failed\")\n+        pkt2_info = self.send_pkt_gethash()\n+        self.verify(pkt1_info[0][0] != pkt2_info[0][0], \"hash value should be different\")\n+\n+    def send_pkt_gethash(self, pkt=''):\n+        if pkt == '':\n+            pkt = \"sendp([Ether(dst='%s')/IP(src='1.2.3.4')/Raw(load='X'*30)], iface='%s')\" % (self.vf_mac, self.tester_intf)\n+        self.tester.scapy_append(pkt)\n+        self.tester.scapy_execute()\n+        out = self.vm_dut.get_session_output()\n+        p = re.compile(\"RSS hash=(0x\\w+) - RSS queue=(0x\\w+)\")\n+        pkt_info = p.findall(out)\n+        self.verify(pkt_info, \"received pkt have no hash\")\n+        self.logger.info(\"hash values:{}\".format(pkt_info))\n+        return pkt_info\n+\n     def verify_packet_number(self, out):\n         queue0_number = len(re.findall('port 0/queue 0', out))\n         queue1_number = len(re.findall('port 0/queue 1', out))\n",
    "prefixes": [
        "V2",
        "3/4"
    ]
}