Bug ID 1181
Summary [DPDK-23.03]loopback_virtio_user_server_mode_cbdma: testpmd can't loop packets after start dpdk-pdump app Immediately
Product DPDK
Version 22.03
Hardware All
OS All
Status UNCONFIRMED
Severity normal
Priority Normal
Component testpmd
Assignee dev@dpdk.org
Reporter weix.ling@intel.com
Target Milestone ---

[Environment]
DPDK version: Use make showversion or for a non-released version: git remote -v
&& git show-ref --heads
 23.03.0-rc2
Other software versions: N/A
OS: Ubuntu 22.04.1 LTS/Linux 5.15.45-051545-generic
Compiler: gcc version 11.3.0 (Ubuntu 11.3.0-1ubuntu1~22.04)
Hardware platform: Intel(R) Xeon(R) Platinum 8280M CPU @ 2.70GHz
NIC hardware:  N/A
NIC firmware: N/A

[Test Setup]
Steps to reproduce
List the steps to reproduce the issue.

1.Bind 1 CBDMA channel to vfio-pci, then start vhost-user as back-end: 

dpdk-devbind.py -b vfio-pci 0000:80:04.0

x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 28-36 -n 4 -a 0000:80:04.0
--file-prefix=vhost   \--vdev
'eth_vhost0,iface=vhost-net0,queues=8,client=1,\dmas=[txq0@0000:80:04.0;txq1@0000:80:04.0;txq2@0000:80:04.0;txq3@0000:80:04.0;txq4@0000:80:04.0;txq5@0000:80:04.0;rxq2@0000:80:04.0;rxq3@0000:80:04.0;rxq4@0000:80:04.0;rxq5@0000:80:04.0;rxq6@0000:80:04.0;rxq7@0000:80:04.0]'--iova=va
-- -i --nb-cores=4 --rxq=8 --txq=8 --txd=1024 --rxd=1024

2.Start virtio-user as front-end:

x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 38-42 -n 4 
--file-prefix=virtio-user0 --no-pci  
\--vdev=net_virtio_user0,mac=00:11:22:33:44:10,path=./vhost-net0,queues=8,mrg_rxbuf=1,in_order=1,packed_vq=1,server=1
\-- -i --nb-cores=4 --rxq=8 --txq=8 --txd=1024 --rxd=1024
testpmd>set fwd csum
testpmd>start

3.Start dpdk-pdump to capture packets:

x86_64-native-linuxapp-gcc/app/dpdk-pdump  -v --file-prefix=virtio-user0 -- \
--pdump 
'device_id=net_virtio_user0,queue=0,rx-dev=/root/dpdk/pdump-rx-q0.pcap,mbuf-size=8000'
--pdump  \
'device_id=net_virtio_user0,queue=1,rx-dev=/root/dpdk/pdump-rx-q1.pcap,mbuf-size=8000'

4.Set forwarding mode and send packets from vhost-user(execute this step must
immediately, we use the automation script to do, it can be reproduced, and if I
add time.sleep(1) before this step, it works well): 

testpmd>set fwd mac
testpmd>set txpkts 64,64,64,2000,2000,2000 
testpmd>set burst 1 
testpmd>start tx_first 1

5.Execute the following command to check the front-end can receive the packets:

testpmd>show port stats 0

Show the output from the previous commands.

testpmd> show port stats 0  
 ######################## NIC statistics for port 0  ########################
  RX-packets: 0          RX-missed: 0          RX-bytes:  0
  RX-errors: 0
  RX-nombuf:  0
  TX-packets: 0          TX-errors: 0          TX-bytes:  0 

  Throughput (since last show)
  Rx-pps:            0          Rx-bps:            0
  Tx-pps:            0          Tx-bps:            0
  ############################################################################

testpmd> show port stats 0  
  ######################## NIC statistics for port 0  ########################
  RX-packets: 0          RX-missed: 0          RX-bytes:  0
  RX-errors: 0
  RX-nombuf:  0
  TX-packets: 0          TX-errors: 0          TX-bytes:  0  

  Throughput (since last show)
  Rx-pps:            0          Rx-bps:            0
  Tx-pps:            0          Tx-bps:            0
  ############################################################################

[Expected Result
Explain what is the expected result in text or as an example output:

Packets can loop in 2 testpmds.

testpmd> show port stats 0  
######################## NIC statistics for port 0  ########################
  RX-packets: 46956447   RX-missed: 0          RX-bytes:  290754319824
  RX-errors: 0
  RX-nombuf:  0
  TX-packets: 46956447   TX-errors: 0          TX-bytes:  290754319824 

  Throughput (since last show)
  Rx-pps:       394554          Rx-bps:  19544669232
  Tx-pps:       394554          Tx-bps:  19544669232
  ############################################################################  

testpmd> show port stats 0  
  ######################## NIC statistics for port 0  ########################
  RX-packets: 47551390   RX-missed: 0          RX-bytes:  294438206880
  RX-errors: 0
  RX-nombuf:  0
  TX-packets: 47551390   TX-errors: 0          TX-bytes:  294438206880  

  Throughput (since last show)
  Rx-pps:       395181          Rx-bps:  19575708200
  Tx-pps:       395181          Tx-bps:  19575708200
  ############################################################################
Regression
Is this issue a regression: (Y/N) Y

Version the regression was introduced: Specify git id if known.

0fd1386c30c3ad9365d7fdd2829bf7cb2e1b9dff is the first bad commit
commit 0fd1386c30c3ad9365d7fdd2829bf7cb2e1b9dff
Author: Stephen Hemminger <stephen@networkplumber.org>
Date:   Fri Feb 3 11:14:09 2023 -0800

    app/testpmd: cleanup cleanly from signal

    Do a clean shutdown of testpmd when a signal is received; instead of
    having testpmd kill itself.  This fixes the problem where a signal could
    be received in the middle of a PMD and then the signal handler would
    call PMD's close routine leading to locking problems.

    The cmdline structure no longer needs to be global it can
    just be local to the prompt() function.

    An added benefit is it gets rid of some Windows specific code.

    Fixes: d9a191a00e81 ("app/testpmd: fix quitting in container")
    Cc: stable@dpdk.org

    Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
    Acked-by: Ferruh Yigit <ferruh.yigit@amd.com>

app/test-pmd/cmdline.c | 29 ++++++++-----------
app/test-pmd/testpmd.c | 77 +++++++++++++++++++++++---------------------------
app/test-pmd/testpmd.h |  1 +
3 files changed, 48 insertions, 59 deletions
          


You are receiving this mail because: