[dpdk-dev] [PATCH v8 00/18] unified packet type
Ananyev, Konstantin
konstantin.ananyev at intel.com
Tue Jun 23 18:13:47 CEST 2015
> -----Original Message-----
> From: Zhang, Helin
> Sent: Tuesday, June 23, 2015 2:50 AM
> To: dev at dpdk.org
> Cc: Cao, Waterman; Liang, Cunming; Liu, Jijiang; Ananyev, Konstantin; Richardson, Bruce; yongwang at vmware.com;
> olivier.matz at 6wind.com; Wu, Jingjing; Zhang, Helin
> Subject: [PATCH v8 00/18] unified packet type
>
> Currently only 6 bits which are stored in ol_flags are used to indicate the
> packet types. This is not enough, as some NIC hardware can recognize quite
> a lot of packet types, e.g i40e hardware can recognize more than 150 packet
> types. Hiding those packet types hides hardware offload capabilities which
> 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 should
> be deleted at all, and 6 bits of ol_flags can be save as the benifit.
>
> Initially, 32 bits of packet_type can be divided into several sub fields to
> indicate different packet type information of a packet. The initial design
> is to divide those bits into fields for L2 types, L3 types, L4 types, tunnel
> 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.
>
> To avoid breaking ABI compatibility, currently all the code changes for
> unified packet type are disabled at compile time by default. Users can enable
> 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.
>
> 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 solve
> 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.
>
> 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 need
> at all according to the recent bond changes.
>
> 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.
>
> 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.
>
> v5 changes:
> * Added more detailed description for each packet types, together with examples.
> * Rolled back the macro definitions of RX packet flags, for ABI compitability.
>
> v6 changes:
> * Disabled the code changes for unified packet type by default, to
> avoid breaking ABI compatibility.
>
> v7 changes:
> * Renamed RTE_UNIFIED_PKT_TYPE to RTE_NEXT_ABI.
> * Integrated with patch set for '[PATCH v3 0/7] support i40e QinQ stripping
> and insertion', to clearly solve the conflicts during merging.
>
> 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 contiguous 128
> bits.
>
> 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
>
> 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(-)
>
> --
Acked-by: Konstantin Ananyev <konstantin.ananyev at intel.com>
> 1.9.3
More information about the dev
mailing list