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 74844B391 for ; Mon, 11 Aug 2014 22:44:05 +0200 (CEST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP; 11 Aug 2014 13:41:06 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.01,844,1400050800"; d="scan'208";a="586659684" Received: from irvmail001.ir.intel.com ([163.33.26.43]) by orsmga002.jf.intel.com with ESMTP; 11 Aug 2014 13:44:51 -0700 Received: from sivswdev02.ir.intel.com (sivswdev02.ir.intel.com [10.237.217.46]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id s7BKioxp020933; Mon, 11 Aug 2014 21:44:51 +0100 Received: from sivswdev02.ir.intel.com (localhost [127.0.0.1]) by sivswdev02.ir.intel.com with ESMTP id s7BKiojj017632; Mon, 11 Aug 2014 21:44:50 +0100 Received: (from bricha3@localhost) by sivswdev02.ir.intel.com with id s7BKioRc017628; Mon, 11 Aug 2014 21:44:50 +0100 From: Bruce Richardson To: dev@dpdk.org Date: Mon, 11 Aug 2014 21:44:36 +0100 Message-Id: <1407789890-17355-1-git-send-email-bruce.richardson@intel.com> X-Mailer: git-send-email 1.7.0.7 Subject: [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: Mon, 11 Aug 2014 20:44:06 -0000 This patch set expands and enhances the mbuf data structure. This set includes 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 welcome 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 - 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 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. rearm vs RX vs TX. Following this patch set, the mbuf is larger, but still has free space in it 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 handles throughput traffic using testpmd, in the fast path, and the full-features path cases, including handling jumbo frames. No performance regressions are seen in either of those cases, however further testing is needed, and is 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(-) -- 1.9.3