[dpdk-dev] multi-segment mbuf

Stephen Hemminger stephen at networkplumber.org
Tue Mar 22 23:13:08 CET 2016


Read the source.

A multi-segment mbuf has the first mbuf with nb_segs > 1 and chained by
next pointer.
It is a bug in the creator of the mbuf, if number of segments and next
chain don't
match.

There is a rte_pktmbuf_dump(), you can use to look at how your mbuf is
formatted.

On Tue, Mar 22, 2016 at 1:36 PM, Clarylin L <clearasu at gmail.com> wrote:

> Sorry my bad. The mbuf size has been accidentally changed to 3000.
>
> After fixing this by setting mbuf size to 2048, multi-segment mbuf still
> doesn't work. I was trying to send 2500-byte packets to the target system
> and was expecting to see two-segment mbuf chain), but got errors on it.
>
> Tue Mar 22 14:52:00 2016^@PMD: rte_enic_pmd: packet error
>
>
> Tue Mar 22 14:52:01 2016^@PMD: rte_enic_pmd: packet error
>
>
> Tue Mar 22 14:52:02 2016^@PMD: rte_enic_pmd: packet error
>
>
> Tue Mar 22 14:52:03 2016^@PMD: rte_enic_pmd: packet error
>
>
> Tue Mar 22 14:52:04 2016^@PMD: rte_enic_pmd: packet error
>
>
> Is enic supporting multi-segment mbuf? The dpdk version is 2.0.0. I have
> enabled jumbo-frame and enable_scatter for the port.
>
> On Tue, Mar 22, 2016 at 3:27 AM, Bruce Richardson <
> bruce.richardson at intel.com> wrote:
>
> > On Mon, Mar 21, 2016 at 04:34:50PM -0700, Clarylin L wrote:
> > > I am trying multi-segment mbuf, but it seems not working.
> > >
> > > On my target host, the mbuf size is set to 2048 and I am trying to send
> > > large packet to it (say 2500 bytes without fragmentation) from another
> > > host. I enabled both jumbo_frame and enable_scatter for the port. But I
> > saw
> > > on the target only one mbuf is received with data_len equal to 2500
> (it's
> > > supposed to be a two-mbuf chain).  Although mbuf itself is not working
> as
> > > expected, ping between two hosts succeeded (large ping size; no
> > > fragmentation).
> > >
> > > 1. my mbuf size is only 2048. how can it support receiving such large
> > > packet in one mbuf?
> > >
> > > 2.how to make it work as expected (enable multi-segment mbuf and
> receive
> > > using mbuf chain when needed)?
> > >
> > > Appreciate your help.
> >
> > Hi,
> >
> > when you get the single mbuf with data_len == 2500, what is the buf_len
> > value
> > reported as?
> >
> > /Bruce
> >
>


More information about the dev mailing list