[dpdk-dev] [PATCH v5 00/18] unified packet type
Helin Zhang
helin.zhang at intel.com
Fri May 22 10:44:06 CEST 2015
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.
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.
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 | 7 +-
app/test-pmd/csumonly.c | 10 +-
app/test-pmd/rxonly.c | 178 ++++-
app/test/packet_burst_generator.c | 10 -
examples/ip_fragmentation/main.c | 7 +-
examples/ip_reassembly/main.c | 7 +-
examples/l3fwd-acl/main.c | 19 +-
examples/l3fwd-power/main.c | 5 +-
examples/l3fwd/main.c | 71 +-
.../linuxapp/eal/include/exec-env/rte_kni_common.h | 4 +-
lib/librte_mbuf/rte_mbuf.c | 6 -
lib/librte_mbuf/rte_mbuf.h | 514 +++++++++++++-
lib/librte_pmd_e1000/igb_rxtx.c | 98 ++-
lib/librte_pmd_enic/enic_main.c | 14 +-
lib/librte_pmd_fm10k/fm10k_rxtx.c | 30 +-
lib/librte_pmd_i40e/i40e_rxtx.c | 786 ++++++++++++++-------
lib/librte_pmd_ixgbe/ixgbe_rxtx.c | 139 +++-
lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c | 49 +-
lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c | 4 +-
19 files changed, 1498 insertions(+), 460 deletions(-)
--
1.9.3
More information about the dev
mailing list