On 13.03.2019 13:09, Ian Stokes wrote: > On 2/26/2019 10:38 AM, Ilya Maximets wrote: >> 1. No reason to have mbuf related APIs in a generic code. >> 2. Not only RSS/checksums should be invalidated in case of tunnel >> decapsulation or sending to 'ring' ports. >> >> In order to fix two above issues, new function >> 'dp_packet_reset_offload' introduced. In order to clean up/unify >> the code and simplify addition of new offloading features to non-DPDK >> version of dp_packet, introduced 'ol_flags' bitmask. Additionally >> reduced code complexity in 'dp_packet_clone_with_headroom' by using >> already existent generic APIs. >> > Unfortunately, we still need to have a special case for mbuf >> initialization inside 'dp_packet_init__()'. >> 'dp_packet_init_specific()' introduced for this purpose as a generic >> API for initialization of the implementation-specific fields. >> > > Thanks for this Ilya, apologies for the delay with the series, should have > more time to look at it this week. > > One minor comment below, but other than that seems ok. > >> Acked-by: Flavio Leitner <f...@sysclose.org> >> Signed-off-by: Ilya Maximets <i.maxim...@samsung.com> >> --- >> lib/dp-packet.c | 15 ++++------ >> lib/dp-packet.h | 75 ++++++++++++++++++++--------------------------- >> lib/netdev-dpdk.c | 6 ++-- >> lib/netdev.c | 4 +-- >> 4 files changed, 41 insertions(+), 59 deletions(-) >> >> diff --git a/lib/dp-packet.c b/lib/dp-packet.c >> index 93b0e9c84..f8207ffc2 100644 >> --- a/lib/dp-packet.c >> +++ b/lib/dp-packet.c >> @@ -30,9 +30,10 @@ dp_packet_init__(struct dp_packet *b, size_t allocated, >> enum dp_packet_source so >> b->source = source; >> dp_packet_reset_offsets(b); >> pkt_metadata_init(&b->md, 0); >> - dp_packet_rss_invalidate(b); >> - dp_packet_mbuf_init(b); >> dp_packet_reset_cutlen(b); >> + dp_packet_reset_offload(b); >> + /* Initialize implementation-specific fields of dp_packet. */ >> + dp_packet_init_specific(b); >> /* By default assume the packet type to be Ethernet. */ >> b->packet_type = htonl(PT_ETH); >> } >> @@ -173,16 +174,10 @@ dp_packet_clone_with_headroom(const struct dp_packet >> *buffer, size_t headroom) >> #ifdef DPDK_NETDEV >> new_buffer->mbuf.ol_flags = buffer->mbuf.ol_flags; >> -#else >> - new_buffer->rss_hash_valid = buffer->rss_hash_valid; >> #endif >> - if (dp_packet_rss_valid(new_buffer)) { >> -#ifdef DPDK_NETDEV >> - new_buffer->mbuf.hash.rss = buffer->mbuf.hash.rss; >> -#else >> - new_buffer->rss_hash = buffer->rss_hash; >> -#endif >> + if (dp_packet_rss_valid(buffer)) { >> + dp_packet_set_rss_hash(new_buffer, dp_packet_get_rss_hash(buffer)); >> } >> return new_buffer; >> diff --git a/lib/dp-packet.h b/lib/dp-packet.h >> index c6672f6be..b34dada78 100644 >> --- a/lib/dp-packet.h >> +++ b/lib/dp-packet.h >> @@ -46,6 +46,13 @@ enum OVS_PACKED_ENUM dp_packet_source { >> #define DP_PACKET_CONTEXT_SIZE 64 >> +#ifndef DPDK_NETDEV >> +/* Bit masks for the 'ol_flags' member of the 'dp_packet' structure. */ >> +enum dp_packet_offload_mask { >> + DP_PACKET_OL_RSS_HASH_MASK = 0x1, /* Is the 'rss_hash' valid? */ >> +}; > > Is there a specific reason you've used an enum instead of a define here as > its just a single value. > > Is the expectation that the entries for the offload mask will be expanded in > the future to be more than just RSS_HASH_MASK?
Sure. Next patch adds the DP_PACKET_OL_FLOW_MARK_MASK. It's used by netdev-dummy partial offloading support. > > Ian > > _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev