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 01495C690 for ; Tue, 23 Jun 2015 18:13:51 +0200 (CEST) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga102.fm.intel.com with ESMTP; 23 Jun 2015 09:13:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.13,666,1427785200"; d="scan'208";a="716253884" Received: from irsmsx152.ger.corp.intel.com ([163.33.192.66]) by orsmga001.jf.intel.com with ESMTP; 23 Jun 2015 09:13:49 -0700 Received: from irsmsx105.ger.corp.intel.com ([169.254.7.245]) by IRSMSX152.ger.corp.intel.com ([169.254.6.90]) with mapi id 14.03.0224.002; Tue, 23 Jun 2015 17:13:48 +0100 From: "Ananyev, Konstantin" To: "Zhang, Helin" , "dev@dpdk.org" Thread-Topic: [PATCH v8 00/18] unified packet type Thread-Index: AQHQrVcLid1H1QTJo06aUB5oomBaa526RBOg Date: Tue, 23 Jun 2015 16:13:47 +0000 Message-ID: <2601191342CEEE43887BDE71AB97725836A1D370@irsmsx105.ger.corp.intel.com> References: <1434701661-9943-1-git-send-email-helin.zhang@intel.com> <1435024235-19483-1-git-send-email-helin.zhang@intel.com> In-Reply-To: <1435024235-19483-1-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.182] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v8 00/18] unified packet type 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, 23 Jun 2015 16:13:52 -0000 > -----Original Message----- > From: Zhang, Helin > Sent: Tuesday, June 23, 2015 2:50 AM > To: dev@dpdk.org > Cc: Cao, Waterman; Liang, Cunming; Liu, Jijiang; Ananyev, Konstantin; Ric= hardson, Bruce; yongwang@vmware.com; > olivier.matz@6wind.com; Wu, Jingjing; Zhang, Helin > Subject: [PATCH v8 00/18] unified packet type >=20 > Currently only 6 bits which are stored in ol_flags are used to indicate t= he > packet types. This is not enough, as some NIC hardware can recognize quit= e > a lot of packet types, e.g i40e hardware can recognize more than 150 pack= et > types. Hiding those packet types hides hardware offload capabilities whic= h > could be quite useful for improving performance and for end users. > So an unified packet types are needed to support all possible PMDs. A 16 > bits packet_type in mbuf structure can be changed to 32 bits and used for > this purpose. In addition, all packet types stored in ol_flag field shoul= d > be deleted at all, and 6 bits of ol_flags can be save as the benifit. >=20 > Initially, 32 bits of packet_type can be divided into several sub fields = to > indicate different packet type information of a packet. The initial desig= n > is to divide those bits into fields for L2 types, L3 types, L4 types, tun= nel > types, inner L2 types, inner L3 types and inner L4 types. All PMDs should > translate the offloaded packet types into these 7 fields of information, = for > user applications. >=20 > To avoid breaking ABI compatibility, currently all the code changes for > unified packet type are disabled at compile time by default. Users can en= able > it manually by defining the macro of RTE_NEXT_ABI. The code changes will = be > valid by default in a future release, and the old version will be deleted > accordingly, after the ABI change process is done. >=20 > Note that this patch set should be integrated after another patch set for > '[PATCH v3 0/7] support i40e QinQ stripping and insertion', to clearly so= lve > the conflict during integration. As both patch sets modified 'struct rte_= mbuf', > and the final layout of the 'struct rte_mbuf' is key to vectorized ixgbe = PMD. >=20 > v2 changes: > * Enlarged the packet_type field from 16 bits to 32 bits. > * Redefined the packet type sub-fields. > * Updated the 'struct rte_kni_mbuf' for KNI according to the mbuf changes= . > * Used redefined packet types and enlarged packet_type field for all PMDs > and corresponding applications. > * Removed changes in bond and its relevant application, as there is no ne= ed > at all according to the recent bond changes. >=20 > v3 changes: > * Put the mbuf layout changes into a single patch. > * Put vector ixgbe changes right after mbuf changes. > * Disabled vector ixgbe PMD by default, as mbuf layout changed, and then > re-enabled it after vector ixgbe PMD updated. > * Put the definitions of unified packet type into a single patch. > * Minor bug fixes and enhancements in l3fwd example. >=20 > v4 changes: > * Added detailed description of each packet types. > * Supported unified packet type of fm10k. > * Added printing logs of packet types of each received packet for rxonly > mode in testpmd. > * Removed several useless code lines which block packet type unification = from > app/test/packet_burst_generator.c. >=20 > v5 changes: > * Added more detailed description for each packet types, together with ex= amples. > * Rolled back the macro definitions of RX packet flags, for ABI compitabi= lity. >=20 > v6 changes: > * Disabled the code changes for unified packet type by default, to > avoid breaking ABI compatibility. >=20 > v7 changes: > * Renamed RTE_UNIFIED_PKT_TYPE to RTE_NEXT_ABI. > * Integrated with patch set for '[PATCH v3 0/7] support i40e QinQ strippi= ng > and insertion', to clearly solve the conflicts during merging. >=20 > v8 changes: > * Moved the field of 'vlan_tci_outer' in 'struct rte_mbuf' to the end of = the 1st > cache line, to avoid breaking any vectorized PMD storing, as fields of > 'packet_type, pkt_len, data_len, vlan_tci, rss' should be in an contigu= ous 128 > bits. >=20 > Helin Zhang (18): > mbuf: redefine packet_type in rte_mbuf > ixgbe: support unified packet type in vectorized PMD > mbuf: add definitions of unified packet types > e1000: replace bit mask based packet type with unified packet type > ixgbe: replace bit mask based packet type with unified packet type > i40e: replace bit mask based packet type with unified packet type > enic: replace bit mask based packet type with unified packet type > vmxnet3: replace bit mask based packet type with unified packet type > fm10k: replace bit mask based packet type with unified packet type > app/test-pipeline: replace bit mask based packet type with unified > packet type > app/testpmd: replace bit mask based packet type with unified packet > type > app/test: Remove useless code > examples/ip_fragmentation: replace bit mask based packet type with > unified packet type > examples/ip_reassembly: replace bit mask based packet type with > unified packet type > examples/l3fwd-acl: replace bit mask based packet type with unified > packet type > examples/l3fwd-power: replace bit mask based packet type with unified > packet type > examples/l3fwd: replace bit mask based packet type with unified packet > type > mbuf: remove old packet type bit masks >=20 > app/test-pipeline/pipeline_hash.c | 13 + > app/test-pmd/csumonly.c | 14 + > app/test-pmd/rxonly.c | 183 +++++++ > app/test/packet_burst_generator.c | 6 +- > drivers/net/e1000/igb_rxtx.c | 102 ++++ > drivers/net/enic/enic_main.c | 26 + > drivers/net/fm10k/fm10k_rxtx.c | 27 ++ > drivers/net/i40e/i40e_rxtx.c | 528 +++++++++++++++= ++++++ > drivers/net/ixgbe/ixgbe_rxtx.c | 163 +++++++ > drivers/net/ixgbe/ixgbe_rxtx_vec.c | 75 ++- > drivers/net/vmxnet3/vmxnet3_rxtx.c | 8 + > examples/ip_fragmentation/main.c | 9 + > examples/ip_reassembly/main.c | 9 + > examples/l3fwd-acl/main.c | 29 +- > examples/l3fwd-power/main.c | 8 + > examples/l3fwd/main.c | 123 ++++- > .../linuxapp/eal/include/exec-env/rte_kni_common.h | 6 + > lib/librte_mbuf/rte_mbuf.c | 4 + > lib/librte_mbuf/rte_mbuf.h | 517 +++++++++++++++= +++++ > 19 files changed, 1837 insertions(+), 13 deletions(-) >=20 > -- Acked-by: Konstantin Ananyev > 1.9.3