[dpdk-dev] mbuf->packet_type

Juhamatti Kuusisaari juhamatk at gmail.com
Tue Nov 3 09:02:30 CET 2020


Hello Levend,

The packet type is indeed filled by hw in case there is a support for
it. I think your application may be missing a ptype handling function
which checks the supported ptype handling of the hw and registers a
callback handling in case the hw does not support it.

Please see more details e.g. in l3fwd example application about the
ptype checks and callback registration.

Best regards,
--
 Juhamatti

On Tue, 3 Nov 2020 at 09:33, Levend Sayar <levendsayar at gmail.com> wrote:
>
> Hi all.
>
> Nobody cared about my mail. Am I in the wrong place?
> If so, can you forward me to the right place please?
>
> Best,
> Levend
>
> On Mon, Nov 2, 2020 at 1:45 PM Levend Sayar <levendsayar at gmail.com> wrote:
>
> > 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