I'm trying to get several DPDK applications, each with their own DPRC (with a DPNI) to use a DPSW that is connected to DPMAC.3. In this use case, I would expect that the DPSW should be in the root DPRC (dprc.1).
In the simple example below, I have found that the DPDK application works when the dpsw is in dprc.2, but it does not work when the dpsw is in dprc.1. I've upgraded to the latest LSDK (20.04). I see packets leaving the DPNI (using restool), but don't see packets leaving the DPMAC.3. I don't see errors from restool or DPDK in either case.
Why does this not work?
restool -m # MC firmware version: 10.20.4
restool --version # restool LSDK-20.04
# Create container that has dpni to be used by DPDK application.
export DPRC=$(restool -s dprc create $ROOT_DPRC --label="DPDK Container" --options=DPRC_CFG_OPT_SPAWN_ALLOWED,DPRC_CFG_OPT_ALLOC_ALLOWED,DPRC_CFG_OPT_TOPOLOGY_CHANGES_ALLOWED,DPRC_CFG_OPT_IRQ_CFG_ALLOWED)
# Create dpni and put it in the created dprc.
ls-addni --container=$DPRC --no-link --options=DPNI_OPT_SINGLE_SENDER,DPNI_OPT_CUSTOM_CG,DPNI_OPT_HAS_KEY_MASKING,0x80000000 --num-tcs=1 --num-queues=16 --fs-entries=1 --vlan-entries=16 --qos-entries=64 --num-cgs=1
export DPNI=dpni.2 # result from running ls-addni
# Create dpsw
ls-addsw -i=9 dpmac.3 $DPNI --container=$DPRC # Works - can receive and send packets
ls-addsw -i=9 dpmac.3 $DPNI # This will use $ROOT_DPRC. It does NOT work: it cannot send or receive packets
# Problem: the dpsw should be in dprc.1, but it doesn't work there.