[dpdk-dev] [PATCH v2 12/12] virtio: add Tso support
Olivier Matz
olivier.matz at 6wind.com
Tue Oct 18 16:07:03 CEST 2016
Hi Stephen,
On 10/14/2016 01:33 AM, Stephen Hemminger wrote:
> On Thu, 13 Oct 2016 16:18:39 +0800
> Yuanhan Liu <yuanhan.liu at linux.intel.com> wrote:
>
>> On Mon, Oct 03, 2016 at 11:00:23AM +0200, Olivier Matz wrote:
>>> +/* When doing TSO, the IP length is not included in the pseudo header
>>> + * checksum of the packet given to the PMD, but for virtio it is
>>> + * expected.
>>> + */
>>> +static void
>>> +virtio_tso_fix_cksum(struct rte_mbuf *m)
>>> +{
>>> + /* common case: header is not fragmented */
>>> + if (likely(rte_pktmbuf_data_len(m) >= m->l2_len + m->l3_len +
>>> + m->l4_len)) {
>> ...
>>> + /* replace it in the packet */
>>> + th->cksum = new_cksum;
>>> + } else {
>> ...
>>> + /* replace it in the packet */
>>> + *rte_pktmbuf_mtod_offset(m, uint8_t *,
>>> + m->l2_len + m->l3_len + 16) = new_cksum.u8[0];
>>> + *rte_pktmbuf_mtod_offset(m, uint8_t *,
>>> + m->l2_len + m->l3_len + 17) = new_cksum.u8[1];
>>> + }
>>
>> The tcp header will always be in the mbuf, right? Otherwise, you can't
>> update the cksum field here. What's the point of introducing the "else
>> clause" then?
>>
>> --yliu
>
> You need to check the reference count before updating any data in mbuf.
>
That's correct, I'll fix that.
Thanks for the comment,
Olivier
More information about the dev
mailing list