[dpdk-dev] mbuf->packet_type

Levend Sayar levendsayar at gmail.com
Mon Nov 2 11:45:57 CET 2020


Hi all.

Recently I encountered a dont-know-why issue about mbuf->packet_type.

Two different setups behave differently.

One is a bare metal server, one KVM based OpenStack VM (virtio).
Both use the uio driver. Namely only hardware is different. Software stack
is the same.

But this macro does not work on OpenStack platform.

*RTE_ETH_IS_IPV4_HDR(mbuf->packet_type))*

where

*#define  RTE_ETH_IS_IPV4_HDR(ptype) ((ptype) & RTE_PTYPE_L3_IPV4)*

I manually coded to check IPv4 like this:




*struct rte_ether_hdr* ether_hdr = rte_pktmbuf_mtod(mbuf, struct
rte_ether_hdr*);uint16_t ether_type = N2H16(ether_hdr->ether_type);if
(likely(ether_type == RTE_ETHER_TYPE_IPV4)) {*

Do you have any idea about this?
I suppose whoever fills that mbuf data packet_type field is not working in
a virtual environment.
Which entity fills that fields? Hardware driver, uio, dpdk?

Best,
Levend


More information about the dev mailing list