From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id CA6FC5936 for ; Wed, 11 Feb 2015 08:19:02 +0100 (CET) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga103.fm.intel.com with ESMTP; 10 Feb 2015 23:11:36 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.09,556,1418112000"; d="scan'208";a="452982706" Received: from kmsmsx152.gar.corp.intel.com ([172.21.73.87]) by FMSMGA003.fm.intel.com with ESMTP; 10 Feb 2015 23:03:53 -0800 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by KMSMSX152.gar.corp.intel.com (172.21.73.87) with Microsoft SMTP Server (TLS) id 14.3.195.1; Wed, 11 Feb 2015 15:16:18 +0800 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.192]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.161]) with mapi id 14.03.0195.001; Wed, 11 Feb 2015 15:15:25 +0800 From: "Liu, Jijiang" To: Olivier Matz Thread-Topic: [PATCH v2 02/20] mbuf: enhance the API documentation of offload flags Thread-Index: AQHQQFysTMHW1gPFFEOlXdbBgu3bNpzpMhMAgAHf2pA= Date: Wed, 11 Feb 2015 07:15:25 +0000 Message-ID: <1ED644BD7E0A5F4091CF203DAFB8E4CC01DDA2CF@SHSMSX101.ccr.corp.intel.com> References: <1422623775-8050-1-git-send-email-olivier.matz@6wind.com> <1423041925-26956-1-git-send-email-olivier.matz@6wind.com> <1423041925-26956-3-git-send-email-olivier.matz@6wind.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 Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] [PATCH v2 02/20] mbuf: enhance the API documentation of offload flags 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: Wed, 11 Feb 2015 07:19:03 -0000 Hi Olivier, > -----Original Message----- > From: Zhang, Helin > Sent: Tuesday, February 10, 2015 1:39 PM > To: Olivier Matz; dev@dpdk.org > Cc: Ananyev, Konstantin; Liu, Jijiang > Subject: RE: [PATCH v2 02/20] mbuf: enhance the API documentation of offl= oad > flags >=20 >=20 >=20 > > -----Original Message----- > > From: Olivier Matz [mailto:olivier.matz@6wind.com] > > Sent: Wednesday, February 4, 2015 5:25 PM > > To: dev@dpdk.org > > Cc: Ananyev, Konstantin; Liu, Jijiang; Zhang, Helin; > > olivier.matz@6wind.com > > Subject: [PATCH v2 02/20] mbuf: enhance the API documentation of > > offload flags > > > > Based on http://dpdk.org/ml/archives/dev/2015-January/011127.html > > > > Also adapt the csum forward engine code to the API. > > > > Signed-off-by: Olivier Matz > > --- > > app/test-pmd/csumonly.c | 6 +++--- > > lib/librte_mbuf/rte_mbuf.h | 43 > > ++++++++++++++++++++++++++++++++++++------- > > 2 files changed, 39 insertions(+), 10 deletions(-) > > > > diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c index > > 41711fd..4b438d1 100644 > > --- a/app/test-pmd/csumonly.c > > +++ b/app/test-pmd/csumonly.c > > @@ -183,16 +183,15 @@ process_inner_cksums(void *l3_hdr, uint16_t > > ethertype, uint16_t l3_len, > > ipv4_hdr =3D l3_hdr; > > ipv4_hdr->hdr_checksum =3D 0; > > > > + ol_flags |=3D PKT_TX_IPV4; > > if (tso_segsz !=3D 0 && l4_proto =3D=3D IPPROTO_TCP) { > > ol_flags |=3D PKT_TX_IP_CKSUM; > > } else { > > if (testpmd_ol_flags & > TESTPMD_TX_OFFLOAD_IP_CKSUM) > > ol_flags |=3D PKT_TX_IP_CKSUM; > > - else { > > + else > > ipv4_hdr->hdr_checksum =3D > > rte_ipv4_cksum(ipv4_hdr); > > - ol_flags |=3D PKT_TX_IPV4; > > - } > > } > > } else if (ethertype =3D=3D _htons(ETHER_TYPE_IPv6)) > > ol_flags |=3D PKT_TX_IPV6; > > @@ -261,6 +260,7 @@ process_outer_cksums(void *outer_l3_hdr, uint16_t > > outer_ethertype, > > > > if (outer_ethertype =3D=3D _htons(ETHER_TYPE_IPv4)) { > > ipv4_hdr->hdr_checksum =3D 0; > > + ol_flags |=3D PKT_TX_OUTER_IPV4; > > Look at the codes again, you should extend process_outer_cksums() to suppor= t other tunneling packet. The code changes like below, process_outer_cksums(void *outer_l3_hdr, struct testpmd_offload_info *info, uint16_t testpmd_ol_flags, uint16_t l4_proto) // add the l4_proto paramete= r here. ... /* outer UDP checksum is always done in software as we have no * hardware supporting it today, and no API for it. */ if (l4_proto =3D=3D IPPROTO_UDP) udp_hdr =3D (struct udp_hdr *)((char *)outer_l3_hdr + info->outer_l3_le= n); /* do not recalculate udp cksum if it was 0 */ if (udp_hdr->dgram_cksum !=3D 0) { udp_hdr->dgram_cksum =3D 0; if (info->outer_ethertype =3D=3D _htons(ETHER_TYPE_IPv4)) udp_hdr->dgram_cksum =3D rte_ipv4_udptcp_cksum(ipv4_hdr, udp_hdr); else udp_hdr->dgram_cksum =3D rte_ipv6_udptcp_cksum(ipv6_hdr, udp_hdr); } } // nothing need to do for GRE tunneling packet now } > > if (testpmd_ol_flags & > TESTPMD_TX_OFFLOAD_VXLAN_CKSUM) > > ol_flags |=3D PKT_TX_OUTER_IP_CKSUM; diff --git > > a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h index > > a554247..191a42c 100644 > > --- a/lib/librte_mbuf/rte_mbuf.h > > +++ b/lib/librte_mbuf/rte_mbuf.h > > @@ -141,24 +141,53 @@ extern "C" { > > #define PKT_TX_UDP_CKSUM (3ULL << 52) /**< UDP cksum of TX pkt. > > computed by NIC. */ > > #define PKT_TX_L4_MASK (3ULL << 52) /**< Mask for L4 cksum > > offload request. */ > > > > -#define PKT_TX_IP_CKSUM (1ULL << 54) /**< IP cksum of TX pkt. > > computed by NIC. */ > > +/** > > + * Offload the IP checksum in the hardware. The flag PKT_TX_IPV4 > > +should > > + * also be set by the application, altough a PMD will only check > > + * PKT_TX_IP_CKSUM. > > + * - set the IP checksum field in the packet to 0 > > + * - fill the mbuf offload information: l2_len, l3_len */ > > +#define PKT_TX_IP_CKSUM (1ULL << 54) > > > > -/** Packet is IPv4 without requiring IP checksum offload. */ > > +/** > > + * Packet is IPv4. This flag must be set when using any offload > > +feature > > + * (TSO, L3 or L4 checksum) to tell the NIC that the packet is an > > +IPv4 > > + * packet. > > + */ > > #define PKT_TX_IPV4 (1ULL << 55) > > > > -/** Tell the NIC it's an IPv6 packet.*/ > > +/** > > + * Packet is IPv6. This flag must be set when using an offload > > +feature > > + * (TSO or L4 checksum) to tell the NIC that the packet is an IPv6 > > + * packet. > > + */ > > #define PKT_TX_IPV6 (1ULL << 56) > Above two macro for IPV4/IPV6 will be used for inner L3 for tunneling cas= e, > right? > If yes, the annotations may need to mention that, to avoid confusing end = users. >=20 > Regards, > Helin >=20 > > > > #define PKT_TX_VLAN_PKT (1ULL << 57) /**< TX packet is a 802.1q > > VLAN packet. */ > > > > -/** Outer IP checksum of TX packet, computed by NIC for tunneling pack= et. > > - * The tunnel type must also be specified, ex: > > PKT_TX_UDP_TUNNEL_PKT. */ > > +/** > > + * Offload the IP checksum of an external header in the hardware. The > > + * flag PKT_TX_OUTER_IPV4 should also be set by the application, > > +altough > > + * a PMD will only check PKT_TX_IP_CKSUM. The IP checksum field in > > +the > > + * packet must be set to 0. > > + * - set the outer IP checksum field in the packet to 0 > > + * - fill the mbuf offload information: outer_l2_len, outer_l3_len > > +*/ > > #define PKT_TX_OUTER_IP_CKSUM (1ULL << 58) > > > > -/** Packet is outer IPv4 without requiring IP checksum offload for > > tunneling packet. */ > > +/** > > + * Packet outer header is IPv4. This flag must be set when using any > > + * outer offload feature (L3 or L4 checksum) to tell the NIC that the > > + * packet is an IPv4 packet. > > + */ > > #define PKT_TX_OUTER_IPV4 (1ULL << 59) > > > > -/** Tell the NIC it's an outer IPv6 packet for tunneling packet */ > > +/** > > + * Packet outer header is IPv6. This flag must be set when using any > > + * outer offload feature (L4 checksum) to tell the NIC that the > > +packet > > + * is an IPv6 packet. > > + */ > > #define PKT_TX_OUTER_IPV6 (1ULL << 60) > > > > /* Use final bit of flags to indicate a control mbuf */ > > -- > > 2.1.4