More Details on Interrupt Balancing/DPAA2 Config/DPIO Splitting

Some good news on this!

NXP has provided advice on how to create a DPL with all 10 ports while allowing packet flows to be distributed across all 8 cores. It can be done without any special firmware features providing certain hardware features like QoS classification and VLAN filtering aren’t used.

The trick is to reduce the number of entries put into the hardware flow steering table. By default 64 are allocated by firmware and userspace tools (ls-addni etc.). To use all 10 ports we have to reduce this to 56 and provide 8 queues (enough for all CPU cores):

The ls-addni command is:

ls-addni -nq=8 -t=1 -f=56 dpmac.X

Which results in this configuration in the DPL:

dpni@0 {
    num_queues = <8>;
    num_tcs = <1>;
    num_cgs = <1>;
    mac_filter_entries = <16>;
    vlan_filter_entries = <0>;
    fs_entries = <56>;
    qos_entries = <0>;
};

This seems to do the job:

(This is with 2x10G bridged in OpenWrt and 5 simultaneous iperf3 flows between hosts)

An updated default DPL can be downloaded at https://archive.traverse.com.au/pub/traverse/ls1088firmware/firmware-builds/branches/dpiobalance/399340667/components/eth-dpl-all.dtb

The changes to the default DPL is in this commit

If everything works ok I’ll release this as firmware v0.8.9 in a few days.

3 Likes