* [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).