DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] multi-segment mbuf
@ 2016-03-21 23:34 Clarylin L
  2016-03-22 10:27 ` Bruce Richardson
  0 siblings, 1 reply; 6+ messages in thread
From: Clarylin L @ 2016-03-21 23:34 UTC (permalink / raw)
  To: dev

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.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-dev] multi-segment mbuf
  2016-03-21 23:34 [dpdk-dev] multi-segment mbuf Clarylin L
@ 2016-03-22 10:27 ` Bruce Richardson
  2016-03-22 20:36   ` Clarylin L
  0 siblings, 1 reply; 6+ messages in thread
From: Bruce Richardson @ 2016-03-22 10:27 UTC (permalink / raw)
  To: Clarylin L; +Cc: dev

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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-dev] multi-segment mbuf
  2016-03-22 10:27 ` Bruce Richardson
@ 2016-03-22 20:36   ` Clarylin L
  2016-03-22 22:13     ` Stephen Hemminger
  0 siblings, 1 reply; 6+ messages in thread
From: Clarylin L @ 2016-03-22 20:36 UTC (permalink / raw)
  To: Bruce Richardson; +Cc: dev

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@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
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-dev] multi-segment mbuf
  2016-03-22 20:36   ` Clarylin L
@ 2016-03-22 22:13     ` Stephen Hemminger
  2016-03-22 22:42       ` Clarylin L
  2016-03-22 22:58       ` Clarylin L
  0 siblings, 2 replies; 6+ messages in thread
From: Stephen Hemminger @ 2016-03-22 22:13 UTC (permalink / raw)
  To: Clarylin L; +Cc: Bruce Richardson, dev

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@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@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
> >
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-dev] multi-segment mbuf
  2016-03-22 22:13     ` Stephen Hemminger
@ 2016-03-22 22:42       ` Clarylin L
  2016-03-22 22:58       ` Clarylin L
  1 sibling, 0 replies; 6+ messages in thread
From: Clarylin L @ 2016-03-22 22:42 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Bruce Richardson, dev

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@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@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@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
>> >
>>
>
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-dev] multi-segment mbuf
  2016-03-22 22:13     ` Stephen Hemminger
  2016-03-22 22:42       ` Clarylin L
@ 2016-03-22 22:58       ` Clarylin L
  1 sibling, 0 replies; 6+ messages in thread
From: Clarylin L @ 2016-03-22 22:58 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Bruce Richardson, dev

Ok...I think you meant there's a bug in the driver code when formatting
multi-segment mbuf.

On Tue, Mar 22, 2016 at 3:13 PM, Stephen Hemminger <
stephen@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@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@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
>> >
>>
>
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-03-22 22:58 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-03-21 23:34 [dpdk-dev] multi-segment mbuf Clarylin L
2016-03-22 10:27 ` Bruce Richardson
2016-03-22 20:36   ` Clarylin L
2016-03-22 22:13     ` Stephen Hemminger
2016-03-22 22:42       ` Clarylin L
2016-03-22 22:58       ` Clarylin L

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).