The current instructions at
http://wiki.macchiatobin.net/tiki-index.php?page=Getting+Started+with+MUSDK
do not work at all. The 17.04 kernel branch cannot accept the kernel patches that are part of the 17.04 musdk branch; some later versions of the patches in the 17.04 musdk tree are already applied to the 17.04 kernel tree creating conflicts.
Using the 17.10 kernel branch + 17.10 musdk branch patches, which do apply, get an apparently working kernel which then chokes following the rest of the musdk wiki page flow.
(The name of the e cho sample in musdk has also changed in 17.10 musdk, compared to the wiki page written for 17.04…)
My test s cript is this
# ! / bin/sh
sudo insmod /lib/modules/musdk_uio.ko
sudo insmod /lib/modules/mv_pp_uio.ko
#sudo insmod /lib/modules/mv_sam_uio.ko
sudo ifconfig eth0 up ; sudo ifconfig eth0 promisc
sudo ifconfig eth1 up ; sudo ifconfig eth1 promisc
sudo musdk_pp2_pkt_echo -i eth0,eth1 -c 1 -m f:1 --no-echo
Under gdb…
Starting program: /usr/local/bin/musdk_pp2_pkt_echo -i eth0,eth1 -c 1 -m f:1 –no-echo
[Thread debugging using libthread_db enabled]
Using host libthread_db library “/lib/aarch64-linux-gnu/libthread_db.so.1”.
pkt-echo is started in Bridge mode – SW buffer release – Tx Retry enabled
Marvell Armada US (Build: Jun 3 2018 18:36:54)
Global initializations …
done
Local initializations …
pool-0:3: buff_size 384, num_buffs 4096
pool-0:4: buff_size 2048, num_buffs 1024
pool-1:3: buff_size 384, num_buffs 4096
pool-1:4: buff_size 2048, num_buffs 1024
[ERROR] pp2_port_rxqs_create: tc 0: num_in_qs: 1
—- GOP ID 0 configuration —-
Port mode : KR
Link status : link up
Port speed : 10G
Port duplex : full
[ERROR] pp2_port_rxqs_create: tc 0: num_in_qs: 1
—- GOP ID 0 configuration —-
Port mode : KR
Link status : link up
Port speed : 10G
Port duplex : full
done
[New Thread 0x7fb5363200 (LWP 2373)]
[New Thread 0x7fb4b22200 (LWP 2374)]
[ERROR] pp2_ppio_recv: NULL rxq, qid 1
[ERROR] pp2_ppio_recv: NULL rxq, qid 1
[ERROR] pp2_ppio_recv: NULL rxq, qid 2
[ERROR] pp2_ppio_recv: NULL rxq, qid 2
The [ERROR] things are just my pr_err() in there for debugging.
This forum won’t allow me to post the backtrace. It crashes in pp2_ppio_recv, drivers/ppv2/pp2_ppio.c:359.
I am using the dts unchanged from the kernel commit. It seems to feel both eth0 and eth1 end up being GOP ID 0.
And it seems to feel GOP ID 0 has only one rx queue, it seems to actually have 4. Because these other three are not initialized, when it receives something on a nonzero queue (qid is more than 0) it blows up.
/* TODO: After validation, delete recv_req variable */
log_rxq = port->tc[tc].first_log_rxq + qid;
rxq = port->rxqs[log_rxq];
I guess it does not extract the correct information from the kernel. But I only have a small diagnostic patch on top of musdk 982400481d6a0c855267b2974611ab26c5efcb1a (origin/musdk-armada-17.10) and exactly the commit 4961bb4f6abbd44de6f5cc06d11823cad14b2d12 (linux-4.4.52-armada-17.10) for the kernel pieces.
So… the stuff on the current wiki page cannot be done; the patches do not apply. Replacing it with 17.10 kernel + musdk the result does not work.