get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 81432,
    "url": "http://patches.dpdk.org/api/patches/81432/?format=api",
    "web_url": "http://patches.dpdk.org/project/dts/patch/20201020152447.1375879-1-yux.jiang@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": "<20201020152447.1375879-1-yux.jiang@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dts/20201020152447.1375879-1-yux.jiang@intel.com",
    "date": "2020-10-20T15:24:47",
    "name": "[V1] tests/TestSuite_vhost_virtio_user_interrupt: add 2 cbdma TCs",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "5f1a1d9e281c210fcfc85a81a716802d8f721676",
    "submitter": {
        "id": 1709,
        "url": "http://patches.dpdk.org/api/people/1709/?format=api",
        "name": "Yu Jiang",
        "email": "yux.jiang@intel.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dts/patch/20201020152447.1375879-1-yux.jiang@intel.com/mbox/",
    "series": [
        {
            "id": 13127,
            "url": "http://patches.dpdk.org/api/series/13127/?format=api",
            "web_url": "http://patches.dpdk.org/project/dts/list/?series=13127",
            "date": "2020-10-20T15:24:47",
            "name": "[V1] tests/TestSuite_vhost_virtio_user_interrupt: add 2 cbdma TCs",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/13127/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/81432/comments/",
    "check": "pending",
    "checks": "http://patches.dpdk.org/api/patches/81432/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 C7392A04DC;\n\tTue, 20 Oct 2020 09:24:24 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 86FFEBAEC;\n\tTue, 20 Oct 2020 09:24:23 +0200 (CEST)",
            "from mga06.intel.com (mga06.intel.com [134.134.136.31])\n by dpdk.org (Postfix) with ESMTP id A5713BAEC\n for <dts@dpdk.org>; Tue, 20 Oct 2020 09:24:21 +0200 (CEST)",
            "from orsmga004.jf.intel.com ([10.7.209.38])\n by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 20 Oct 2020 00:24:18 -0700",
            "from unknown (HELO localhost.localdomain) ([10.240.183.77])\n by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 20 Oct 2020 00:24:16 -0700"
        ],
        "IronPort-SDR": [
            "\n 0LiDNc5eJr2+HYmkWHBw7oNgp5rpo0I66McN4n6GBOPcKtthX+vauG/qheyZg4UgtBGJCpRuAw\n mwXeCn7VIbxg==",
            "\n vgRbAjwjxpCVkY+je939OmHxe6ggl8i2yTrrrQRd2UuOghW1u1QgqnQWPmqafvMOtEzxp5yPLe\n eaGgeFejvvHg=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6000,8403,9779\"; a=\"228800790\"",
            "E=Sophos;i=\"5.77,396,1596524400\"; d=\"scan'208\";a=\"228800790\"",
            "E=Sophos;i=\"5.77,396,1596524400\"; d=\"scan'208\";a=\"465835850\""
        ],
        "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": "Tue, 20 Oct 2020 15:24:47 +0000",
        "Message-Id": "<20201020152447.1375879-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_vhost_virtio_user_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 scripts\n\nSigned-off-by: JiangYu <yux.jiang@intel.com>\n---\n tests/TestSuite_vhost_virtio_user_interrupt.py | 92 +++++++++++++++++++++++++-\n 1 file changed, 89 insertions(+), 3 deletions(-)",
    "diff": "diff --git a/tests/TestSuite_vhost_virtio_user_interrupt.py b/tests/TestSuite_vhost_virtio_user_interrupt.py\nindex ae75da5..104998f 100644\n--- a/tests/TestSuite_vhost_virtio_user_interrupt.py\n+++ b/tests/TestSuite_vhost_virtio_user_interrupt.py\n@@ -58,6 +58,10 @@ class TestVirtioUserInterrupt(TestCase):\n         self.core_mask_l3fwd = utils.create_mask(self.core_list_l3fwd)\n         self.core_mask_virtio = self.core_mask_l3fwd\n         self.pci_info = self.dut.ports_info[0]['pci']\n+        self.ports_socket = self.dut.get_numa_id(self.dut_ports[0])\n+        self.cbdma_dev_infos = []\n+        self.dmas_info = None\n+        self.device_str = None\n \n         self.prepare_l3fwd_power()\n         self.tx_port = self.tester.get_local_port(self.dut_ports[0])\n@@ -116,7 +120,7 @@ class TestVirtioUserInterrupt(TestCase):\n         else:\n             self.logger.info(\"Launch l3fwd-power sample finished\")\n \n-    def start_vhost_testpmd(self, pci=\"\"):\n+    def start_vhost_testpmd(self, pci=\"\", dmas=None):\n         \"\"\"\n         start testpmd on vhost side\n         \"\"\"\n@@ -124,9 +128,18 @@ class TestVirtioUserInterrupt(TestCase):\n         vdev = [\"net_vhost0,iface=vhost-net,queues=1,client=0\"]\n         para = \" -- -i --rxq=1 --txq=1\"\n         if len(pci) == 0:\n-            eal_params = self.dut.create_eal_parameters(cores=self.core_list_vhost, ports=[self.pci_info], vdevs=vdev)\n+            if dmas:\n+                vdev = [\"net_vhost0,iface=vhost-net,queues=1,dmas=[%s]\" % dmas]\n+                eal_params = self.dut.create_eal_parameters(cores=self.core_list_vhost, vdevs=vdev)\n+            else:\n+                eal_params = self.dut.create_eal_parameters(cores=self.core_list_vhost, ports=[self.pci_info], vdevs=vdev)\n         else:\n-            eal_params = self.dut.create_eal_parameters(cores=self.core_list_vhost, prefix='vhost', no_pci=True, vdevs=vdev)\n+            if dmas:\n+                vdev = [\"net_vhost0,iface=vhost-net,queues=1,client=0,dmas=[%s]\" % dmas]\n+                para = \" -- -i\"\n+                eal_params = self.dut.create_eal_parameters(cores=self.core_list_vhost, ports=pci, prefix='vhost', vdevs=vdev)\n+            else:\n+                eal_params = self.dut.create_eal_parameters(cores=self.core_list_vhost, prefix='vhost', no_pci=True, vdevs=vdev)\n         cmd_vhost_user = testcmd + eal_params + para\n \n         self.vhost.send_expect(cmd_vhost_user, \"testpmd>\", 30)\n@@ -165,6 +178,45 @@ class TestVirtioUserInterrupt(TestCase):\n         else:\n             self.logger.error(\"Wrong link status not right, status is %s\" % result)\n \n+    def get_cbdma_ports_info_and_bind_to_dpdk(self, cbdma_num):\n+        \"\"\"\n+        get all cbdma ports\n+        \"\"\"\n+        str_info = 'Misc (rawdev) devices using kernel driver'\n+        out = self.dut.send_expect('./usertools/dpdk-devbind.py --status-dev misc', '# ', 30)\n+        device_info = out.split('\\n')\n+        for device in device_info:\n+            pci_info = re.search('\\s*(0000:\\d*:\\d*.\\d*)', device)\n+            if pci_info is not None:\n+                dev_info = pci_info.group(1)\n+                # the numa id of ioat dev, only add the device which\n+                # on same socket with nic dev\n+                bus = int(dev_info[5:7], base=16)\n+                if bus >= 128:\n+                    cur_socket = 1\n+                else:\n+                    cur_socket = 0\n+                if self.ports_socket == cur_socket:\n+                    self.cbdma_dev_infos.append(pci_info.group(1))\n+        self.verify(len(self.cbdma_dev_infos) >= cbdma_num, 'There no enough cbdma device to run this suite')\n+        self.used_cbdma = self.cbdma_dev_infos[0:cbdma_num]\n+        dmas_info = ''\n+        for dmas in self.used_cbdma:\n+            number = self.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(self.used_cbdma)\n+        self.dut.setup_modules(self.target, \"igb_uio\", \"None\")\n+        self.dut.send_expect('./usertools/dpdk-devbind.py --force --bind=%s %s %s' %\n+                             (\"igb_uio\", self.device_str, self.pci_info), '# ', 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 test_split_ring_virtio_user_interrupt_with_vhost_net_as_backed(self):\n         \"\"\"\n         Check the virtio-user interrupt can work when use vhost-net as backend\n@@ -257,12 +309,46 @@ class TestVirtioUserInterrupt(TestCase):\n         self.vhost.send_expect(\"quit\", \"#\", 20)\n         self.check_virtio_side_link_status(\"down\")\n \n+    def test_lsc_event_between_vhost_user_and_virtio_user_with_split_ring_and_cbdma_enabled(self):\n+        \"\"\"\n+        Test Case7: LSC event between vhost-user and virtio-user with split ring and cbdma enabled\n+        \"\"\"\n+        self.get_cbdma_ports_info_and_bind_to_dpdk(1)\n+        self.start_vhost_testpmd(pci=self.used_cbdma, dmas=self.dmas_info)\n+        self.start_virtio_user()\n+        self.check_virtio_side_link_status(\"up\")\n+\n+        self.vhost.send_expect(\"quit\", \"#\", 20)\n+        self.check_virtio_side_link_status(\"down\")\n+        self.dut.send_expect(\"killall %s\" % self.l3fwdpower_name, \"#\")\n+        self.dut.send_expect(\"killall -s INT %s\" % self.testpmd_name, \"#\")\n+        self.close_all_session()\n+\n+    def test_split_ring_virtio_user_interrupt_test_with_vhost_user_as_backend_and_cbdma_enabled(self):\n+        \"\"\"\n+        Test Case8: Split ring virtio-user interrupt test with vhost-user as backend and cbdma enabled\n+        \"\"\"\n+        self.get_cbdma_ports_info_and_bind_to_dpdk(1)\n+        self.start_vhost_testpmd(pci=\"\", dmas=self.dmas_info)\n+        self.launch_l3fwd(path=\"./vhost-net\")\n+        # double check the status of interrupt core\n+        for i in range(2):\n+            self.tester.scapy_append('pk=[Ether(dst=\"52:54:00:00:00:01\")/IP()/(\"X\"*64)]')\n+            self.tester.scapy_append('sendp(pk, iface=\"%s\", count=100)' % self.tx_interface)\n+            self.tester.scapy_execute()\n+            time.sleep(3)\n+            self.check_interrupt_log(status=\"waked up\")\n+        self.dut.send_expect(\"killall %s\" % self.l3fwdpower_name, \"#\")\n+        self.dut.send_expect(\"killall -s INT %s\" % self.testpmd_name, \"#\")\n+        self.close_all_session()\n+\n     def tear_down(self):\n         \"\"\"\n         run after each test case.\n         \"\"\"\n         self.dut.send_expect(\"killall %s\" % self.l3fwdpower_name, \"#\")\n         self.dut.send_expect(\"killall -s INT %s\" % self.testpmd_name, \"#\")\n+        self.bind_cbdma_device_to_kernel()\n         self.close_all_session()\n \n     def tear_down_all(self):\n",
    "prefixes": [
        "V1"
    ]
}