[dpdk-dev] [PATCH v8 10/10] app/testpmd:test VxLAN Tx checksum offload
Ananyev, Konstantin
konstantin.ananyev at intel.com
Wed Nov 12 15:39:28 CET 2014
> -----Original Message-----
> From: Olivier MATZ [mailto:olivier.matz at 6wind.com]
> Sent: Wednesday, November 12, 2014 1:06 PM
> To: Ananyev, Konstantin; Yong Wang; Liu, Jijiang
> Cc: dev at dpdk.org; Thomas Monjalon
> Subject: Re: [dpdk-dev] [PATCH v8 10/10] app/testpmd:test VxLAN Tx checksum offload
>
> 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 <portid> 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.
Yes I understand that it might not be applicable for non-Intel NICs.
Though I thought it is ok as a temporary measure as right now we
support these offloads for Intel NICs only.
Basically my thought was what you proposed as option 3 below.
Why common function in librte_net?
So people don't need to write their own each time.
Plus as I remember all 3 Intel NIC types (ixgbe/igb/i40e) we support have similar
requirements for what need to be set/calculated for these TX offloads.
So my thought was that having a common function might help to avoid code duplication in future,
If/when will implement dev_prep_tx().
>
> 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.
My vote would be for option 3 then.
Thanks
Konstantin
>
>
> Regards,
> Olivier
More information about the dev
mailing list