From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wi0-f172.google.com (mail-wi0-f172.google.com [209.85.212.172]) by dpdk.org (Postfix) with ESMTP id 874E57F2C for ; Wed, 12 Nov 2014 13:55:54 +0100 (CET) Received: by mail-wi0-f172.google.com with SMTP id bs8so4824625wib.5 for ; Wed, 12 Nov 2014 05:05:48 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to :cc:subject:references:in-reply-to:content-type :content-transfer-encoding; bh=4rFd5NDRuLzlXuUPO7Z/q9WOODq8nHlHdnYTc1br28I=; b=a4SL1ONCnjRc49ht3M9t070ys/m//Z4/JOlxaoabp2+BB98SYy+EpVlDMeaLcsRCeE LoPARJA5Zd7DYrWhZSMXZnT/uu0dTRUQWALleQo2J5sTLK76vY5DSamAMMZNxHYvwLtT FiopPQK91zVnsQylecfNpQ2/avlSzcPsztzE+A0r7ULytIHv+iRkcabDQ2MH85BkhNC7 ckllbYIj22PHNUFowXuuuwpSEBJyNe8vg1iuAjYgTvq98E3AjaJWNke6ekkLA0xjnDz5 v0p5MagbTRALVv6pYxxSFF8wwrimEX++dayjHRl6jOLcyVJuaBrwswmXqL35ZKlO6WpM c5SA== X-Gm-Message-State: ALoCoQmbR9NCkXH3yzv1jACx8E3CoFaKU/z23p+kPDFxUWJekfx32XSqiUe+QgcFyODRIaaGZGan X-Received: by 10.180.96.106 with SMTP id dr10mr49350374wib.70.1415797548702; Wed, 12 Nov 2014 05:05:48 -0800 (PST) Received: from [10.16.0.195] (guy78-3-82-239-227-177.fbx.proxad.net. [82.239.227.177]) by mx.google.com with ESMTPSA id q9sm21593049wix.6.2014.11.12.05.05.47 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 12 Nov 2014 05:05:48 -0800 (PST) Message-ID: <54635B2B.5040603@6wind.com> Date: Wed, 12 Nov 2014 14:05:47 +0100 From: Olivier MATZ User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Icedove/24.5.0 MIME-Version: 1.0 To: "Ananyev, Konstantin" , Yong Wang , "Liu, Jijiang" References: <1414376006-31402-1-git-send-email-jijiang.liu@intel.com> <1414376006-31402-11-git-send-email-jijiang.liu@intel.com> <54588BF7.309@6wind.com> <1ED644BD7E0A5F4091CF203DAFB8E4CC01D8510E@SHSMSX101.ccr.corp.intel.com>, <5459FBB2.1040408@6wind.com> <0c654d2c0d304b45a40af6ca38b70adf@EX13-MBX-026.vmware.com> <545CFE56.60605@6wind.com> <2601191342CEEE43887BDE71AB977258213A38D2@IRSMSX105.ger.corp.intel.com> <5460E07F.6060303@6wind.com> <2601191342CEEE43887BDE71AB977258213A3F5F@IRSMSX105.ger.corp.intel.com> In-Reply-To: <2601191342CEEE43887BDE71AB977258213A3F5F@IRSMSX105.ger.corp.intel.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] [PATCH v8 10/10] app/testpmd:test VxLAN Tx checksum offload 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: Wed, 12 Nov 2014 12:55:55 -0000 Hi Konstantin, On 11/12/2014 10:55 AM, Ananyev, Konstantin wrote: >> From an API perspective, it looks a bit more complex to have to call >> dev_prep_tx() before sending the packets if they have been flagged >> for offload processing. But I admit I have no other argument. I'll be >> happy to have more comments from other people on the list. >> >> I'm sending a first version of the patchset now as it's ready, it does >> not take in account this comment, but I'm open to add it in a v2 if >> there is a consensus on this. >> >> Now, knowing that: >> - adding dev_prep_tx() will also concern hw checksum (TCP L4 checksum >> already requires to set the TCP pseudo header checksum), so adding >> this will change the API of an existing feature >> - TSO is a new feature expected for 1.8 (which should be out soon) >> >> Do you think we need to include this for 1.8 or can we postpone your >> proposition for after the 1.8 release? > > I'd say it would be good to have it done together with TSO feature. > About changing API: I think existing applications shouldn't be affected. > For existing PMDs/TX offloads we don't change any rules what need to be filled by the app. > We just add a new function that can do that for user. > If the app fills required manually (as all apps have to do now) it would keep working as expected. I agree, this proposition could work without changing the current applications. > If you feel like it is too much work for 1.8 timeframe - > can we at least move fix_tcp_phdr_cksum() out of TX PMD as a temporary measure? > Let say create a function get_ipv4_udptcp_checksum(struct rte_mbuf *m) (in librte_net ?). > It will calculate PSD checksum for both TSO and non-TSO case based on given mbuf flags/fields. > Then we can update testpmd/csumonly.c to use it. I'm not sure having get_ipv4_udptcp_checksum() in librte_net would help. The value we have to set in the TCP checksum field depends on the PMD (altought only ixgbe is supported now). So, it would require another parameter and a new PMD eth_ops... which looks very similar to dev_prep_tx() (except that dev_prep_tx() can be bulked). I think a stack will not be able to call get_udptcp_checksum(m ,port) because it does not know the physical port at the time the packet is built. Moreover, calling a function through a pointer is more efficient when bulked. So I think the dev_prep_tx() you initially describe is a better answer to the problem. I don't know what is the exact timeframe for 1.8, maybe Thomas can help on this? Depending on it, we have several options: - implement dev_prep_tx() for 1.8 in the TSO series: this implies that the community agrees on this new API. We need to check that it will be faster in a pipeline model (I think this is obvious) but also that it does not penalize the run-to-completion model: introducing another function dev_prep_tx() can result in duplicated tests in the driver (ex: test the offload flag values). - postpone dev_prep_tx() or similar to next version and push the current TSO patchset (including the comments done on the list). It does not modify the current offload API, it provides the TSO feature on ixgbe based on a similar API concept (set the TCP phdr cksum). The drawback is a potential performance loss when using a pipeline model. - another option that you may prefer is to bind the API behavior to ixgbe (for 1.8): we can ask the application to set the pseudo-header checksum without the IP len when doing TSO, as required by the ixgbe driver. Then, for next release, we can think about dev_prep_tx(). The drawback of this solution is that we may go back on this choice if the dev_prep_tx() approach is not validated by the community. Regards, Olivier