[dpdk-dev] Loop back mode of the KNI
Hi Daniel Thanks for your good catch! Yes. That's a bug, and it will be fixed in later DPDK releases. Regards, Helin -Original Message- From: dev [mailto:dev-boun...@dpdk.org] On Behalf Of Daniel Kaminsky Sent: Friday, December 20, 2013 12:36 AM To: dev at dpdk.org Subject: [dpdk-dev] Loop back mode of the KNI Hi all, We're working on the KNI and we see a strange behavior which seems like a bug in the the kernel module. When running with *lo_mode=lo_mode_fifo *everything works as expected, the packets looks similar on the ingress and egress. But when running with *lo_mode=lo_mode_fifo_skb *the packets on the egress doesn't include the first 14 bytes (the ethernet header) although the packets size doesn't change. Thanks, Daniel
[dpdk-dev] Fwd: problem in running KNI application
Looking back in your first email and reading some of the kni sample application code, it seems to me that the application maps an lcore to one port. Based on these snippets, 1.) --- kni/main.c:930 rte_eal_mp_remote_launch(main_loop, NULL, CALL_MASTER); 2.) -- kni/main.c:379 if (flag == LCORE_RX) { RTE_LOG(INFO, APP, "Lcore %u is reading from port %d\n", } else if (flag == LCORE_TX) { RTE_LOG(INFO, APP, "Lcore %u is writing to port %d\n", . #1 runs the lcores one by one (once only) and #2 checks the function (tx/rx) to perform for the lcore. So, if this is correct, then assigning lcores to two ports will not work since the logic simply works on lcores one by one in one pass only. IOW, the second param. of --config is useless since lcore 1 is already assigned when mapping the first. Again if this is correct, the kni application is the one restricting this option and not DPDK. I've tried using 1 lcore to both read and write to/from 2 ports. Cheers, Pepe On Mon, Oct 28, 2013 at 8:03 PM, cr singh wrote: > Hi Devs, > > I am trying to run KNI application on my system (whose lstopo result is > attached herewith) , basically i am unable to insert correct > > --config="(port,lcore_rx,lcore_tx[,lcore_kthread,...])" > option while running it. > I am getting this > [root at localhost DPDK-1.5.0]# ./examples/kni/build/kni -c 0x3 -n 2 -- -P -p > 0x3 --config="(0,2,4,0),(1,1,3,0)" > > EAL: Cannot read numa node link for lcore 0 - using physical package id > instead > > EAL: Detected lcore 0 as core 0 on socket 0 > > EAL: Cannot read numa node link for lcore 1 - using physical package id > instead > > EAL: Detected lcore 1 as core 1 on socket 0 > > EAL: Setting up hugepage memory... > > EAL: cannot open /proc/self/numa_maps, consider that all memory is in > socket_id 0 > > EAL: Ask a virtual area of 0x398458880 bytes > > EAL: Virtual area found at 0x9e80 (size = 0x17c0) > > EAL: Ask a virtual area of 0x20971520 bytes > > EAL: Virtual area found at 0x9d00 (size = 0x140) > > EAL: Ask a virtual area of 0x8388608 bytes > > EAL: Virtual area found at 0x9c40 (size = 0x80) > > EAL: Requesting 102 pages of size 4MB from socket 0 > > EAL: TSC frequency is ~2893448 KHz > > EAL: Master core 0 is ready (tid=b7741800) > > EAL: Core 1 is ready (tid=b6e44b40) > > APP: Port ID: 0 > > APP: Rx lcore ID: 2, Tx lcore ID: 4 > > APP: Kernel thread lcore ID: 0 > > APP: Port ID: 1 > > APP: Rx lcore ID: 1, Tx lcore ID: 3 > > APP: Kernel thread lcore ID: 0 > > EAL: Error - exiting with code: 1 > > Cause: lcore id 2 for port 0 receiving not enabled > > can anybody please explain me the details of the --config option in kni > application > > > Thanks in advance > > -- > > cr singh > -- To stop learning is like to stop loving.
[dpdk-dev] Fwd: problem in running KNI application
Cr, Sorry, my previous reply is meant for the PM you've sent. Please ignore the preceeding reply. Cheers, Pepe On Wed, Dec 25, 2013 at 1:46 PM, Jose Gavine Cueto wrote: > Looking back in your first email and reading some of the kni sample > application code, it seems to me that the application maps an lcore to one > port. > > Based on these snippets, > > 1.) --- kni/main.c:930 > > rte_eal_mp_remote_launch(main_loop, NULL, CALL_MASTER); > > 2.) -- kni/main.c:379 > > if (flag == LCORE_RX) { > RTE_LOG(INFO, APP, "Lcore %u is reading from port %d\n", > > } else if (flag == LCORE_TX) { > RTE_LOG(INFO, APP, "Lcore %u is writing to port %d\n", > . > > #1 runs the lcores one by one (once only) and #2 checks the function > (tx/rx) to perform for the lcore. So, if this is correct, then assigning > lcores to two ports will not work since the logic simply works on lcores > one by one in one pass only. IOW, the second param. of --config is useless > since lcore 1 is already assigned when mapping the first. > > Again if this is correct, the kni application is the one restricting this > option and not DPDK. I've tried using 1 lcore to both read and write > to/from 2 ports. > > Cheers, > Pepe > > > On Mon, Oct 28, 2013 at 8:03 PM, cr singh wrote: > >> Hi Devs, >> >> I am trying to run KNI application on my system (whose lstopo result is >> attached herewith) , basically i am unable to insert correct >> >> --config="(port,lcore_rx,lcore_tx[,lcore_kthread,...])" >> option while running it. >> I am getting this >> [root at localhost DPDK-1.5.0]# ./examples/kni/build/kni -c 0x3 -n 2 -- -P >> -p >> 0x3 --config="(0,2,4,0),(1,1,3,0)" >> >> EAL: Cannot read numa node link for lcore 0 - using physical package id >> instead >> >> EAL: Detected lcore 0 as core 0 on socket 0 >> >> EAL: Cannot read numa node link for lcore 1 - using physical package id >> instead >> >> EAL: Detected lcore 1 as core 1 on socket 0 >> >> EAL: Setting up hugepage memory... >> >> EAL: cannot open /proc/self/numa_maps, consider that all memory is in >> socket_id 0 >> >> EAL: Ask a virtual area of 0x398458880 bytes >> >> EAL: Virtual area found at 0x9e80 (size = 0x17c0) >> >> EAL: Ask a virtual area of 0x20971520 bytes >> >> EAL: Virtual area found at 0x9d00 (size = 0x140) >> >> EAL: Ask a virtual area of 0x8388608 bytes >> >> EAL: Virtual area found at 0x9c40 (size = 0x80) >> >> EAL: Requesting 102 pages of size 4MB from socket 0 >> >> EAL: TSC frequency is ~2893448 KHz >> >> EAL: Master core 0 is ready (tid=b7741800) >> >> EAL: Core 1 is ready (tid=b6e44b40) >> >> APP: Port ID: 0 >> >> APP: Rx lcore ID: 2, Tx lcore ID: 4 >> >> APP: Kernel thread lcore ID: 0 >> >> APP: Port ID: 1 >> >> APP: Rx lcore ID: 1, Tx lcore ID: 3 >> >> APP: Kernel thread lcore ID: 0 >> >> EAL: Error - exiting with code: 1 >> >> Cause: lcore id 2 for port 0 receiving not enabled >> >> can anybody please explain me the details of the --config option in kni >> application >> >> >> Thanks in advance >> >> -- >> >> cr singh >> > > > > -- > To stop learning is like to stop loving. > -- To stop learning is like to stop loving.
[dpdk-dev] Loop back mode of the KNI
Thanks Helin, The "fix" below works for me but I don't think it's complete and correct for all kernels. Daniel Index: src/kernel/fast_kni/kni_net.c === --- src/kernel/fast_kni/kni_net.c +++ src/kernel/fast_kni/kni_net.c @@ -353,6 +353,12 @@ kni->stats.rx_bytes += len; kni->stats.rx_packets++; +/* adjust the skb */ +if (likely(skb_mac_header_was_set(skb))) { +skb->len += ETH_HLEN; +skb->data -= ETH_HLEN; +} + /* call tx interface */ kni_net_tx(skb, dev); } On Wed, Dec 25, 2013 at 2:50 AM, Zhang, Helin wrote: > Hi Daniel > > Thanks for your good catch! > Yes. That's a bug, and it will be fixed in later DPDK releases. > > Regards, > Helin > > -Original Message- > From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Daniel Kaminsky > Sent: Friday, December 20, 2013 12:36 AM > To: dev at dpdk.org > Subject: [dpdk-dev] Loop back mode of the KNI > > Hi all, > > We're working on the KNI and we see a strange behavior which seems like a > bug in the the kernel module. > > When running with *lo_mode=lo_mode_fifo *everything works as expected, the > packets looks similar on the ingress and egress. > But when running with *lo_mode=lo_mode_fifo_skb *the packets on the egress > doesn't include the first 14 bytes (the ethernet header) although the > packets size doesn't change. > > Thanks, > Daniel >