From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 297F9559C for ; Fri, 5 Dec 2014 11:49:42 +0100 (CET) Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga103.jf.intel.com with ESMTP; 05 Dec 2014 02:47:59 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.04,691,1406617200"; d="scan'208";a="494125651" Received: from irsmsx155.ger.corp.intel.com ([163.33.192.3]) by orsmga003.jf.intel.com with ESMTP; 05 Dec 2014 02:46:16 -0800 Received: from irsmsx105.ger.corp.intel.com ([169.254.7.144]) by IRSMSX155.ger.corp.intel.com ([169.254.14.228]) with mapi id 14.03.0195.001; Fri, 5 Dec 2014 10:49:40 +0000 From: "Ananyev, Konstantin" To: "Zhang, Helin" , "dev@dpdk.org" Thread-Topic: [PATCH v2 2/2] mbuf: assign valid bit values for some RX and TX flags Thread-Index: AQHQEC1U9lXpd1X4/U+Iw0lE/Pu4KJyAy3bQ Date: Fri, 5 Dec 2014 10:49:39 +0000 Message-ID: <2601191342CEEE43887BDE71AB977258213BCE0C@IRSMSX105.ger.corp.intel.com> References: <1416982032-28519-1-git-send-email-helin.zhang@intel.com> <1417743988-15604-1-git-send-email-helin.zhang@intel.com> <1417743988-15604-3-git-send-email-helin.zhang@intel.com> In-Reply-To: <1417743988-15604-3-git-send-email-helin.zhang@intel.com> Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [163.33.239.180] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v2 2/2] mbuf: assign valid bit values for some RX and TX 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: Fri, 05 Dec 2014 10:49:44 -0000 Hi Helin, > -----Original Message----- > From: Zhang, Helin > Sent: Friday, December 05, 2014 1:46 AM > To: dev@dpdk.org > Cc: Cao, Waterman; Cao, Min; Wu, Jingjing; Liu, Jijiang; Ananyev, Konstan= tin; olivier.matz@6wind.com; Zhang, Helin > Subject: [PATCH v2 2/2] mbuf: assign valid bit values for some RX and TX = flags >=20 > Before redefining mbuf structure, there was lack of free bits in > 'ol_flags' (32 bits in total) for new RX or TX flags. So it tried > to reuse existant bits as most as possible, or even assigning 0 to > some of bit flags. After new mbuf structure defined, there are > quite a lot of free bits. So those newly added bit flags should be > assigned with correct and valid bit values, and getting their names > should be enabled as well. Note that 'RECIP' should be removed, as > nowhere will use it. >=20 > Signed-off-by: Helin Zhang > --- > lib/librte_mbuf/rte_mbuf.c | 9 ++++----- > lib/librte_mbuf/rte_mbuf.h | 19 +++++++++---------- > 2 files changed, 13 insertions(+), 15 deletions(-) >=20 > v2 changes: > * Removed error flag of 'ECIPE' processing only in mbuf. All other error = flags > were added back. > * Assigned error flags with correct and valid values, as their previous v= alues > were invalid. > * Enabled getting all error flag names. >=20 > diff --git a/lib/librte_mbuf/rte_mbuf.c b/lib/librte_mbuf/rte_mbuf.c > index 87c2963..3ce7c8d 100644 > --- a/lib/librte_mbuf/rte_mbuf.c > +++ b/lib/librte_mbuf/rte_mbuf.c > @@ -210,11 +210,10 @@ const char *rte_get_rx_ol_flag_name(uint64_t mask) > case PKT_RX_FDIR: return "PKT_RX_FDIR"; > case PKT_RX_L4_CKSUM_BAD: return "PKT_RX_L4_CKSUM_BAD"; > case PKT_RX_IP_CKSUM_BAD: return "PKT_RX_IP_CKSUM_BAD"; > - /* case PKT_RX_EIP_CKSUM_BAD: return "PKT_RX_EIP_CKSUM_BAD"; */ > - /* case PKT_RX_OVERSIZE: return "PKT_RX_OVERSIZE"; */ > - /* case PKT_RX_HBUF_OVERFLOW: return "PKT_RX_HBUF_OVERFLOW"; */ > - /* case PKT_RX_RECIP_ERR: return "PKT_RX_RECIP_ERR"; */ > - /* case PKT_RX_MAC_ERR: return "PKT_RX_MAC_ERR"; */ > + case PKT_RX_EIP_CKSUM_BAD: return "PKT_RX_EIP_CKSUM_BAD"; > + case PKT_RX_OVERSIZE: return "PKT_RX_OVERSIZE"; > + case PKT_RX_HBUF_OVERFLOW: return "PKT_RX_HBUF_OVERFLOW"; > + case PKT_RX_MAC_ERR: return "PKT_RX_MAC_ERR"; > case PKT_RX_IPV4_HDR: return "PKT_RX_IPV4_HDR"; > case PKT_RX_IPV4_HDR_EXT: return "PKT_RX_IPV4_HDR_EXT"; > case PKT_RX_IPV6_HDR: return "PKT_RX_IPV6_HDR"; > diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h > index 2e5fce5..c9591c0 100644 > --- a/lib/librte_mbuf/rte_mbuf.h > +++ b/lib/librte_mbuf/rte_mbuf.h > @@ -84,11 +84,6 @@ extern "C" { > #define PKT_RX_FDIR (1ULL << 2) /**< RX packet with FDIR match= indicate. */ > #define PKT_RX_L4_CKSUM_BAD (1ULL << 3) /**< L4 cksum of RX pkt. is no= t OK. */ > #define PKT_RX_IP_CKSUM_BAD (1ULL << 4) /**< IP cksum of RX pkt. is no= t OK. */ > -#define PKT_RX_EIP_CKSUM_BAD (0ULL << 0) /**< External IP header checks= um error. */ > -#define PKT_RX_OVERSIZE (0ULL << 0) /**< Num of desc of an RX pkt = oversize. */ > -#define PKT_RX_HBUF_OVERFLOW (0ULL << 0) /**< Header buffer overflow. *= / > -#define PKT_RX_RECIP_ERR (0ULL << 0) /**< Hardware processing error= . */ > -#define PKT_RX_MAC_ERR (0ULL << 0) /**< MAC error. */ > #define PKT_RX_IPV4_HDR (1ULL << 5) /**< RX packet with IPv4 heade= r. */ > #define PKT_RX_IPV4_HDR_EXT (1ULL << 6) /**< RX packet with extended I= Pv4 header. */ > #define PKT_RX_IPV6_HDR (1ULL << 7) /**< RX packet with IPv6 heade= r. */ > @@ -99,6 +94,10 @@ extern "C" { > #define PKT_RX_TUNNEL_IPV6_HDR (1ULL << 12) /**< RX tunnel packet with I= Pv6 header. */ > #define PKT_RX_FDIR_ID (1ULL << 13) /**< FD id reported if FDIR ma= tch. */ > #define PKT_RX_FDIR_FLX (1ULL << 14) /**< Flexible bytes reported i= f FDIR match. */ > +#define PKT_RX_EIP_CKSUM_BAD (1ULL << 15) /**< External IP header check= sum error. */ > +#define PKT_RX_OVERSIZE (1ULL << 16) /**< Num of desc of an RX pkt= oversize. */ > +#define PKT_RX_HBUF_OVERFLOW (1ULL << 17) /**< Header buffer overflow. = */ > +#define PKT_RX_MAC_ERR (1ULL << 18) /**< MAC error. */ > /* add new RX flags here */ I still think there is no point to have several flags to indicate HW error = for the packet. As I suggested before we can collapse 3 of them (OVERSIZE, HBUF_OVERFLOW, M= AC_ERR) into one.=20 As I remember, Oliver even suggested to drop such packets. As was said above - if is not a whole packet SW can't do much with it anywa= y. The only thing such bad packets can probably be used for - some sort of deb= ugging. So we probably can combine both things:=20 - in normal operation just drop such packet=20 - if PMD_DEBUG_RX is enabled, then write a log record, set RX_HW_ERR and de= liver a packet to the upper layer. >=20 > /* add new TX flags here */ > @@ -141,13 +140,13 @@ extern "C" { > #define PKT_TX_IP_CKSUM (1ULL << 54) /**< IP cksum of TX pkt. compu= ted by NIC. */ > #define PKT_TX_IPV4_CSUM PKT_TX_IP_CKSUM /**< Alias of PKT_TX_IP_CKS= UM. */ >=20 > -/** Tell the NIC it's an IPv4 packet. Required for L4 checksum offload o= r TSO. */ > -#define PKT_TX_IPV4 PKT_RX_IPV4_HDR > +/** Tell the NIC it's an IPv4 packet. */ > +#define PKT_TX_IPV4 (1ULL << 55) /**< TX packet is a IPV4 packe= t. */ >=20 > -/** Tell the NIC it's an IPv6 packet. Required for L4 checksum offload o= r TSO. */ > -#define PKT_TX_IPV6 PKT_RX_IPV6_HDR > +/** Tell the NIC it's an IPv6 packet. */ > +#define PKT_TX_IPV6 (1ULL << 56) /**< TX packet is a IPV6 packe= t. */ >=20 > -#define PKT_TX_VLAN_PKT (1ULL << 55) /**< TX packet is a 802.1q VLA= N packet. */ > +#define PKT_TX_VLAN_PKT (1ULL << 57) /**< TX packet is a VLAN packe= t. */ I don't think these changes should be part of that patch. They violate another patch that Frank sent before. Konstantin >=20 > /* Use final bit of flags to indicate a control mbuf */ > #define CTRL_MBUF_FLAG (1ULL << 63) /**< Mbuf contains control dat= a */ > -- > 1.9.3