Hi Heqing,

Thanks for pointing out the Rx cksum test case.
I was looking for usage of IXGBE_RXDADV_ERR_SHIFT and
IXGBE_RXDADV_ERR_MASK without any result, therefore I assumed these 2
fields are not checked.

So it turns out that the implementation of Rx cksum is in routine
rx_desc_error_to_pkt_flags of ixgbe_rxtx.c. (Correct me if I'm wrong).
This routine, however, doesn't comply with the datasheet.

See end of page 324 of 82599 datasheet:

>>L4E (10) ? L4 integrity error is valid only when the L4I bit in the Status 
>>field is set. It is
>>active if L4 processing fails (TCP checksum or UDP checksum or SCTP CRC).

Also beginning of section 7.1.11 confirms that the error bits are
valid when status bits (IPCS/L4CS) are turned on.
To be compliant with datasheet, the driver must check respective
status bits before checking error bits in receive descriptor.

thx &
rgds,
-Qinglai


On Tue, Oct 8, 2013 at 9:59 AM, Zhu, Heqing <heqing.zhu at intel.com> wrote:
> Hi Qinglai,
>
>>> Besides, as you mentioned, the ixgbe driver doesn't leverage the hardware 
>>> receive checksum offloading at all.
>
> On the Rx side, ixgbe driver support the Rx checksum validation via hardware 
> offload. There is a simple example @ DPDK\app\test-pmd\csumonly.c to check 
> IPv4/L4 checksum error~
>
>                 /* Update the L3/L4 checksum error packet count  */
>                 rx_bad_ip_csum += (uint16_t) ((pkt_ol_flags & 
> PKT_RX_IP_CKSUM_BAD) != 0);
>                 rx_bad_l4_csum += (uint16_t) ((pkt_ol_flags & 
> PKT_RX_L4_CKSUM_BAD) != 0);
>
> -----Original Message-----
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of jigsaw
> Sent: Saturday, October 05, 2013 3:11 AM
> To: Venkatesan, Venky
> Cc: dev at dpdk.org
> Subject: Re: [dpdk-dev] [PATCH] Request for comments on ixgbe TSO support
>
> Hi Stephen,
>
> Thanks for showing a bigger picture.
>
> GSO is quite big implementation, that I think it won't be easily ported to 
> DPDK. The mbuf needs to be equipped with many fields from skb to be able to 
> deal with GSO.
> Do you have the plan to port GSO to DPDK, or you would like to keep GSO in 
> scope of virtio?
>
> Regarding checksum flags, actually I was also thinking of extending ol_flags 
> but then I gave it up coz I was worried about the size of mbuf.
> My current patch has to push some work to user, due to the fact that mbuf 
> delivers too few info (such as L2 and L3 protocol details).
>
> Besides, as you mentioned, the ixgbe driver doesn't leverage the hardware 
> receive checksum offloading at all. And if this is to be supported, the 
> checksum flag need further extension.
> (On the other hand, TSO doesn't care about receive checksum offloading).
> Again, do you have plans to extend cksum flags so that virio feels more 
> comfortable with DPDK?
>
> Hi Venky,
>
> I can either make the commit now as is, or wait till the cksum flags 
> extension is in place. If Stephen (or somebody else) has the plan for better 
> support for cksum offloading or GSO, it is perhaps better to implement TSO on 
> top of that.
>
> BTW, I have another small question. Current TSO patch offloads the TCP/IP 
> pseudo cksum work to user. Do you think DPDK could provide some utility 
> functions for TCP/IPv4/IPv6 pseudo cksum calculation and updating?
>
> thx &
> rgds,
> -Qinglai
>
>
> On Fri, Oct 4, 2013 at 9:38 PM, Venkatesan, Venky <venky.venkatesan at 
> intel.com> wrote:
>> Stephen,
>>
>> Agree on the checksum flag definition. I'm presuming that we should do this 
>> on the L3 and L4 checksums separately (that ol_flags field is another one 
>> that needs extension in the mbuf).
>>
>> Regards,
>> -Venky
>>
>>
>> -----Original Message-----
>> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Stephen Hemminger
>> Sent: Friday, October 04, 2013 11:23 AM
>> To: jigsaw
>> Cc: dev at dpdk.org
>> Subject: Re: [dpdk-dev] [PATCH] Request for comments on ixgbe TSO
>> support
>>
>> On Fri, 4 Oct 2013 20:54:31 +0300
>> jigsaw <jigsaw at gmail.com> wrote:
>>
>>> Hi Stephen,
>>>
>>>
>>> >>This will work for local generated packets but overlapping existing field 
>>> >>won't work well for forwarding.
>>> So adding a new mss field in mbuf could be the way out? or I
>>> misunderstand something.
>>>
>>> >> What we want to be able to do is to take offload (jumbo) packets
>>> >> in with from virtio
>>> Sorry I don't understand why TSO is connected to virtio. Could you
>>> give more details here?
>>> Are you suggesting this TSO patch overlaps your work, or it should be
>>> based on your work?
>>
>> I am working on a better virtio driver. Already have lots more features 
>> working, and doing better offload support is planned.
>>
>> TSO is a subset of the more generic segment offload (GSO) on Linux.
>> With virtio is possible to receive GSO packets as well as send them.
>> This feature is negotiated between guest and host.
>>
>> The idea is that between guests they can exchange jumbo (64K) packets even 
>> with a smaller MTU. This helps in many ways. One example is only a single 
>> route lookup is needed.
>>
>> Another issue is that the current DPDK model of offload flags for checksum 
>> is problematic.
>> It matches what is available in Intel hardware and is not easily 
>> generalizable to other devices.
>>
>> Current DPDK flag is checksum bad. I would like to change it to
>> checksum known good. Then drivers which dont' do checksum would leave
>> it 0, but if receive checksum is known good set it to 1.  Basically 1
>> means known good, and
>> 0 means unknown (or bad).  Higher level software can then do sw checksum if 
>> necessary.

Reply via email to