From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.droids-corp.org (zoll.droids-corp.org [94.23.50.67]) by dpdk.org (Postfix) with ESMTP id C67A12C17; Thu, 31 Aug 2017 15:48:45 +0200 (CEST) Received: from lfbn-1-18623-73.w90-103.abo.wanadoo.fr ([90.103.154.73] helo=droids-corp.org) by mail.droids-corp.org with esmtpsa (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1dnPvD-0001K2-Ef; Thu, 31 Aug 2017 15:54:16 +0200 Received: by droids-corp.org (sSMTP sendmail emulation); Thu, 31 Aug 2017 15:48:36 +0200 Date: Thu, 31 Aug 2017 15:48:36 +0200 From: Olivier MATZ To: dev@dpdk.org, yliu@fridaylinux.org, maxime.coquelin@redhat.com Cc: stephen@networkplumber.org, stable@dpdk.org Message-ID: <20170831134835.7z7f27jbw7cazriq@neon> References: <20170831134015.1383-1-olivier.matz@6wind.com> <20170831134015.1383-6-olivier.matz@6wind.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170831134015.1383-6-olivier.matz@6wind.com> User-Agent: NeoMutt/20170113 (1.7.2) Subject: Re: [dpdk-dev] [PATCH 5/9] net/virtio: fix mbuf port for simple Rx function X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Aug 2017 13:48:45 -0000 Validation: Platform description -------------------- guest (dpdk) +----------------+ | | | | | port0 | +----------------+ | | virtio | +----------------+ | tap0 | | | | | +----------------+ host (linux, vhost-net) Host configuration ------------------ Start qemu with: - a ne2k management interface to avoi any conflict with dpdk - a virtio net device, connected to a tap interface through vhost-net - mergeable buffers disabled /usr/bin/qemu-system-x86_64 -k fr -daemonize --enable-kvm -m 2G -cpu host \ -smp 3 -serial telnet::40564,server,nowait -serial null \ -qmp tcp::44340,server,nowait -monitor telnet::49229,server,nowait \ -device ne2k_pci,mac=de:ad:de:01:02:03,netdev=user.0,addr=03 \ -netdev user,id=user.0,hostfwd=tcp::34965-:22 \ -netdev type=tap,id=vhostnet0,script=no,vhost=on,queues=8 \ -device virtio-net-pci,mrg_rxbuf=off,netdev=vhostnet0,mq=on,vectors=17 \ -hda "${VM_PATH}/ubuntu-16.04-template.qcow2" \ -snapshot -vga none -display none Guest configuration ------------------- Apply a simple patch to display m->port in test-pmd/rxonly.c. --- a/app/test-pmd/rxonly.c +++ b/app/test-pmd/rxonly.c @@ -139,9 +139,9 @@ pkt_burst_receive(struct fwd_stream *fs) print_ether_addr(" src=", ð_hdr->s_addr); print_ether_addr(" - dst=", ð_hdr->d_addr); - printf(" - type=0x%04x - length=%u - nb_segs=%d", + printf(" - type=0x%04x - length=%u - nb_segs=%d - port=%d", eth_type, (unsigned) mb->pkt_len, - (int)mb->nb_segs); + (int)mb->nb_segs, mb->port); if (ol_flags & PKT_RX_RSS_HASH) { printf(" - RSS hash=0x%x", (unsigned) mb->hash.rss); printf(" - RSS queue=0x%x",(unsigned) fs->rx_queue); Compile dpdk: cd dpdk.org make config T=x86_64-native-linuxapp-gcc sed -i 's,CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_INIT=n,CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_INIT=y,' build/.config sed -i 's,CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DRIVER=n,CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DRIVER=y,' build/.config make -j4 Prepare environment: mkdir -p /mnt/huge mount -t hugetlbfs nodev /mnt/huge echo 256 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages modprobe uio_pci_generic python usertools/dpdk-devbind.py -b uio_pci_generic 0000:00:02.0 ./build/app/testpmd -l 0,1 --log-level 7 -- --total-num-mbufs=16384 \ -i --port-topology=chained --disable-hw-vlan-filter \ --disable-hw-vlan-strip --txqflags=0xf01 ... PMD: virtio_update_rxtx_handler(): Using simple rx/tx path ... Configure testpmd: set fwd rxonly set verbose 1 start The first 128 received packets have **a wrong m->port**): src=00:00:00:00:00:00 - dst=FF:FF:FF:FF:FF:FF - type=0x0800 - length=42 - nb_segs=1 - port=255 - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x0 ol_flags: PKT_RX_L4_CKSUM_UNKNOWN PKT_RX_IP_CKSUM_UNKNOWN After 128 packets, it's ok: src=00:00:00:00:00:00 - dst=FF:FF:FF:FF:FF:FF - type=0x0800 - length=42 - nb_segs=1 - port=0 - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x0 ol_flags: PKT_RX_L4_CKSUM_UNKNOWN PKT_RX_IP_CKSUM_UNKNOWN This is not reproduced with --txqflags=0 (standard Rx path), or with the fix applied.