The lpm_process_event_pkt() can either process a packet using an architecture specific (defined for X86/SSE, ARM/Neon and PPC64/Altivec) path or a scalar one. The choice is however done using an ifdef pre-processor macro. Because of that the scalar version was apparently not widely excersized/compiled. Due to some copy/paste errors, the scalar logic in lpm_process_event_pkt() retained a "continue" statement where it should utilize rfc1812_process() and return the port/BAD_PORT.
Fixes: 99fc91d18082 ("examples/l3fwd: add event lpm main loop") Cc: pbhagavat...@marvell.com Signed-off-by: Stanislaw Kardach <k...@semihalf.com> --- v2: Replace existing logic with rfc1812_process(). --- examples/l3fwd/l3fwd_lpm.c | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/examples/l3fwd/l3fwd_lpm.c b/examples/l3fwd/l3fwd_lpm.c index bec22c44cd..7a1e60f6b3 100644 --- a/examples/l3fwd/l3fwd_lpm.c +++ b/examples/l3fwd/l3fwd_lpm.c @@ -28,6 +28,7 @@ #include <rte_lpm6.h> #include "l3fwd.h" +#include "l3fwd_common.h" #include "l3fwd_event.h" #include "lpm_route_parse.c" @@ -237,30 +238,17 @@ lpm_process_event_pkt(const struct lcore_conf *lconf, struct rte_mbuf *mbuf) struct rte_ether_hdr *eth_hdr = rte_pktmbuf_mtod(mbuf, struct rte_ether_hdr *); -#ifdef DO_RFC_1812_CHECKS - struct rte_ipv4_hdr *ipv4_hdr; - if (RTE_ETH_IS_IPV4_HDR(mbuf->packet_type)) { - /* Handle IPv4 headers.*/ - ipv4_hdr = rte_pktmbuf_mtod_offset(mbuf, - struct rte_ipv4_hdr *, - sizeof(struct rte_ether_hdr)); - - if (is_valid_ipv4_pkt(ipv4_hdr, mbuf->pkt_len) - < 0) { - mbuf->port = BAD_PORT; - continue; - } - /* Update time to live and header checksum */ - --(ipv4_hdr->time_to_live); - ++(ipv4_hdr->hdr_checksum); - } -#endif + /* dst addr */ *(uint64_t *)ð_hdr->dst_addr = dest_eth_addr[mbuf->port]; /* src addr */ rte_ether_addr_copy(&ports_eth_addr[mbuf->port], ð_hdr->src_addr); + + rfc1812_process(rte_pktmbuf_mtod_offset(mbuf, struct rte_ipv4_hdr *, + sizeof(struct rte_ether_hdr)), + &mbuf->port, mbuf->packet_type); #endif return mbuf->port; } -- 2.30.2