Hi Bala, As this code is used in the fast path I’d rather just remove it for now. When someone is actually implementing this use-case he/she can choose how to do it without causing performance degradation.
Before this patch set the size of odp_packet_hdr_t was 360 bytes (!). Simply by removing unused odp_packet_hdr_t members and optimizing the packet_init() function I was able to increase maximum packet throughput by almost 1 Mpps (odp_l2fwd, 64B packets, netmap/dpdk pktio). -Matias From: EXT Bala Manoharan [mailto:bala.manoha...@linaro.org] Sent: Friday, May 13, 2016 9:39 AM To: Elo, Matias (Nokia - FI/Espoo) <matias....@nokia.com> Cc: LNG ODP Mailman List <lng-odp@lists.linaro.org> Subject: Re: [lng-odp] [PATCH 2/4] linux-generic: packet: remove vlan_s_tag and vlan_c_tag members from odp_packet_hdr_t There is a use-case in classification, where the packet can be classified based on outer/inner vlan tag and for that specific use-case it is better to store the vlan value in packet header field. Regards, Bala On 12 May 2016 at 18:06, Matias Elo <matias....@nokia.com<mailto:matias....@nokia.com>> wrote: There is no way to read vlan tags in the ODP API, so don't save them. Signed-off-by: Matias Elo <matias....@nokia.com<mailto:matias....@nokia.com>> --- platform/linux-generic/include/odp_packet_internal.h | 4 ---- platform/linux-generic/odp_packet.c | 4 ---- 2 files changed, 8 deletions(-) diff --git a/platform/linux-generic/include/odp_packet_internal.h b/platform/linux-generic/include/odp_packet_internal.h index 508adf8..2a12503 100644 --- a/platform/linux-generic/include/odp_packet_internal.h +++ b/platform/linux-generic/include/odp_packet_internal.h @@ -143,8 +143,6 @@ typedef struct { uint32_t l4_offset; /**< offset to L4 hdr (TCP, UDP, SCTP, also ICMP) */ uint32_t payload_offset; /**< offset to payload */ - uint32_t vlan_s_tag; /**< Parsed 1st VLAN header (S-TAG) */ - uint32_t vlan_c_tag; /**< Parsed 2nd VLAN header (C-TAG) */ uint32_t l3_len; /**< Layer 3 length */ uint32_t l4_len; /**< Layer 4 length */ @@ -184,8 +182,6 @@ static inline void copy_packet_parser_metadata(odp_packet_hdr_t *src_hdr, dst_hdr->l4_offset = src_hdr->l4_offset; dst_hdr->payload_offset = src_hdr->payload_offset; - dst_hdr->vlan_s_tag = src_hdr->vlan_s_tag; - dst_hdr->vlan_c_tag = src_hdr->vlan_c_tag; dst_hdr->l3_len = src_hdr->l3_len; dst_hdr->l4_len = src_hdr->l4_len; } diff --git a/platform/linux-generic/odp_packet.c b/platform/linux-generic/odp_packet.c index 8681c08..436265e 100644 --- a/platform/linux-generic/odp_packet.c +++ b/platform/linux-generic/odp_packet.c @@ -42,8 +42,6 @@ void packet_parse_reset(odp_packet_hdr_t *pkt_hdr) pkt_hdr->l3_offset = ODP_PACKET_OFFSET_INVALID; pkt_hdr->l4_offset = ODP_PACKET_OFFSET_INVALID; pkt_hdr->payload_offset = ODP_PACKET_OFFSET_INVALID; - pkt_hdr->vlan_s_tag = 0; - pkt_hdr->vlan_c_tag = 0; } /** @@ -1223,7 +1221,6 @@ int _odp_parse_common(odp_packet_hdr_t *pkt_hdr, const uint8_t *ptr) vlan = (const odph_vlanhdr_t *)parseptr; ethtype = odp_be_to_cpu_16(vlan->type); - pkt_hdr->vlan_s_tag = odp_be_to_cpu_16(vlan->tci); offset += sizeof(odph_vlanhdr_t); parseptr += sizeof(odph_vlanhdr_t); } @@ -1232,7 +1229,6 @@ int _odp_parse_common(odp_packet_hdr_t *pkt_hdr, const uint8_t *ptr) pkt_hdr->input_flags.vlan = 1; vlan = (const odph_vlanhdr_t *)parseptr; ethtype = odp_be_to_cpu_16(vlan->type); - pkt_hdr->vlan_c_tag = odp_be_to_cpu_16(vlan->tci); offset += sizeof(odph_vlanhdr_t); parseptr += sizeof(odph_vlanhdr_t); } -- 1.9.1 _______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org<mailto:lng-odp@lists.linaro.org> https://lists.linaro.org/mailman/listinfo/lng-odp
_______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp