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 612E1FE5; Thu, 31 Aug 2017 15:51:24 +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 1dnPxn-0001KQ-0K; Thu, 31 Aug 2017 15:56:56 +0200 Received: by droids-corp.org (sSMTP sendmail emulation); Thu, 31 Aug 2017 15:51:16 +0200 Date: Thu, 31 Aug 2017 15:51:16 +0200 From: Olivier MATZ To: dev@dpdk.org, yliu@fridaylinux.org, maxime.coquelin@redhat.com Cc: stephen@networkplumber.org, stable@dpdk.org Message-ID: <20170831135115.gkzpe2lxcfskyb5v@neon> References: <20170831134015.1383-1-olivier.matz@6wind.com> <20170831134015.1383-10-olivier.matz@6wind.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170831134015.1383-10-olivier.matz@6wind.com> User-Agent: NeoMutt/20170113 (1.7.2) Subject: Re: [dpdk-dev] [PATCH 9/9] net/virtio: fix Rx handler when checksum is requested 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:51:24 -0000 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 ------------------- 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 \ --enable-rx-cksum --disable-hw-vlan-strip --txqflags=0 Without the fix, simple path is used for rx despite it does not support rx checksum: ... PMD: set_rxtx_funcs(): virtio: using simple Rx path on port 0 PMD: set_rxtx_funcs(): virtio: using standard Tx path on port 0 ... Configure testpmd: set fwd rxonly set verbose 1 start Without the fix, the received packets don't have the proper checksum flags (should be PKT_RX_L4_CKSUM_NONE): port 0/queue 0: received 1 packets src=1A:3F:FB:C6:FF:14 - dst=52:54:00:12:34:56 - type=0x0800 - length=74 - nb_segs=1 - sw ptype: L2_ETHER L3_IPV4 L4_TCP - l2_len=14 - l3_len=20 - l4_len=40 - Receive queue=0x0 ol_flags: PKT_RX_L4_CKSUM_UNKNOWN PKT_RX_IP_CKSUM_UNKNOWN With the fix, standard rx path is used and the flags are correct: ... PMD: set_rxtx_funcs(): virtio: using standard Rx path on port 0 PMD: set_rxtx_funcs(): virtio: using standard Tx path on port 0 ... port 0/queue 0: received 1 packets src=1A:3F:FB:C6:FF:14 - dst=52:54:00:12:34:56 - type=0x0800 - length=74 - nb_segs=1 - hw ptype: L2_ETHER L3_IPV4 L4_TCP - sw ptype: L2_ETHER L3_IPV4 L4_TCP - l2_len=14 - l3_len=20 - l4_len=40 - Receive queue=0x0 ol_flags: PKT_RX_L4_CKSUM_NONE PKT_RX_IP_CKSUM_UNKNOWN