This patch adds software-based parsing for Ethernet packet types,
specifically identifying IPv4 and IPv6 packets. This is a temporary
solution until hardware-based parsing is implemented.

Additionally, variable declarations in `enetfec_recv_pkts()` are
reordered to follow reverse Christmas tree style for better readability.

Signed-off-by: Hemant Agrawal <[email protected]>
---
 drivers/net/enetfec/enet_rxtx.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/drivers/net/enetfec/enet_rxtx.c b/drivers/net/enetfec/enet_rxtx.c
index 95767b561e..91a231af6c 100644
--- a/drivers/net/enetfec/enet_rxtx.c
+++ b/drivers/net/enetfec/enet_rxtx.c
@@ -17,12 +17,13 @@ enetfec_recv_pkts(void *rxq1, struct rte_mbuf **rx_pkts,
                uint16_t nb_pkts)
 {
        struct rte_mempool *pool;
-       struct bufdesc *bdp;
        struct rte_mbuf *mbuf, *new_mbuf = NULL;
        unsigned short status;
        unsigned short pkt_len;
        int pkt_received = 0, index = 0;
+       struct rte_ether_hdr *eth;
        void *data, *mbuf_data;
+       struct bufdesc *bdp;
        uint16_t vlan_tag;
        struct  bufdesc_ex *ebdp = NULL;
        bool    vlan_packet_rcvd = false;
@@ -92,6 +93,16 @@ enetfec_recv_pkts(void *rxq1, struct rte_mbuf **rx_pkts,
                        data = rte_pktmbuf_adj(mbuf, 2);
 
                rx_pkts[pkt_received] = mbuf;
+
+               /* Assuming Ethernet packets, doing software packet type 
parsing.
+                * To be replaced by HW packet parsing
+                */
+               eth = rte_pktmbuf_mtod(mbuf, struct rte_ether_hdr *);
+               mbuf->packet_type = RTE_PTYPE_L2_ETHER;
+               if (rte_be_to_cpu_16(eth->ether_type) == RTE_ETHER_TYPE_IPV4)
+                       mbuf->packet_type |= RTE_PTYPE_L3_IPV4;
+               if (rte_be_to_cpu_16(eth->ether_type) == RTE_ETHER_TYPE_IPV6)
+                       mbuf->packet_type |= RTE_PTYPE_L3_IPV6;
                pkt_received++;
 
                /* Extract the enhanced buffer descriptor */
-- 
2.25.1

Reply via email to