From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wi0-f169.google.com (mail-wi0-f169.google.com [209.85.212.169]) by dpdk.org (Postfix) with ESMTP id B2CF87F0C for ; Thu, 20 Nov 2014 23:48:30 +0100 (CET) Received: by mail-wi0-f169.google.com with SMTP id r20so1077600wiv.2 for ; Thu, 20 Nov 2014 14:59:02 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-type:content-transfer-encoding; bh=HqeyB4+DFbkO3yFTXsiKxipKIFbuvT8zimp6W0kjR7g=; b=doUHmhikX+HX0lL4DWvsOtIBMeoDp/TQp839vvAjm229CXj7WFjANP0el1VYX16ckN hehCnukFTnPjT6aFh7kx0TAL53qNir8FnQr1whEtrd0dPplflb+g4ero5NRsDsWpithf Q+LH3yHpHOWjygM5s/9F5jTGnX8ojUJpuZ8QN44BEYKiDBwaOuPycdLU01dpvk+vxUvn xn15YviY4dT8CIrzvAwdOYfU5xrKniVt/QyPkniQB/GiDkO0E2rJRnOVL5ENX+oAZvOM 56G94LXwMd9oaWjTDZTgDrRSzfQ+n8WnmJFmC313vCajlOfy2+YeSJ8nC+sx8OaNxRFo IX9w== X-Gm-Message-State: ALoCoQm4OVAAdpBwtyfp463lTNS2TCJbqe0quSR7uAeVJ/MgQlwK+4o8jjhFvcW6eA/d44jPNd7q X-Received: by 10.180.87.72 with SMTP id v8mr2234050wiz.22.1416524342508; Thu, 20 Nov 2014 14:59:02 -0800 (PST) Received: from glumotte.dev.6wind.com (guy78-3-82-239-227-177.fbx.proxad.net. [82.239.227.177]) by mx.google.com with ESMTPSA id cz3sm5380581wjb.23.2014.11.20.14.59.01 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 20 Nov 2014 14:59:01 -0800 (PST) From: Olivier Matz To: dev@dpdk.org Date: Thu, 20 Nov 2014 23:58:42 +0100 Message-Id: <1416524335-22753-1-git-send-email-olivier.matz@6wind.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1415984609-2484-1-git-send-email-olivier.matz@6wind.com> References: <1415984609-2484-1-git-send-email-olivier.matz@6wind.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: jigsaw@gmail.com Subject: [dpdk-dev] [PATCH v3 00/13] add TSO support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 Nov 2014 22:48:30 -0000 This series add TSO support in ixgbe DPDK driver. This is a rework of the series sent earlier this week [1]. This work is based on another version [2] that was posted several months ago and which included a mbuf rework that is now in mainline. Changes in v3: - indicate that rte_get_rx_ol_flag_name() and rte_get_tx_ol_flag_name() should be kept synchronized with flags definition - use sizeof() when appropriate in rte_raw_cksum() - remove double semicolon in ixgbe driver - reorder tx ol_flags as requested by Thomas - add missing copyrights when big modifications are made - enhance the help of tx_cksum command in testpmd - enhance the description of csumonly (comments) Changes in v2: - move rte_get_rx_ol_flag_name() and rte_get_tx_ol_flag_name() in rte_mbuf.c, and fix comments - use IGB_TX_OFFLOAD_MASK and IXGBE_TX_OFFLOAD_MASK to replace PKT_TX_OFFLOAD_MASK - fix inner_l2_len and inner_l3_len bitfields: use uint64_t instead of uint16_t - replace assignation of l2_len and l3_len by assignation of tx_offload. It now includes inner_l2_len and inner_l3_len at the same time. - introduce a new cksum api in rte_ip.h following discussion with Konstantin - reorder commits to have all TSO commits at the end of the series - use ol_flags for phdr checksum calculation (this now matches ixgbe API: standard pseudo hdr cksum for TCP cksum offload, pseudo hdr cksum without ip paylen for TSO). This will probably be changed with a dev_prep_tx() like function for 2.0 release. - rebase on latest head This series first fixes some bugs that were discovered during the development, adds some changes to the mbuf API (new l4_len and tso_segsz fields), adds TSO support in ixgbe, reworks testpmd csum forward engine, and finally adds TSO support in testpmd so it can be validated. The new fields added in mbuf try to be generic enough to apply to other hardware in the future. To delegate the TCP segmentation to the hardware, the user has to: - set the PKT_TX_TCP_SEG flag in mbuf->ol_flags (this flag implies PKT_TX_TCP_CKSUM) - if it's IPv4, set the PKT_TX_IP_CKSUM flag and write the IP checksum to 0 in the packet - fill the mbuf offload information: l2_len, l3_len, l4_len, tso_segsz - calculate the pseudo header checksum and set it in the TCP header, as required when doing hardware TCP checksum offload The test report will be added as an answer to this cover letter and could be linked in the concerned commits. [1] http://dpdk.org/ml/archives/dev/2014-November/007953.html [2] http://dpdk.org/ml/archives/dev/2014-May/002537.html Olivier Matz (13): igb/ixgbe: fix IP checksum calculation ixgbe: fix remaining pkt_flags variable size to 64 bits mbuf: reorder tx ol_flags mbuf: add help about TX checksum flags mbuf: remove too specific PKT_TX_OFFLOAD_MASK definition mbuf: add functions to get the name of an ol_flag testpmd: fix use of offload flags in testpmd testpmd: rework csum forward engine mbuf: introduce new checksum API mbuf: generic support for TCP segmentation offload ixgbe: support TCP segmentation offload testpmd: support TSO in csum forward engine testpmd: add a verbose mode csum forward engine app/test-pmd/cmdline.c | 248 +++++++++-- app/test-pmd/config.c | 17 +- app/test-pmd/csumonly.c | 814 ++++++++++++++++-------------------- app/test-pmd/macfwd.c | 5 +- app/test-pmd/macswap.c | 5 +- app/test-pmd/rxonly.c | 36 +- app/test-pmd/testpmd.c | 2 +- app/test-pmd/testpmd.h | 24 +- app/test-pmd/txonly.c | 9 +- examples/ipv4_multicast/main.c | 2 +- lib/librte_mbuf/rte_mbuf.c | 49 +++ lib/librte_mbuf/rte_mbuf.h | 102 +++-- lib/librte_net/rte_ip.h | 208 +++++++++ lib/librte_pmd_e1000/igb_rxtx.c | 21 +- lib/librte_pmd_ixgbe/ixgbe_ethdev.c | 3 +- lib/librte_pmd_ixgbe/ixgbe_rxtx.c | 179 +++++--- lib/librte_pmd_ixgbe/ixgbe_rxtx.h | 19 +- 17 files changed, 1094 insertions(+), 649 deletions(-) -- 2.1.0