From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id A1DCF5A58 for ; Tue, 1 Sep 2015 05:29:34 +0200 (CEST) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga102.fm.intel.com with ESMTP; 31 Aug 2015 20:29:33 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.17,446,1437462000"; d="scan'208";a="795457893" Received: from kmsmsx152.gar.corp.intel.com ([172.21.73.87]) by fmsmga002.fm.intel.com with ESMTP; 31 Aug 2015 20:29:34 -0700 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by KMSMSX152.gar.corp.intel.com (172.21.73.87) with Microsoft SMTP Server (TLS) id 14.3.224.2; Tue, 1 Sep 2015 11:28:41 +0800 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.206]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.143]) with mapi id 14.03.0224.002; Tue, 1 Sep 2015 11:28:40 +0800 From: "Ouyang, Changchun" To: "Liu, Jijiang" , "dev@dpdk.org" Thread-Topic: [dpdk-dev] [RFC PATCH 4/8] driver/virtio:enqueue TSO offload Thread-Index: AQHQ49FyY8E0km17CkSfqe/fCvpK4Z4nA8qw Date: Tue, 1 Sep 2015 03:28:39 +0000 Message-ID: References: <1441014108-3125-1-git-send-email-jijiang.liu@intel.com> <1441014108-3125-5-git-send-email-jijiang.liu@intel.com> In-Reply-To: <1441014108-3125-5-git-send-email-jijiang.liu@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [RFC PATCH 4/8] driver/virtio:enqueue TSO 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: Tue, 01 Sep 2015 03:29:35 -0000 > -----Original Message----- > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Jijiang Liu > Sent: Monday, August 31, 2015 5:42 PM > To: dev@dpdk.org > Subject: [dpdk-dev] [RFC PATCH 4/8] driver/virtio:enqueue TSO offload >=20 > Enqueue TSO4/6 offload. >=20 > Signed-off-by: Jijiang Liu > --- > drivers/net/virtio/virtio_rxtx.c | 23 +++++++++++++++++++++++ > 1 files changed, 23 insertions(+), 0 deletions(-) >=20 > diff --git a/drivers/net/virtio/virtio_rxtx.c b/drivers/net/virtio/virtio= _rxtx.c > index c5b53bb..4c2d838 100644 > --- a/drivers/net/virtio/virtio_rxtx.c > +++ b/drivers/net/virtio/virtio_rxtx.c > @@ -198,6 +198,28 @@ virtqueue_enqueue_recv_refill(struct virtqueue *vq, > struct rte_mbuf *cookie) > return 0; > } >=20 > +static void > +virtqueue_enqueue_offload(struct virtqueue *txvq, struct rte_mbuf *m, > + uint16_t idx, uint16_t hdr_sz) > +{ > + struct virtio_net_hdr *hdr =3D (struct virtio_net_hdr *)(uintptr_t) > + (txvq->virtio_net_hdr_addr + idx * hdr_sz); > + > + if (m->tso_segsz !=3D 0 && m->ol_flags & PKT_TX_TCP_SEG) { > + if (m->ol_flags & PKT_TX_IPV4) { > + if (!vtpci_with_feature(txvq->hw, > VIRTIO_NET_F_HOST_TSO4)) > + return; Do we need return error if host can't handle tso for the packet? > + hdr->gso_type =3D VIRTIO_NET_HDR_GSO_TCPV4; > + } else if (m->ol_flags & PKT_TX_IPV6) { > + if (!vtpci_with_feature(txvq->hw, > VIRTIO_NET_F_HOST_TSO6)) > + return; Same as above > + hdr->gso_type =3D VIRTIO_NET_HDR_GSO_TCPV6; > + } Do we need else branch for the case of neither tcpv4 nor tcpv6? > + hdr->gso_size =3D m->tso_segsz; > + hdr->hdr_len =3D m->l2_len + m->l3_len + m->l4_len; > + } > +} > + > static int > virtqueue_enqueue_xmit(struct virtqueue *txvq, struct rte_mbuf *cookie) > { @@ -221,6 +243,7 @@ virtqueue_enqueue_xmit(struct virtqueue *txvq, > struct rte_mbuf *cookie) > dxp->cookie =3D (void *)cookie; > dxp->ndescs =3D needed; >=20 > + virtqueue_enqueue_offload(txvq, cookie, idx, head_size); If TSO is not enabled in the feature bit, how to resolve here? > start_dp =3D txvq->vq_ring.desc; > start_dp[idx].addr =3D > txvq->virtio_net_hdr_mem + idx * head_size; > -- > 1.7.7.6