From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 32265377E for ; Mon, 7 Sep 2015 08:11:31 +0200 (CEST) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga102.jf.intel.com with ESMTP; 06 Sep 2015 23:11:28 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.17,483,1437462000"; d="scan'208";a="784209031" Received: from kmsmsx151.gar.corp.intel.com ([172.21.73.86]) by fmsmga001.fm.intel.com with ESMTP; 06 Sep 2015 23:11:28 -0700 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by KMSMSX151.gar.corp.intel.com (172.21.73.86) with Microsoft SMTP Server (TLS) id 14.3.224.2; Mon, 7 Sep 2015 14:11:26 +0800 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.171]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.210]) with mapi id 14.03.0224.002; Mon, 7 Sep 2015 14:11:25 +0800 From: "Liu, Jijiang" To: "Ouyang, Changchun" , "dev@dpdk.org" Thread-Topic: [dpdk-dev] [RFC PATCH 4/8] driver/virtio:enqueue TSO offload Thread-Index: AQHQ5GZL/BGc1KRHXkKpweZctoYTNJ4wnduw Date: Mon, 7 Sep 2015 06:11:25 +0000 Message-ID: <1ED644BD7E0A5F4091CF203DAFB8E4CC057D986D@SHSMSX101.ccr.corp.intel.com> References: <1441014108-3125-1-git-send-email-jijiang.liu@intel.com> <1441014108-3125-5-git-send-email-jijiang.liu@intel.com> In-Reply-To: Accept-Language: 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: Mon, 07 Sep 2015 06:11:31 -0000 > -----Original Message----- > From: Ouyang, Changchun > Sent: Monday, August 31, 2015 8:29 PM > To: Liu, Jijiang; dev@dpdk.org > Cc: Ouyang, Changchun > Subject: RE: [dpdk-dev] [RFC PATCH 4/8] driver/virtio:enqueue TSO offload >=20 >=20 >=20 > > -----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 > > > > Enqueue TSO4/6 offload. > > > > Signed-off-by: Jijiang Liu > > --- > > drivers/net/virtio/virtio_rxtx.c | 23 +++++++++++++++++++++++ > > 1 files changed, 23 insertions(+), 0 deletions(-) > > > > 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; > > } > > > > +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; >=20 > Do we need return error if host can't handle tso for the packet? >=20 > > + 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; >=20 > Same as above >=20 > > + hdr->gso_type =3D VIRTIO_NET_HDR_GSO_TCPV6; > > + } >=20 > Do we need else branch for the case of neither tcpv4 nor tcpv6? >=20 > > + 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; > > > > + virtqueue_enqueue_offload(txvq, cookie, idx, head_size); >=20 > If TSO is not enabled in the feature bit, how to resolve here? The TSO enablement check is in the function. If TSO is not enabled, and don't need to fill virtio_net_hdr now. > > start_dp =3D txvq->vq_ring.desc; > > start_dp[idx].addr =3D > > txvq->virtio_net_hdr_mem + idx * head_size; > > -- > > 1.7.7.6