From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 47F1F7CF6 for ; Thu, 19 Apr 2018 11:53:26 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Apr 2018 02:53:25 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,468,1517904000"; d="scan'208";a="49116971" Received: from unknown (HELO dpdk-fedora20.icx.intel.com) ([10.240.176.135]) by orsmga001.jf.intel.com with ESMTP; 19 Apr 2018 02:53:24 -0700 From: Peng Yuan To: dts@dpdk.org Cc: Peng Yuan Date: Thu, 19 Apr 2018 17:54:40 +0800 Message-Id: <1524131680-122289-1-git-send-email-yuan.peng@intel.com> X-Mailer: git-send-email 1.9.3 Subject: [dts] [PATCH] test_plans: PMD drivers adaption for new RXTX offload APIs X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Apr 2018 09:53:27 -0000 Add test plan for the feature "Intel PMD drivers adaption for new RXTX offload APIs" Signed-off-by: Peng Yuan diff --git a/test_plans/rxtx_offload_test_plan.rst b/test_plans/rxtx_offload_test_plan.rst new file mode 100644 index 0000000..b20c8b9 --- /dev/null +++ b/test_plans/rxtx_offload_test_plan.rst @@ -0,0 +1,507 @@ +.. Copyright (c) <2018>, Intel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + - Neither the name of Intel Corporation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + OF THE POSSIBILITY OF SUCH DAMAGE. + +============================================== +PMD drivers adaption for new RXTX offload APIs +============================================== +Description +=========== + + Adapt all the Intel drivers for the new RX/TX offload APIs. + There're new RX/TX offload APIs accepted in 17.11, + These new APIs are more friendly and easier to use. + Currently, they co-exist with the old APIs. Some adaption work is + here to make the drivers can use the old ones or the new ones. + But suppose the target is to let all the NICs support the new APIs + and then remove the old ones. + So, in driver layer, we can begin to support the new ones and remove + the old ones. + Eight new commands are added: + Rx test commands: + 1. testpmd > rx_offload get capability + 2. testpmd > rx_offload get configuration + 3. testmpd > rx_offload enable|disable per_port + 4. testpmd > rx_offload enable|disable per_queue + Tx test commands: + 1. testpmd > tx_offload get capability + 2. testpmd > tx_offload get configuration + 3. testmpd > tx_offload enable|disable per_port + 4. testpmd > tx_offload enable|disable per_queue + +Prerequisites +============= + +1. Hardware: + Fortville/82599 + +2. Software: + dpdk: http://dpdk.org/git/dpdk + scapy: http://www.secdev.org/projects/scapy/ + +3. Bind the pf port to dpdk driver:: + + ./usertools/dpdk-devbind.py -b igb_uio 05:00.0 05:00.1 + +Notes: all the cases are discribed according to ixgbe, +i40e will has difference with ixgbe in printing. +There is no per_queue parameter in i40e setting now. + +Test case: rx_offload set per_queue parameter +============================================= + +1. Start testpmd:: + + ./testpmd -c f -n 4 -- -i --rxq=4 --txq=4 + testpmd> set fwd rxonly + testpmd> set verbose 1 + testpmd> start + testpmd> show port info all + VLAN offload: + strip off + +2. Get the rx_offload capability and configuration:: + + testpmd> rx_offload get capability 0 + Rx Offloading Capabilities of port 0 : + Per Queue : VLAN_STRIP + Per Port : IPV4_CKSUM UDP_CKSUM TCP_CKSUM TCP_LRO MACSEC_STRIP VLAN_FILTER VLAN_EXTEND JUMBO_FRAME CRC_STRIP SCATTER SECURITY + testpmd> rx_offload get configuration 0 + Rx Offloading Configuration of port 0 : + Port : CRC_STRIP + Queue[ 0] : CRC_STRIP + Queue[ 1] : CRC_STRIP + Queue[ 2] : CRC_STRIP + Queue[ 3] : CRC_STRIP + +3. Enable vlan_strip per_queue:: + + testpmd> rx_offload enable per_queue vlan_strip 0 0 + testpmd> rx_offload enable per_queue vlan_strip 0 2 + testpmd> rx_offload get configuration 0 + Rx Offloading Configuration of port 0 : + Port : CRC_STRIP + Queue[ 0] : VLAN_STRIP CRC_STRIP + Queue[ 1] : CRC_STRIP + Queue[ 2] : VLAN_STRIP CRC_STRIP + Queue[ 3] : CRC_STRIP + testpmd> port start 0 + testpmd> show port info 0 + VLAN offload: + strip on + +4. Send two packets:: + + pkt1 = Ether(dst="00:00:00:00:01:00", src="00:02:00:00:00:01")/Dot1Q(vlan=1)/IP(src="192.168.0.1", dst="192.168.0.3")/UDP(sport=33,dport=34)/Raw('x'*20) + pkt2 = Ether(dst="00:00:00:00:01:00", src="00:02:00:00:00:01")/Dot1Q(vlan=1)/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=33,dport=34)/Raw('x'*20) + + Port0 receive the two packets:: + + testpmd> port 0/queue 1: received 1 packets + src=00:02:00:00:00:01 - dst=00:00:00:00:01:00 - type=0x8100 - length=66 - nb_segs=1 - RSS hash=0x4b4e59b1 - RSS queue=0x3 - hw ptype: L2_ETHER L3_IPV4 L4_UDP - sw ptype: L2_ETHER_VLAN L3_IPV4 L4_UDP - l2_len=18 - l3_len=20 - l4_len=8 - Receive queue=0x1 + ol_flags: PKT_RX_VLAN PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD + port 0/queue 2: received 1 packets + src=00:02:00:00:00:01 - dst=00:00:00:00:01:00 - type=0x0800 - length=62 - nb_segs=1 - RSS hash=0xf0068ffe - RSS queue=0x2 - VLAN tci=0x1 - hw ptype: L2_ETHER L3_IPV4 L4_UDP - sw ptype: L2_ETHER L3_IPV4 L4_UDP - l2_len=14 - l3_len=20 - l4_len=8 - Receive queue=0x2 + ol_flags: PKT_RX_VLAN PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_VLAN_STRIPPED + + Queue2 implement the vlan strip, queue3 doesn't support vlan strip. + +5. Disable vlan_strip per_queue:: + + testpmd> rx_offload enable per_queue vlan_strip 0 3 + testpmd> rx_offload disable per_queue vlan_strip 0 2 + testpmd> rx_offload get configuration 0 + Rx Offloading Configuration of port 0 : + Port : CRC_STRIP + Queue[ 0] : VLAN_STRIP CRC_STRIP + Queue[ 1] : CRC_STRIP + Queue[ 2] : CRC_STRIP + Queue[ 3] : VLAN_STRIP CRC_STRIP + + Send the same packets:: + + testpmd> port 0/queue 3: received 1 packets + src=00:02:00:00:00:01 - dst=00:00:00:00:01:00 - type=0x0800 - length=62 - nb_segs=1 - RSS hash=0x6bfdcb2f - RSS queue=0x3 - VLAN tci=0x1 - hw ptype: L2_ETHER L3_IPV4 L4_UDP - sw ptype: L2_ETHER L3_IPV4 L4_UDP - l2_len=14 - l3_len=20 - l4_len=8 - Receive queue=0x3 + ol_flags: PKT_RX_VLAN PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_VLAN_STRIPPED + port 0/queue 2: received 1 packets + src=00:02:00:00:00:01 - dst=00:00:00:00:01:00 - type=0x8100 - length=66 - nb_segs=1 - RSS hash=0xf0068ffe - RSS queue=0x2 - hw ptype: L2_ETHER L3_IPV4 L4_UDP - sw ptype: L2_ETHER_VLAN L3_IPV4 L4_UDP - l2_len=18 - l3_len=20 - l4_len=8 - Receive queue=0x2 + ol_flags: PKT_RX_VLAN PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD + + Queue3 implement the vlan strip, queue2 doesn't support vlan strip. + +6. Enable vlan_strip per_port:: + + testpmd> rx_offload enable per_port vlan_strip 0 + testpmd> rx_offload get configuration 0 + Rx Offloading Configuration of port 0 : + Port : VLAN_STRIP CRC_STRIP + Queue[ 0] : VLAN_STRIP CRC_STRIP + Queue[ 1] : VLAN_STRIP CRC_STRIP + Queue[ 2] : VLAN_STRIP CRC_STRIP + Queue[ 3] : VLAN_STRIP CRC_STRIP + + Send the two packets. queue3 and queue2 both implement vlan_strip + +7. Disable vlan_strip per_port:: + + testpmd> rx_offload disable per_port vlan_strip 0 + testpmd> rx_offload get configuration 0 + Rx Offloading Configuration of port 0 : + Port : CRC_STRIP + Queue[ 0] : CRC_STRIP + Queue[ 1] : CRC_STRIP + Queue[ 2] : CRC_STRIP + Queue[ 3] : CRC_STRIP + testpmd> show port info 0 + VLAN offload: + strip off + + send the two packets. queue3 and queue2 both don't support vlan_strip + Notes: there is no per_queue parameter in i40e driver, + so this case is just only for ixgbe. + +Test case: rx_offload set per_port parameter +============================================ + +1. Enable jumboframe when start testpmd:: + + ./x86_64-native-linuxapp-gcc/app/testpmd -c f -n 4 -- -i --rxq=4 --txq=4 --max-pkt-len=9000 + testpmd> set fwd rxonly + testpmd> set verbose 1 + testpmd> start + testpmd> rx_offload get capability 0 + Rx Offloading Capabilities of port 0 : + Per Queue : VLAN_STRIP + Per Port : IPV4_CKSUM UDP_CKSUM TCP_CKSUM TCP_LRO MACSEC_STRIP VLAN_FILTER VLAN_EXTEND JUMBO_FRAME CRC_STRIP SCATTER SECURITY + testpmd> rx_offload get configuration 0 + Rx Offloading Configuration of port 0 : + Port : JUMBO_FRAME CRC_STRIP + Queue[ 0] : JUMBO_FRAME CRC_STRIP + Queue[ 1] : JUMBO_FRAME CRC_STRIP + Queue[ 2] : JUMBO_FRAME CRC_STRIP + Queue[ 3] : JUMBO_FRAME CRC_STRIP + +2. Send a jumboframe packet:: + + pkt1 = Ether(dst="52:54:00:00:00:01", src="52:00:00:00:00:00")/IP(dst="192.168.0.1", src="192.168.0.2", len=8981)/Raw(load="P"*8961) + pkt1 = Ether(dst="52:54:00:00:00:01", src="52:00:00:00:00:00")/IP(dst="192.168.0.1", src="192.168.0.3", len=8981)/Raw(load="P"*8961) + + pkt1 was distributed to queue 1, pkt2 was distributed to queue 0. + +3. Failed to disable jumboframe per_queue:: + + testpmd> port stop 0 + testpmd> rx_offload disable per_queue jumbo_frame 0 1 + testpmd> port start 0 + Configuring Port 0 (socket 0) + ixgbe_dev_rx_queue_setup(): 0xfd39c0: Rx queue offloads 0x1000 don't match port offloads 0x1800 or supported port offloads 0xbe9e or supported queue offloads 0x1 + Fail to configure port 0 rx queues + +4. Succeed to disable jumboframe per_port:: + + testpmd> rx_offload disable per_port jumbo_frame 0 + testpmd> port start 0 + testpmd> rx_offload get configuration 0 + Rx Offloading Configuration of port 0 : + Port : CRC_STRIP + Queue[ 0] : CRC_STRIP + Queue[ 1] : CRC_STRIP + Queue[ 2] : CRC_STRIP + Queue[ 3] : CRC_STRIP + testpmd> start + + Send the same two packet, there is no packet received. + +5. Failed to enable jumboframe per_queue:: + + testpmd> port stop 0 + testpmd> rx_offload enable per_queue jumbo_frame 0 1 + testpmd> port start 0 + Configuring Port 0 (socket 0) + ixgbe_dev_rx_queue_setup(): 0xfd39c0: Rx queue offloads 0x1000 don't match port offloads 0x1800 or supported port offloads 0xbe9e or supported queue offloads 0x1 + Fail to configure port 0 rx queues + +6. Succeed to enable jumboframe per_port. + Send the same two packet, pkt1 was distributed to queue 1, + pkt2 was distributed to queue 0. + +Test case: rx_offload 1 command-line parameter covers 3 per_port parameter +========================================================================== + +1. Enable rx cksum in command-line:: + + ./x86_64-native-linuxapp-gcc/app/testpmd -c f -n 4 -- -i --rxq=4 --txq=4 --enable-rx-cksum + testpmd> rx_offload get configuration 0 + Rx Offloading Configuration of port 0 : + Port : IPV4_CKSUM UDP_CKSUM TCP_CKSUM CRC_STRIP + Queue[ 0] : IPV4_CKSUM UDP_CKSUM TCP_CKSUM CRC_STRIP + Queue[ 1] : IPV4_CKSUM UDP_CKSUM TCP_CKSUM CRC_STRIP + Queue[ 2] : IPV4_CKSUM UDP_CKSUM TCP_CKSUM CRC_STRIP + Queue[ 3] : IPV4_CKSUM UDP_CKSUM TCP_CKSUM CRC_STRIP + +2. Disable the rx cksum per_port:: + + testpmd> port stop 0 + testpmd> rx_offload disable per_port udp_cksum 0 + testpmd> rx_offload get configuration 0 + Rx Offloading Configuration of port 0 : + Port : IPV4_CKSUM TCP_CKSUM CRC_STRIP + Queue[ 0] : IPV4_CKSUM TCP_CKSUM CRC_STRIP + Queue[ 1] : IPV4_CKSUM TCP_CKSUM CRC_STRIP + Queue[ 2] : IPV4_CKSUM TCP_CKSUM CRC_STRIP + Queue[ 3] : IPV4_CKSUM TCP_CKSUM CRC_STRIP + testpmd> port start 0 + + The port can start normally. + Try this step with "tcp_cksum/ipv4_cksum", the port can start normally. + +3. Enable the rx cksum per_port, all the configuration can be set successfully. + The port can start normally. + +Test case: rx_offload set other capability per_port and per_queue +================================================================= + +1. Check all the rx_offload capability:: + + testpmd> rx_offload get capability 0 + Rx Offloading Capabilities of port 0 : + Per Queue : VLAN_STRIP + Per Port : IPV4_CKSUM UDP_CKSUM TCP_CKSUM TCP_LRO MACSEC_STRIP VLAN_FILTER VLAN_EXTEND JUMBO_FRAME CRC_STRIP SCATTER SECURITY + +2. Enable and disable other capability per_port and per_queue. + Check the configuration and the port can start normally. + +Test case: tx_offload set vlan_insert per_port +============================================== + +1. Start testpmd:: + + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0x6 -n 4 -- -i --rxq=4 --txq=4 --port-topology=loop + testpmd> set fwd txonly + testpmd> set verbose 1 + testpmd> tx_offload get capability 0 + Tx Offloading Capabilities of port 0 : + Per Queue : + Per Port : VLAN_INSERT IPV4_CKSUM UDP_CKSUM TCP_CKSUM SCTP_CKSUM TCP_TSO MACSEC_INSERT SECURITY + testpmd> tx_offload get configuration 0 + Tx Offloading Configuration of port 0 : + Port : + Queue[ 0] : + Queue[ 1] : + Queue[ 2] : + Queue[ 3] : + testpmd> start + + Port1 received the packet:: + + # tcpdump -i ens786f1 -e -n -v -x + 16:27:19.689870 90:e2:ba:ac:9b:44 > 02:00:00:00:00:00, ethertype IPv4 (0x0800), length 64: (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 50) + 192.168.0.1.1024 > 192.168.0.2.1024: UDP, length 22 + 0x0000: 4500 0032 0000 0000 4011 f967 c0a8 0001 + 0x0010: c0a8 0002 0400 0400 001e 0000 0000 0000 + 0x0020: 0000 0000 0000 0000 0000 0000 0000 0000 + 0x0030: 0000 + + There is no vlan infomation. + +2. Enable vlan_insert per_port:: + + testpmd> port stop 0 + testpmd> tx_offload enable per_port vlan_insert 0 + testpmd> port start 0 + Configuring Port 0 (socket 0) + Port 0: 90:E2:BA:AC:9B:44 + Checking link statuses... + Done + testpmd> tx_offload get configuration 0 + Tx Offloading Configuration of port 0 : + Port : VLAN_INSERT + Queue[ 0] : VLAN_INSERT + Queue[ 1] : VLAN_INSERT + Queue[ 2] : VLAN_INSERT + Queue[ 3] : VLAN_INSERT + testpmd> start + 16:16:19.437534 90:e2:ba:ac:9b:44 > 02:00:00:00:00:00, ethertype 802.1Q (0x8100), length 68: vlan 0, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 50) + 192.168.0.1.1024 > 192.168.0.2.1024: UDP, length 22 + 0x0000: 0000 0800 4500 0032 0000 0000 4011 f967 + 0x0010: c0a8 0001 c0a8 0002 0400 0400 001e 0000 + 0x0020: 0000 0000 0000 0000 0000 0000 0000 0000 + 0x0030: 0000 0000 0000 + + There is vlan ID in the received packet. + The vlan_insert take effect. + if with fortville NIC, there is not vlan ID in the received packet. + +3. Set the insert vlan ID:: + + testpmd> tx_vlan set 0 1 + + Receive the packet:: + + 16:34:45.348625 90:e2:ba:ac:9b:44 > 02:00:00:00:00:00, ethertype 802.1Q (0x8100), length 68: vlan 1, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 50) + 192.168.0.1.1024 > 192.168.0.2.1024: UDP, length 22 + 0x0000: 0001 0800 4500 0032 0000 0000 4011 f967 + 0x0010: c0a8 0001 c0a8 0002 0400 0400 001e 0000 + 0x0020: 0000 0000 0000 0000 0000 0000 0000 0000 + 0x0030: 0000 0000 0000 + + The old command can take effect. + +4. Disable vlan_insert per_port:: + + testpmd> tx_offload disable per_port vlan_insert 0 + testpmd> port start 0 + Configuring Port 0 (socket 0) + Port 0: 90:E2:BA:AC:9B:44 + Checking link statuses... + Done + testpmd> tx_offload get configuration 0 + Tx Offloading Configuration of port 0 : + Port : + Queue[ 0] : + Queue[ 1] : + Queue[ 2] : + Queue[ 3] : + testpmd> start + 16:36:07.512453 90:e2:ba:ac:9b:44 > 02:00:00:00:00:00, ethertype IPv4 (0x0800), length 64: (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 50) + 192.168.0.1.1024 > 192.168.0.2.1024: UDP, length 22 + 0x0000: 4500 0032 0000 0000 4011 f967 c0a8 0001 + 0x0010: c0a8 0002 0400 0400 001e 0000 0000 0000 + 0x0020: 0000 0000 0000 0000 0000 0000 0000 0000 + 0x0030: 0000 + + There is no vlan infomation in the received packet. + The disable command take effect. + +Test case: tx_offload failed to set vlan_insert per_queue +========================================================= + +1. Start testpmd with "--tx-offloads":: + + ./testpmd -c 0xf -n 4 -- -i --rxq=4 --txq=4 --port-topology=loop --tx-offloads=0x0001 + testpmd> tx_offload get capability 0 + Tx Offloading Capabilities of port 0 : + Per Queue : + Per Port : VLAN_INSERT IPV4_CKSUM UDP_CKSUM TCP_CKSUM SCTP_CKSUM TCP_TSO MACSEC_INSERT SECURITY + testpmd> tx_offload get configuration 0 + Tx Offloading Configuration of port 0 : + Port : VLAN_INSERT + Queue[ 0] : VLAN_INSERT + Queue[ 1] : VLAN_INSERT + Queue[ 2] : VLAN_INSERT + Queue[ 3] : VLAN_INSERT + +2. Disable vlan_insert per_queue:: + + testpmd> port stop 0 + testpmd> tx_offload disable per_queue vlan_insert 0 1 + testpmd> tx_offload get configuration 0 + Tx Offloading Configuration of port 0 : + Port : VLAN_INSERT + Queue[ 0] : VLAN_INSERT + Queue[ 1] : + Queue[ 2] : VLAN_INSERT + Queue[ 3] : VLAN_INSERT + testpmd> port start 0 + Configuring Port 0 (socket 0) + ixgbe_dev_tx_queue_setup(): 0xfd39c0: Tx queue offloads 0x1 don't match port offloads 0x0 or supported queue offloads 0x0 or supported port offloads 0x2203f + Fail to configure port 0 tx queues + + The per_port capability can't be disabled by per_queue command. + +3. Disable vlan_insert per_port:: + + testpmd> tx_offload disable per_port vlan_insert 0 + testpmd> tx_offload get configuration 0 + Tx Offloading Configuration of port 0 : + Port : + Queue[ 0] : + Queue[ 1] : + Queue[ 2] : + Queue[ 3] : + testpmd> port start 0 + Configuring Port 0 (socket 0) + Port 0: 90:E2:BA:AC:9B:44 + Checking link statuses... + Done + + The per_port capability can be disabled by per_port command. + +4. Enable vlan_insert per_queue:: + + testpmd> port stop 0 + testpmd> tx_offload enable per_queue vlan_insert 0 1 + testpmd> tx_offload get configuration 0 + Tx Offloading Configuration of port 0 : + Port : + Queue[ 0] : + Queue[ 1] : VLAN_INSERT + Queue[ 2] : + Queue[ 3] : + testpmd> port start 0 + Configuring Port 0 (socket 0) + ixgbe_dev_tx_queue_setup(): 0xfd39c0: Tx queue offloads 0x1 don't match port offloads 0x0 or supported queue offloads 0x0 or supported port offloads 0x2203f + Fail to configure port 0 tx queues + + The per_port capability can't be enabled by per_queue command. + +5. Enable vlan_insert per_port:: + + testpmd> tx_offload enable per_port vlan_insert 0 + testpmd> tx_offload get configuration 0 + Tx Offloading Configuration of port 0 : + Port : VLAN_INSERT + Queue[ 0] : VLAN_INSERT + Queue[ 1] : VLAN_INSERT + Queue[ 2] : VLAN_INSERT + Queue[ 3] : VLAN_INSERT + testpmd> port start 0 + Configuring Port 0 (socket 0) + Port 0: 90:E2:BA:AC:9B:44 + Checking link statuses... + Done + + The per_port capability can be enabled by per_port command. + +Test case: tx_offload set other capability per_port +=================================================== + +1. Check all the tx_offload capability:: + + testpmd> tx_offload get capability 0 + Tx Offloading Capabilities of port 0 : + Per Queue : + Per Port : VLAN_INSERT IPV4_CKSUM UDP_CKSUM TCP_CKSUM SCTP_CKSUM TCP_TSO MACSEC_INSERT SECURITY + + There is not per_queue capability in tx_offload. + +2. Enable and disable other capability per_port. + Check the configuration and the port can start normally. -- 2.5.0