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 154395955 for ; Wed, 20 Aug 2014 09:04:53 +0200 (CEST) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga102.jf.intel.com with ESMTP; 20 Aug 2014 00:02:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.01,900,1400050800"; d="scan'208";a="560954674" Received: from fmsmsx104.amr.corp.intel.com ([10.19.9.35]) by orsmga001.jf.intel.com with ESMTP; 20 Aug 2014 00:08:23 -0700 Received: from fmsmsx120.amr.corp.intel.com (10.19.9.29) by FMSMSX104.amr.corp.intel.com (10.19.9.35) with Microsoft SMTP Server (TLS) id 14.3.195.1; Wed, 20 Aug 2014 00:08:23 -0700 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by fmsmsx120.amr.corp.intel.com (10.19.9.29) with Microsoft SMTP Server (TLS) id 14.3.195.1; Wed, 20 Aug 2014 00:08:23 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.219]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.17]) with mapi id 14.03.0195.001; Wed, 20 Aug 2014 15:08:21 +0800 From: "Cao, Min" To: "dev@dpdk.org" Thread-Topic: [dpdk-dev] [RFC PATCH 00/14] Extend the mbuf structure Thread-Index: AQHPtaVyP5gALGCxhUC6l1wX0h2jkpvZH1gA Date: Wed, 20 Aug 2014 07:08:21 +0000 Message-ID: References: <1407789890-17355-1-git-send-email-bruce.richardson@intel.com> In-Reply-To: <1407789890-17355-1-git-send-email-bruce.richardson@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 00/14] Extend the mbuf structure 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, 20 Aug 2014 07:04:54 -0000 Tested-by: Cao Min This patch modifies the mbuf data struct, function and performace tests can= work OK with it. It is ready to be integrated to dpdk.org. -----Original Message----- From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Bruce Richardson Sent: Tuesday, August 12, 2014 4:45 AM To: dev@dpdk.org Subject: [dpdk-dev] [RFC PATCH 00/14] Extend the mbuf structure This patch set expands and enhances the mbuf data structure. This set inclu= des patches previously submitted by Olivier to rework the mbuf, but takes the rework further than = proposed there. NOTE: This is still a work in progress! Feedback at this stage is still wel= come though. Outline of changes are: * adds a second cache line to the structure * moves some fields to that cache line to make space * eliminates the control mbuf structure again to save space * compresses the data pointer down to an offset to save space * adds in new fields for: - packet type - sequence number - inner_l3, l4 lengths=20 - max segment size - user data pointer - second vlan tag * the flags field is expanded out to 64-bit, giving 48 new flags. The hash = field is now called filters=20 and is also expanded. * some other structures are flattened out or otherwise reworked, e.g. vlan_= macip field is gone. * the field order has changed as fields are ordered more by function where = they are used, e.g.=20 rearm vs RX vs TX. =20 Following this patch set, the mbuf is larger, but still has free space in i= t for future expansion. The first cache line has 8 bytes free, and the second has 32 bytes free. Current status: This patch set compiles on 64-bit gcc and clang, and handle= s throughput traffic using testpmd, in the fast path, and the full-features path cases, including hand= ling jumbo frames. No performance regressions are seen in either of those cases, however further = testing is needed, and is=20 ongoing. Also, 32-bit support is not yet done. Bruce Richardson (10): mbuf: rename in_port to just port mbuf: reorder fields by time-of-use ixgbe: rework vector pmd following mbuf changes mbuf: split mbuf across two cache lines. Fix performance regression due to moved pool ptr mbuf: set next pointer to NULL on mbuf free. ixgbe: make mbuf_initializer queue variable global ixgbe: Make vector stores unaligned mbuf: cleanup + added in additional mbuf fields. ixgbe: Allow vector RX of scattered packets Olivier Matz (4): mbuf: rename RTE_MBUF_SCATTER_GATHER into RTE_MBUF_REFCNT mbuf: remove rte_ctrlmbuf mbuf: remove the rte_pktmbuf structure mbuf: replace data pointer by an offset app/test-pmd/cmdline.c | 2 - app/test-pmd/csumonly.c | 6 +- app/test-pmd/flowgen.c | 18 +- app/test-pmd/icmpecho.c | 4 +- app/test-pmd/ieee1588fwd.c | 6 +- app/test-pmd/macfwd-retry.c | 2 +- app/test-pmd/macfwd.c | 8 +- app/test-pmd/macswap.c | 8 +- app/test-pmd/rxonly.c | 13 +- app/test-pmd/testpmd.c | 11 +- app/test-pmd/testpmd.h | 2 +- app/test-pmd/txonly.c | 45 +-- app/test/commands.c | 2 - app/test/packet_burst_generator.c | 47 +-- app/test/test_distributor.c | 18 +- app/test/test_distributor_perf.c | 4 +- app/test/test_mbuf.c | 102 +---- app/test/test_sched.c | 4 +- app/test/test_table_acl.c | 7 +- app/test/test_table_pipeline.c | 10 +- config/common_bsdapp | 2 +- config/common_linuxapp | 2 +- doc/doxy-api.conf | 2 +- examples/dpdk_qat/crypto.c | 22 +- examples/dpdk_qat/main.c | 2 +- examples/exception_path/main.c | 11 +- examples/ip_pipeline/main.c | 2 +- examples/ip_reassembly/main.c | 8 +- examples/ipv4_multicast/Makefile | 4 +- examples/ipv4_multicast/main.c | 16 +- examples/l3fwd-acl/main.c | 2 +- examples/l3fwd-power/main.c | 2 +- examples/l3fwd-vf/main.c | 2 +- examples/l3fwd/main.c | 10 +- examples/load_balancer/runtime.c | 2 +- .../client_server_mp/mp_client/client.c | 2 +- examples/quota_watermark/qw/main.c | 4 +- examples/vhost/main.c | 79 ++-- examples/vhost_xen/main.c | 22 +- lib/librte_distributor/rte_distributor.c | 2 +- lib/librte_ip_frag/ip_frag_common.h | 13 +- lib/librte_ip_frag/rte_ipv4_fragmentation.c | 40 +- lib/librte_ip_frag/rte_ipv4_reassembly.c | 6 +- lib/librte_ip_frag/rte_ipv6_fragmentation.c | 38 +- lib/librte_ip_frag/rte_ipv6_reassembly.c | 5 +- lib/librte_mbuf/rte_mbuf.c | 91 ++--- lib/librte_mbuf/rte_mbuf.h | 424 ++++++++---------= ---- lib/librte_pmd_bond/rte_eth_bond_pmd.c | 4 +- lib/librte_pmd_e1000/e1000_ethdev.h | 21 + lib/librte_pmd_e1000/em_rxtx.c | 73 ++-- lib/librte_pmd_e1000/igb_rxtx.c | 83 ++-- lib/librte_pmd_i40e/i40e_rxtx.c | 109 +++--- lib/librte_pmd_ixgbe/ixgbe_ethdev.h | 21 + lib/librte_pmd_ixgbe/ixgbe_rxtx.c | 151 ++++---- lib/librte_pmd_ixgbe/ixgbe_rxtx.h | 25 +- lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c | 395 ++++++++++-------= -- lib/librte_pmd_pcap/rte_eth_pcap.c | 14 +- lib/librte_pmd_virtio/virtio_rxtx.c | 22 +- lib/librte_pmd_virtio/virtqueue.h | 3 +- lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c | 29 +- lib/librte_pmd_xenvirt/rte_eth_xenvirt.c | 14 +- lib/librte_pmd_xenvirt/virtqueue.h | 4 +- lib/librte_sched/rte_sched.c | 14 +- lib/librte_sched/rte_sched.h | 21 +- 64 files changed, 1021 insertions(+), 1116 deletions(-) --=20 1.9.3