All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Monjalon <thomas.monjalon@6wind.com>
To: Jijiang Liu <jijiang.liu@intel.com>
Cc: dev@dpdk.org, "Michael S. Tsirkin" <mst@redhat.com>
Subject: Re: [PATCH v3 6/8] driver/virtio:enqueue vhost TX offload
Date: Wed, 04 Nov 2015 12:17:40 +0100	[thread overview]
Message-ID: <2611781.I9AKvK5K3K@xps13> (raw)
In-Reply-To: <1446634456-413-7-git-send-email-jijiang.liu@intel.com>

2015-11-04 18:54, Jijiang Liu:
> +       /* if vhost TX checksum offload is required */
> +       if (m->ol_flags & PKT_TX_IP_CKSUM) {
> +               hdr->csum_start = m->l2_len;
> +               hdr->csum_offset = offsetof(struct ipv4_hdr, hdr_checksum);
> +       } else if (m->ol_flags & PKT_TX_L4_MASK) {
> +               hdr->csum_start = m->l2_len + m->l3_len;
> +               switch (m->ol_flags & PKT_TX_L4_MASK) {
> +               case PKT_TX_TCP_CKSUM:
> +                       hdr->csum_offset = offsetof(struct tcp_hdr, cksum);
> +                       break;
> +               case PKT_TX_UDP_CKSUM:
> +                       hdr->csum_offset = offsetof(struct udp_hdr,
> +                                                       dgram_cksum);
> +                       break;
> +               case PKT_TX_SCTP_CKSUM:
> +                       hdr->csum_offset = offsetof(struct sctp_hdr, cksum);
> +                       break;
> +               default:
> +                       break;
> +               }

The header checksum to offload is deduced from csum_offset.
Your vhost implementation do some parsing to deduce it:

> +	parse_ethernet(m, &l4_proto, &l4_hdr);
> +	if (hdr->flags == VIRTIO_NET_HDR_F_NEEDS_CSUM) {
> +		if ((hdr->csum_start == m->l2_len) &&
> +			(hdr->csum_offset == offsetof(struct ipv4_hdr,
> +						hdr_checksum)))
> +			m->ol_flags |= PKT_TX_IP_CKSUM;
> +		else if (hdr->csum_start == (m->l2_len + m->l3_len)) {
> +			switch (hdr->csum_offset) {
> +			case (offsetof(struct tcp_hdr, cksum)):
> +				if (l4_proto == IPPROTO_TCP)
> +					m->ol_flags |= PKT_TX_TCP_CKSUM;
> +				break;
> +			case (offsetof(struct udp_hdr, dgram_cksum)):
> +				if (l4_proto == IPPROTO_UDP)
> +					m->ol_flags |= PKT_TX_UDP_CKSUM;
> +				break;
> +			case (offsetof(struct sctp_hdr, cksum)):
> +				if (l4_proto == IPPROTO_SCTP)
> +					m->ol_flags |= PKT_TX_SCTP_CKSUM;
> +				break;
> +			default:
> +				break;
> +			}
> +		}

The kernel doesn't work this way.
Please could you check that your virtio implementation works with a
vanilla Linux with or without vhost?
Thanks

  reply	other threads:[~2015-11-04 11:18 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-04 10:54 [PATCH v3 0/8] add vhost TX offload support Jijiang Liu
2015-11-04 10:54 ` [PATCH v3 1/8] driver/virtio:add virtual addr for virtio net header Jijiang Liu
2015-11-04 10:54 ` [PATCH v3 2/8] driver/virtio: record virtual address of " Jijiang Liu
2015-11-04 10:54 ` [PATCH v3 3/8] driver/virtio:add vhost TX checksum support capability in virtio-net Jijiang Liu
2015-11-04 10:54 ` [PATCH v3 4/8] driver/virtio:fill virtio device info for TX offload Jijiang Liu
2015-11-04 10:54 ` [PATCH v3 5/8] driver/virtio:enqueue vhost " Jijiang Liu
2015-11-04 10:54 ` [PATCH v3 6/8] " Jijiang Liu
2015-11-04 11:17   ` Thomas Monjalon [this message]
2015-11-04 12:52     ` Liu, Jijiang
2015-11-04 13:18       ` Thomas Monjalon
2015-11-05  8:49         ` Xu, Qian Q
2015-11-05  9:02           ` Thomas Monjalon
2015-11-05 10:44             ` Xu, Qian Q
2015-11-06  8:24               ` Xu, Qian Q
2015-11-04 13:06     ` Liu, Jijiang
2015-11-04 13:08     ` Liu, Jijiang
2015-11-04 13:15       ` Liu, Jijiang
2015-11-04 10:54 ` [PATCH v3 7/8] lib/librte_vhost:dequeue " Jijiang Liu
2015-11-09  4:00   ` Yuanhan Liu
2015-11-09  5:27     ` Liu, Jijiang
2015-11-04 10:54 ` [PATCH v3 8/8] examples/vhost:support TX offload in vhost sample Jijiang Liu
2015-11-09  4:17   ` Yuanhan Liu
2015-11-09  8:17     ` Liu, Jijiang
2015-11-09  8:51       ` Yuanhan Liu
2015-11-09  8:18     ` Liu, Jijiang
2015-11-11  6:47     ` Liu, Jijiang
2015-11-04 11:14 ` [PATCH v3 0/8] add vhost TX offload support Tan, Jianfeng
2015-11-05 14:24   ` Glynn, Michael J
  -- strict thread matches above, loose matches on Subject: below --
2015-11-04  8:35 Jijiang Liu
2015-11-04  8:35 ` [PATCH v3 6/8] driver/virtio:enqueue vhost TX offload Jijiang Liu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2611781.I9AKvK5K3K@xps13 \
    --to=thomas.monjalon@6wind.com \
    --cc=dev@dpdk.org \
    --cc=jijiang.liu@intel.com \
    --cc=mst@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.