[dpdk-dev] multi-segment mbuf

Clarylin L clearasu at gmail.com
Tue Mar 22 23:42:37 CET 2016


On my setup, the sending host is a regular one without running dpdk. It
sends out 2500-byte packet without fragmentation to the dpdk node.

Isn't it the enic pmd driver that is responsible for fetch the packet and
format the mbuf (or mbuf chain if required)? Or do you mean I need to write
my own codes to format the mbuf in the driver?

On Tue, Mar 22, 2016 at 3:13 PM, Stephen Hemminger <
stephen at networkplumber.org> wrote:

> 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