From patchwork Sun Jul 16 14:00:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yaqi Tang X-Patchwork-Id: 129560 Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id 1E36042E8D; Sun, 16 Jul 2023 16:01:55 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 16537427EE; Sun, 16 Jul 2023 16:01:55 +0200 (CEST) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mails.dpdk.org (Postfix) with ESMTP id B2E3E4013F for ; Sun, 16 Jul 2023 16:01:52 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1689516112; x=1721052112; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=661eVFG7oPWB7oLZD0b3QzdND98/Qz0y7BicbvOaDV4=; b=Vech7dnsh8ujGa7wMeccOoiWIOEI2yDf00GhHFE7Wo+IVfT3fhRO5HCH D9jrEsSt+GmDNweDP3KLC776uPQtZsi0cSW/8gI2r05eD7IMQjr23wOWF QIZHFZAJefqFS8Z/LMXSrKau+9Yie4TX1ihw6S6wEot3uG4l0NYLit9oK /dRqhnEfqUbq1xZg+Y7Qfjg6V9POF3UDrgYN1FT9ZN8qxThT4XyYH96LS fOMtsZFj52vVofySd8b1RMHoDhXccEJ0bvKzM/2lleJqMVu7xaeFTjyJx gT1vrrcL2okBbceSp5jwmvd9CU6jvPU3RtQgwjS9AclIvja+r8wkbNuwq g==; X-IronPort-AV: E=McAfee;i="6600,9927,10773"; a="345351250" X-IronPort-AV: E=Sophos;i="6.01,210,1684825200"; d="scan'208";a="345351250" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jul 2023 07:01:52 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10773"; a="896930498" X-IronPort-AV: E=Sophos;i="6.01,210,1684825200"; d="scan'208";a="896930498" Received: from dpdk-yaqi.sh.intel.com ([10.67.118.189]) by orsmga005.jf.intel.com with ESMTP; 16 Jul 2023 07:01:49 -0700 From: Yaqi Tang To: dts@dpdk.org Cc: Yaqi Tang Subject: [PATCH V1 2/3] test_plans/igc_tx_timestamp: igc enable tx timestamp offloading Date: Sun, 16 Jul 2023 14:00:53 +0000 Message-Id: <20230716140054.3222247-3-yaqi.tang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230716140054.3222247-1-yaqi.tang@intel.com> References: <20230716140054.3222247-1-yaqi.tang@intel.com> MIME-Version: 1.0 X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org IGC Enable Tx timestamp offloading by leveraging I225 NIC's "Launch Time". Signed-off-by: Yaqi Tang --- test_plans/igc_tx_timestamp_test_plan.rst | 161 ++++++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 test_plans/igc_tx_timestamp_test_plan.rst diff --git a/test_plans/igc_tx_timestamp_test_plan.rst b/test_plans/igc_tx_timestamp_test_plan.rst new file mode 100644 index 00000000..727e73be --- /dev/null +++ b/test_plans/igc_tx_timestamp_test_plan.rst @@ -0,0 +1,161 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright(c) 2023 Intel Corporation + +================================== +IGC Enable Tx Timestamp Offloading +================================== + +Description +=========== +IGC Enable Tx timestamp offloading by leveraging I225 NIC's "Launch Time". +Measure time interval for Rx timestamp when setting Tx interval between packets in one burst and MAX/MIN error. +Currently, the minimum time interval for Rx timestamp when setting Tx interval implemented by 2.5G IGC NIC is 300ns. + +.. note:: + testpmd> set txtimes (inter),(intra) + inter is the delay between the bursts in the device clock units. + intra is the delay between the packets within the burst specified in the device clock units. + Due to the time difference in the software, the inter value should be as large as possible to avoid conflicts, + so the inter value in this plan is set to 30000000. + +Prerequisites +============= + +Topology +-------- +The connection is as below table:: + +-----------------------------+ + | DUT | TESTER | + +=============================+ + | 2.5G | + | IGC-NIC-1 ---- IGC-NIC-2 | + +-----------------------------+ + +Hardware +-------- +Supported NICs: IGC-I225_LM/IGC-I226_LM + +Software +-------- +dpdk: http://dpdk.org/git/dpdk +runtime command: https://doc.dpdk.org/guides/testpmd_app_ug/testpmd_funcs.html + +General Set Up +-------------- +1. Compile DPDK:: + + # CC=gcc meson --werror -Denable_kmods=True -Dlibdir=lib --default-library=static + # ninja -C -j 110 + +2. Get the pci device id and interface of DUT and tester. + For example, 0000:18:00.0 and 0000:86:00.0 is pci device id, + ens785 and ens803 is interface:: + + # ./usertools/dpdk-devbind.py -s + + 0000:18:00.0 'Device 125b' if=ens785 drv=igc unused=vfio-pci + 0000:86:00.0 'Device 125b' if=ens803 drv=igc unused=vfio-pci + +3. Bind the DUT port to dpdk:: + + # ./usertools/dpdk-devbind.py -b vfio-pci + +4. Tester compile test-timestamp app:: + + # gcc /root/pkt_rx_tx.c -o test-timestamp -lpthread + +5. Tester Launch test-timestamp app:: + + # ./test-timestamp -i -t + +Test Case +========= +Test Case 1: Enable tx timestamp, check time interval of rx timestamp +--------------------------------------------------------------------- +Launch testpmd enable tx timestamp offloading, set different txtimes intra and measure time interval of Rx timestamp between packets in one burst and MAX/MIN error. +When the set txtimes intra more than 300ns, the time interval for Rx timestamp is the set intra. When it's less than 300ns, the time interval for Rx timestamp is 300ns. + +Subcase 1: set txtimes intra 2000ns +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Test Steps +~~~~~~~~~~ +1. Launch testpmd enable tx timestamp:: + + ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 -a 0000:18:00.0 -- -i --tx-offloads=0x200000 + +2. Set txtimes intra:: + + set fwd txonly + set txtimes 30000000,2000 + start + +3. Check the time interval of Rx timestamp is 2000ns and measure MAX/MIN error. + +Subcase 2: set txtimes intra 1000ns +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +1. Modify subcase 1 test step 2 to:: + + set txtimes 30000000,1000 + +2. Execute subcase 1 test steps to check the time interval of Rx timestamp is 1000ns and measure MAX/MIN error. + +Subcase 3: set txtimes intra 400ns +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +1. Modify subcase 1 test step 2 to:: + + set txtimes 30000000,400 + +2. Execute subcase 1 test steps to check the time interval of Rx timestamp is 400ns and measure MAX/MIN error. + +Subcase 4: set txtimes intra 300ns +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +1. Modify subcase 1 test step 2 to:: + + set txtimes 30000000,300 + +2. Execute subcase 1 test steps to check the time interval of Rx timestamp is 300ns and measure MAX/MIN error. + +Subcase 5: set txtimes intra 200ns +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +1. Modify subcase 1 test step 2 to:: + + set txtimes 30000000,200 + +2. Execute subcase 1 test steps to check the time interval of Rx timestamp is 300ns and measure MAX/MIN error. + +Test Case 2: Without tx timestamp, check time interval of rx timestamp +---------------------------------------------------------------------- +Launch testpmd without tx timestamp offloading, set different txtimes intra and measure time interval for Rx timestamp between packets in one burst and MAX/MIN error. +Regardless of the value of txtimes intra, the time interval for Rx timestamp is 300ns. + +Subcase 1: set txtimes intra 2000ns +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Test Steps +~~~~~~~~~~ +1. Launch testpmd enable tx timestamp:: + + ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 -a 0000:18:00.0 -- -i + +2. Set txtimes intra:: + + set fwd txonly + set txtimes 30000000,2000 + start + +3. Check the time interval of Rx timestamp is 300ns and measure MAX/MIN error. + +Subcase 2: set txtimes intra 1000ns +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +1. Modify subcase 1 test step 2 to:: + + set txtimes 30000000,1000 + +2. Execute subcase 1 test steps to check the time interval of Rx timestamp is 300ns and measure MAX/MIN error. + +Subcase 3: set txtimes intra 400ns +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +1. Modify subcase 1 test step 2 to:: + + set txtimes 30000000,400 + +2. Execute subcase 1 test steps to check the time interval of Rx timestamp is 300ns and measure MAX/MIN error.