get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 80839,
    "url": "http://patchwork.dpdk.org/api/patches/80839/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dts/patch/20201015160141.804553-1-yux.jiang@intel.com/",
    "project": {
        "id": 3,
        "url": "http://patchwork.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": "<20201015160141.804553-1-yux.jiang@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dts/20201015160141.804553-1-yux.jiang@intel.com",
    "date": "2020-10-15T16:01:41",
    "name": "[V1] tests/TestSuite_virtio_event_idx_interrupt: add 2 cbdma TCs",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "cd2cae498d57864cbceb642acd6fec7e1510cc73",
    "submitter": {
        "id": 1709,
        "url": "http://patchwork.dpdk.org/api/people/1709/?format=api",
        "name": "Yu Jiang",
        "email": "yux.jiang@intel.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.dpdk.org/project/dts/patch/20201015160141.804553-1-yux.jiang@intel.com/mbox/",
    "series": [
        {
            "id": 12990,
            "url": "http://patchwork.dpdk.org/api/series/12990/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dts/list/?series=12990",
            "date": "2020-10-15T16:01:41",
            "name": "[V1] tests/TestSuite_virtio_event_idx_interrupt: add 2 cbdma TCs",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/12990/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/80839/comments/",
    "check": "pending",
    "checks": "http://patchwork.dpdk.org/api/patches/80839/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 dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 61C1CA04DB;\n\tThu, 15 Oct 2020 10:02:55 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 559921DCBD;\n\tThu, 15 Oct 2020 10:02:54 +0200 (CEST)",
            "from mga06.intel.com (mga06.intel.com [134.134.136.31])\n by dpdk.org (Postfix) with ESMTP id 9B5751DC9B\n for <dts@dpdk.org>; Thu, 15 Oct 2020 10:02:51 +0200 (CEST)",
            "from orsmga005.jf.intel.com ([10.7.209.41])\n by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 15 Oct 2020 01:02:50 -0700",
            "from unknown (HELO localhost.localdomain) ([10.240.183.77])\n by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 15 Oct 2020 01:02:49 -0700"
        ],
        "IronPort-SDR": [
            "\n f9Vn1TgcrlfX5vb+uwrDiZnAun6jl3BaERj/Wrc232eWxkGVA9iDH0GDvDs2VSiSDLCB+HAR5W\n zuCOP84Ev5/g==",
            "\n hax9IeeHBCXbFRLvJ8bVfWhVTylJ9Y+hDMelmPPpWybZOx4XbZy+6nDFwN9HR3NsuoYLqnt1as\n XRz8VRY5vSEQ=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6000,8403,9774\"; a=\"227937909\"",
            "E=Sophos;i=\"5.77,378,1596524400\"; d=\"scan'208\";a=\"227937909\"",
            "E=Sophos;i=\"5.77,378,1596524400\"; d=\"scan'208\";a=\"531155700\""
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "From": "JiangYuX <yux.jiang@intel.com>",
        "To": "dts@dpdk.org",
        "Cc": "JiangYu <yux.jiang@intel.com>",
        "Date": "Thu, 15 Oct 2020 16:01:41 +0000",
        "Message-Id": "<20201015160141.804553-1-yux.jiang@intel.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dts] [PATCH V1] tests/TestSuite_virtio_event_idx_interrupt: add 2\n\tcbdma TCs",
        "X-BeenThere": "dts@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "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": "From: JiangYu <yux.jiang@intel.com>\n\nAdd 2 cbdma TCs\n\nSigned-off-by: JiangYu <yux.jiang@intel.com>\n---\n tests/TestSuite_virtio_event_idx_interrupt.py | 85 ++++++++++++++++++++++++---\n 1 file changed, 78 insertions(+), 7 deletions(-)",
    "diff": "diff --git a/tests/TestSuite_virtio_event_idx_interrupt.py b/tests/TestSuite_virtio_event_idx_interrupt.py\nindex 34d6cb7..03d917b 100644\n--- a/tests/TestSuite_virtio_event_idx_interrupt.py\n+++ b/tests/TestSuite_virtio_event_idx_interrupt.py\n@@ -68,6 +68,8 @@ class TestVirtioIdxInterrupt(TestCase):\n         # create an instance to set stream field setting\n         self.pktgen_helper = PacketGeneratorHelper()\n         self.app_testpmd_path = self.dut.apps_name['test-pmd']\n+        self.testpmd_name = self.app_testpmd_path.split(\"/\")[-1]\n+        self.device_str = None\n \n     def set_up(self):\n         \"\"\"\n@@ -75,7 +77,7 @@ class TestVirtioIdxInterrupt(TestCase):\n         \"\"\"\n         # Clean the execution ENV\n         self.flag = None\n-        self.dut.send_expect(\"killall -s INT testpmd\", \"#\")\n+        self.dut.send_expect(\"killall -s INT %s\" % self.testpmd_name, \"#\")\n         self.dut.send_expect(\"killall -s INT qemu-system-x86_64\", \"#\")\n         self.dut.send_expect(\"rm -rf %s/vhost-net*\" % self.base_dir, \"#\")\n         self.vhost = self.dut.new_session(suite=\"vhost\")\n@@ -87,28 +89,66 @@ class TestVirtioIdxInterrupt(TestCase):\n                     self.running_case)\n         self.core_list = self.dut.get_core_list(self.core_config)\n \n-    def start_vhost_testpmd(self):\n+    def get_cbdma_ports_info_and_bind_to_dpdk(self, cbdma_num):\n+        \"\"\"\n+        get all cbdma ports\n+        \"\"\"\n+        self.dut.setup_modules(self.target, \"igb_uio\",\"None\")\n+        out = self.dut.send_expect('./usertools/dpdk-devbind.py --status-dev misc', '# ', 30)\n+        cbdma_dev_infos = re.findall('\\s*(0000:\\d+:\\d+.\\d+)', out)\n+        self.verify(len(cbdma_dev_infos) >= cbdma_num, 'There no enough cbdma device to run this suite')\n+\n+        used_cbdma = cbdma_dev_infos[0:cbdma_num]\n+        dmas_info = ''\n+        for dmas in used_cbdma:\n+            number = used_cbdma.index(dmas)\n+            dmas = 'txq{}@{};'.format(number, dmas)\n+            dmas_info += dmas\n+        self.dmas_info = dmas_info[:-1]\n+        self.device_str = ' '.join(used_cbdma)\n+        self.dut.send_expect('./usertools/dpdk-devbind.py --force --bind=%s %s %s' %\n+                             (\"igb_uio\", self.device_str, self.pf_pci), '# ', 60)\n+\n+    def bind_cbdma_device_to_kernel(self):\n+        if self.device_str is not None:\n+            self.dut.send_expect('modprobe ioatdma', '# ')\n+            self.dut.send_expect('./usertools/dpdk-devbind.py -u %s' % self.device_str, '# ', 30)\n+            self.dut.send_expect('./usertools/dpdk-devbind.py --force --bind=ioatdma  %s' % self.device_str, '# ', 60)\n+\n+    def start_vhost_testpmd(self, dmas=None, mode=False):\n         \"\"\"\n         start the testpmd on vhost side\n         \"\"\"\n         # get the core mask depend on the nb_cores number\n         self.get_core_mask()\n         testcmd = self.app_testpmd_path + \" \"\n-        vdev = ['net_vhost,iface=%s/vhost-net,queues=%d ' % (self.base_dir, self.queues)]\n-        eal_params = self.dut.create_eal_parameters(cores=self.core_list, prefix='vhost', ports=[self.pf_pci], vdevs=vdev)\n+        if dmas:\n+            device_str = self.device_str.split(\" \")\n+            device_str.append(self.pf_pci)\n+            if mode:\n+                vdev = [\"'net_vhost,iface=%s/vhost-net,queues=%d,%s=1,dmas=[%s],dmathr=64'\" % (self.base_dir, self.queues, mode, dmas)]\n+            else:\n+                vdev = ['net_vhost,iface=%s/vhost-net,queues=%d,dmas=[%s]' % (self.base_dir, self.queues, dmas)]\n+            eal_params = self.dut.create_eal_parameters(cores=self.core_list, prefix='vhost', vdevs=vdev)\n+        else:\n+            vdev = ['net_vhost,iface=%s/vhost-net,queues=%d ' % (self.base_dir, self.queues)]\n+            eal_params = self.dut.create_eal_parameters(cores=self.core_list, prefix='vhost', ports=[self.pf_pci], vdevs=vdev)\n         para = \" -- -i --nb-cores=%d --txd=1024 --rxd=1024 --rxq=%d --txq=%d\" % (self.nb_cores, self.queues, self.queues)\n         command_line = testcmd + eal_params + para\n         self.vhost.send_expect(command_line, \"testpmd> \", 30)\n         self.vhost.send_expect(\"start\", \"testpmd> \", 30)\n \n-    def start_vms(self, packed=False):\n+    def start_vms(self, packed=False, mode=False):\n         \"\"\"\n         start qemus\n         \"\"\"\n         self.vm = VM(self.dut, 'vm0', 'vhost_sample')\n         vm_params = {}\n         vm_params['driver'] = 'vhost-user'\n-        vm_params['opt_path'] = '%s/vhost-net' % self.base_dir\n+        if mode:\n+            vm_params['opt_path'] = '%s/vhost-net,%s' % (self.base_dir, mode)\n+        else:\n+            vm_params['opt_path'] = '%s/vhost-net' % self.base_dir\n         vm_params['opt_mac'] = \"00:11:22:33:44:55\"\n         opt_args = \"mrg_rxbuf=on,csum=on,gso=on,guest_csum=on,host_tso4=on,guest_tso4=on\"\n         if self.queues > 1:\n@@ -279,13 +319,44 @@ class TestVirtioIdxInterrupt(TestCase):\n         self.check_each_queue_has_packets_info_on_vhost()\n         self.stop_all_apps()\n \n+    def test_perf_split_ring_virito_pci_driver_reload_with_cbdma_enabled(self):\n+        \"\"\"\n+        Test Case 7: Split ring virtio-pci driver reload test with CBDMA enabled\n+        \"\"\"\n+        self.queues = 1\n+        self.nb_cores = 1\n+        used_cbdma_num = 1\n+        self.get_cbdma_ports_info_and_bind_to_dpdk(used_cbdma_num)\n+        self.start_vhost_testpmd(dmas=self.dmas_info)\n+        self.start_vms()\n+        self.config_virito_net_in_vm()\n+        res = self.check_packets_after_reload_virtio_device(reload_times=30)\n+        self.verify(res is True, \"Should increase the wait times of ixia\")\n+        self.stop_all_apps()\n+\n+    def test_perf_wake_up_split_ring_virtio_net_cores_with_event_idx_interrupt_mode_and_cbdma_enabled_16queue(self):\n+        \"\"\"\n+        Test Case 8: Wake up split ring virtio-net cores with event idx interrupt mode and cbdma enabled 16 queues test\n+        \"\"\"\n+        self.queues = 16\n+        self.nb_cores = 16\n+        used_cbdma_num = 16\n+        self.get_cbdma_ports_info_and_bind_to_dpdk(used_cbdma_num)\n+        self.start_vhost_testpmd(dmas=self.dmas_info, mode='client')\n+        self.start_vms(packed=False, mode='server')\n+        self.config_virito_net_in_vm()\n+        self.start_to_send_packets(delay=15)\n+        self.check_each_queue_has_packets_info_on_vhost()\n+        self.stop_all_apps()\n+\n     def tear_down(self):\n         \"\"\"\n         Run after each test case.\n         \"\"\"\n         self.dut.close_session(self.vhost)\n-        self.dut.send_expect(\"killall -s INT testpmd\", \"#\")\n+        self.dut.send_expect(\"killall -s INT %s\" % self.testpmd_name, \"#\")\n         self.dut.send_expect(\"killall -s INT qemu-system-x86_64\", \"#\")\n+        self.bind_cbdma_device_to_kernel()\n \n     def tear_down_all(self):\n         \"\"\"\n",
    "prefixes": [
        "V1"
    ]
}