get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 112428,
    "url": "https://patches.dpdk.org/api/patches/112428/?format=api",
    "web_url": "https://patches.dpdk.org/project/dts/patch/20220607024032.340614-1-songx.jiale@intel.com/",
    "project": {
        "id": 3,
        "url": "https://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": "<20220607024032.340614-1-songx.jiale@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dts/20220607024032.340614-1-songx.jiale@intel.com",
    "date": "2022-06-07T02:40:32",
    "name": "[V4] tests/userspace_ethtool: add method wait port link up and add checklist",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "8d97c883c94c8117c9124ec62a0baaf333d8a8ad",
    "submitter": {
        "id": 2352,
        "url": "https://patches.dpdk.org/api/people/2352/?format=api",
        "name": "Jiale, SongX",
        "email": "songx.jiale@intel.com"
    },
    "delegate": null,
    "mbox": "https://patches.dpdk.org/project/dts/patch/20220607024032.340614-1-songx.jiale@intel.com/mbox/",
    "series": [
        {
            "id": 23368,
            "url": "https://patches.dpdk.org/api/series/23368/?format=api",
            "web_url": "https://patches.dpdk.org/project/dts/list/?series=23368",
            "date": "2022-06-07T02:40:32",
            "name": "[V4] tests/userspace_ethtool: add method wait port link up and add checklist",
            "version": 4,
            "mbox": "https://patches.dpdk.org/series/23368/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/112428/comments/",
    "check": "pending",
    "checks": "https://patches.dpdk.org/api/patches/112428/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 0DBF1A0544;\n\tTue,  7 Jun 2022 04:40:42 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id CC6C34021D;\n\tTue,  7 Jun 2022 04:40:41 +0200 (CEST)",
            "from mga09.intel.com (mga09.intel.com [134.134.136.24])\n by mails.dpdk.org (Postfix) with ESMTP id 79BB140156\n for <dts@dpdk.org>; Tue,  7 Jun 2022 04:40:40 +0200 (CEST)",
            "from fmsmga003.fm.intel.com ([10.253.24.29])\n by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 06 Jun 2022 19:40:39 -0700",
            "from unknown (HELO daily-regression-131.intel.com)\n ([10.239.251.131])\n by fmsmga003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 06 Jun 2022 19:40:37 -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=1654569640; x=1686105640;\n h=from:to:cc:subject:date:message-id:mime-version:\n content-transfer-encoding;\n bh=yH0gfvbNsyn/U84DrghEZli6O5uT5cJAwUkwMrlABn4=;\n b=aM/AWzdCvrKR4SE0kcMuWGURV9rSA4rwKImXoqrmi6MnvEzaVfjNGhgo\n votC3MErMN3LN/nebGk+/2oR+RQ1B0gZAN+eHeSHzg3n3IB5RM0kFNnmB\n TnAxu+SpSQTyJPUyhU/Lii8de3R3/kBLvX4XNq/T7sfNGevDPW77GC1fO\n eej9+l3aMG/uuP3tytYruJYUUr4Na98OtfS+4lNfGoYXhsGD1FNl+A1Fi\n r61aLP9/PWSr13FVlqcdB9TEOI2yL1UgiZaKbJboyK71qB1WFIKv0PVoU\n BGKqopI2/vaP985HZNkigT6uR9q/gwcCQSCb1ASoPqVCifljdMjGNp4oJ Q==;",
        "X-IronPort-AV": [
            "E=McAfee;i=\"6400,9594,10370\"; a=\"276973532\"",
            "E=Sophos;i=\"5.91,282,1647327600\"; d=\"scan'208\";a=\"276973532\"",
            "E=Sophos;i=\"5.91,282,1647327600\"; d=\"scan'208\";a=\"669776759\""
        ],
        "From": "Jiale Song <songx.jiale@intel.com>",
        "To": "dts@dpdk.org",
        "Cc": "Jiale Song <songx.jiale@intel.com>",
        "Subject": "[dts] [PATCH V4] tests/userspace_ethtool: add method wait port link\n up and add checklist",
        "Date": "Tue,  7 Jun 2022 10:40:32 +0800",
        "Message-Id": "<20220607024032.340614-1-songx.jiale@intel.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=y",
        "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": "fix 4 issue:\n  1.check and wait for the port status of the tester and dut to be up and delete some unnecessary delays.\n  2.700 Series not support port disconnect by tools of linux, add 'I40E_10G-10G_BASE_T_X722'\nand 'I40E_10G-10G_BASE_T_BC'.\n  3.ensure that the dpdk app has exited and rebind the driver.\n  4.the bug of 'IGC-I225_LM' is not fixed, add to checklist.\n\nSigned-off-by: Jiale Song <songx.jiale@intel.com>\n---\n conf/test_case_checklist.json        |  3 +-\n tests/TestSuite_userspace_ethtool.py | 46 ++++++++++++++++++----------\n 2 files changed, 32 insertions(+), 17 deletions(-)",
    "diff": "diff --git a/conf/test_case_checklist.json b/conf/test_case_checklist.json\nindex 053841ce..0347bc54 100644\n--- a/conf/test_case_checklist.json\n+++ b/conf/test_case_checklist.json\n@@ -2131,7 +2131,8 @@\n                 \"I40E_10G-SFP_X722\",\n                 \"I40E_10G-10G_BASE_T_X722\",\n                 \"IAVF_10G-X722_VF\",\n-                \"I40E_10G-10G_BASE_T_BC\"\n+                \"I40E_10G-10G_BASE_T_BC\",\n+                \"IGC-I225_LM\"\n             ],\n             \"Target\": [\n                 \"ALL\"\ndiff --git a/tests/TestSuite_userspace_ethtool.py b/tests/TestSuite_userspace_ethtool.py\nindex adbba999..7129301e 100644\n--- a/tests/TestSuite_userspace_ethtool.py\n+++ b/tests/TestSuite_userspace_ethtool.py\n@@ -28,7 +28,7 @@ class TestUserspaceEthtool(TestCase):\n         \"\"\"\n         self.ports = self.dut.get_ports()\n         self.verify(len(self.ports) >= 2, \"No ports found for \" + self.nic)\n-\n+        self.other_700_nic = [\"I40E_10G-10G_BASE_T_X722\", \"I40E_10G-10G_BASE_T_BC\"]\n         # build sample app\n         out = self.dut.build_dpdk_apps(\"examples/ethtool\")\n         self.verify(\"Error\" not in out, \"compilation error 1\")\n@@ -263,18 +263,25 @@ class TestUserspaceEthtool(TestCase):\n             portinfo[\"net_dev\"].bind_driver(portinfo[\"ori_driver\"])\n \n         self.dut.send_expect(self.cmd, \"EthApp>\", 60)\n+        for port in self.ports:\n+            tester_port = self.tester.get_local_port(port)\n+            intf = self.tester.get_interface(tester_port)\n+            self.tester.is_interface_up(intf)\n         # ethtool doesn't support port disconnect by tools of linux\n         # only detect physical link disconnect status\n         verify_pass = True\n         verify_msg = \"\"\n-        if not (self.is_eth_series_nic(700) or self.is_eth_series_nic(800)):\n+        if not (\n+            self.is_eth_series_nic(700)\n+            or self.other_700_nic\n+            or self.is_eth_series_nic(800)\n+        ):\n             # check link status dump function\n             for port in self.ports:\n                 tester_port = self.tester.get_local_port(port)\n                 intf = self.tester.get_interface(tester_port)\n                 self.tester.send_expect(\"ip link set dev %s down\" % intf, \"# \")\n-            # wait for link stable\n-            time.sleep(5)\n+                self.tester.is_interface_down(intf)\n \n             out = self.dut.send_expect(\"link\", \"EthApp>\", 60)\n             link_pattern = r\"Port (\\d+): (.*)\"\n@@ -299,8 +306,7 @@ class TestUserspaceEthtool(TestCase):\n                 tester_port = self.tester.get_local_port(port)\n                 intf = self.tester.get_interface(tester_port)\n                 self.tester.send_expect(\"ip link set dev %s up\" % intf, \"# \")\n-            # wait for link stable\n-            time.sleep(5)\n+                self.tester.is_interface_up(intf)\n \n         # check port stats function\n         pkt = Packet(pkt_type=\"UDP\")\n@@ -447,12 +453,13 @@ class TestUserspaceEthtool(TestCase):\n             )\n             pkt = Packet(pkt_type=\"UDP\")\n             tester_port = self.tester.get_local_port(port)\n+            intf = self.tester.get_interface(tester_port)\n+            self.tester.is_interface_up(intf)\n             self.verify(\n                 self.ethapp_check_link_status(index, \"Up\") == True,\n                 \"Fail to Open port{}\".format(index),\n             )\n-\n-            intf = self.tester.get_interface(tester_port)\n+            time.sleep(1)\n             pkt.send_pkt(self.tester, tx_port=intf, count=4)\n             rx_pkts, tx_pkts = self.strip_portstats(index)\n             self.verify(\n@@ -512,8 +519,14 @@ class TestUserspaceEthtool(TestCase):\n         for index in range(len(self.ports)):\n             port = self.ports[index]\n             ori_rx_pkts, _ = self.strip_portstats(index)\n-            # add sleep time for update link status with Intel® Ethernet 700 Series nic\n-            time.sleep(10)\n+            # check port link status is up\n+            tester_port = self.tester.get_local_port(port)\n+            intf = self.tester.get_interface(tester_port)\n+            self.tester.is_interface_up(intf)\n+            self.verify(\n+                self.ethapp_check_link_status(index, \"Up\") == True,\n+                \"Fail to Open port{}\".format(index),\n+            )\n             # stop port\n             self.dut.send_expect(\"stop %d\" % index, \"EthApp>\")\n             # about ICE_25G-E810C_SFP(8086:1593),there have a kernel driver link status issue\n@@ -530,13 +543,12 @@ class TestUserspaceEthtool(TestCase):\n                 )\n             # check packet not forwarded when port is stop\n             pkt = Packet(pkt_type=\"UDP\")\n-            tester_port = self.tester.get_local_port(port)\n-            intf = self.tester.get_interface(tester_port)\n             pkt.send_pkt(self.tester, tx_port=intf, count=4)\n             rx_pkts, tx_pkts = self.strip_portstats(index)\n             self.verify(rx_pkts == ori_rx_pkts, \"Failed to stop port\")\n             # restart port and check packet can normally forwarded\n             self.dut.send_expect(\"open %d\" % index, \"EthApp>\")\n+            self.tester.is_interface_up(intf)\n             self.verify(\n                 self.ethapp_check_link_status(index, \"Up\") == True,\n                 \"Fail to Open port{}\".format(index),\n@@ -575,7 +587,6 @@ class TestUserspaceEthtool(TestCase):\n                 # Intel® Ethernet 800 Series should stop port before set mtu\n                 if self.nic in [\"ICE_25G-E810C_SFP\", \"ICE_100G-E810C_QSFP\"]:\n                     self.dut.send_expect(\"stop %s\" % index, \"EthApp>\")\n-\n                 # The mtu threshold is 2022,When it is greater than 2022, the open/stop port is required.\n                 if mtu > mtu_threshold:\n                     if self.nic in [\n@@ -592,7 +603,11 @@ class TestUserspaceEthtool(TestCase):\n                 if self.nic in [\"ICE_25G-E810C_SFP\", \"ICE_100G-E810C_QSFP\"]:\n                     self.dut.send_expect(\"open %s\" % index, \"EthApp>\")\n \n-                time.sleep(5)\n+                self.tester.is_interface_up(intf)\n+                self.verify(\n+                    self.ethapp_check_link_status(index, \"Up\") == True,\n+                    \"Fail to Open port{}\".format(index),\n+                )\n                 ori_rx_pkts, _ = self.strip_portstats(index)\n                 pkt_size = mtu + HEADER_SIZE[\"eth\"] + offset\n                 pkt = Packet(pkt_type=\"UDP\", pkt_len=pkt_size)\n@@ -677,9 +692,8 @@ class TestUserspaceEthtool(TestCase):\n         \"\"\"\n         Run after each test case.\n         \"\"\"\n-        self.dut.bind_interfaces_linux(self.drivername)\n         self.dut.kill_all()\n-        pass\n+        self.dut.bind_interfaces_linux(self.drivername)\n \n     def tear_down_all(self):\n         \"\"\"\n",
    "prefixes": [
        "V4"
    ]
}