PPPoE Offload with NSS cores


Any idea how to enable PPPoE offloading with the IPQ series (Slate/Flint)?
It’s very common in Europe and Middle East to use PPPoE for 1Gbit+ GPON unfortunately.


1 Like

Do you mean the current PPPoE is slow? or high CPU usage?

@alzhao The current PPPoE performance on Slate AX is well capable of going close to a gigabit but with bufferbloat (higher latency), I’ve managed to get it working with the NSS by looking at the IP806x patches at OpenWRT and making a custom build, the CPU is now at ~20% with a tiny latency increase on full gigabit load.


Hi, do you have a firmware to test, could you share the patch?


Hello, just saw your message, I simply followed your instructions at README in gli-infra-build for AXT1800 but enabled qcom-drv-nss-pppoe in menuconfig and that’s it.
Here are the counters that show that it’s working:

cat /sys/kernel/debug/qca-nss-drv/stats/pppoe
#pppoe base node stats start

        pppoe_rx_packets               = 420679          common
        pppoe_rx_bytes                 = 550615955       common
        pppoe_tx_packets               = 0               common
        pppoe_tx_bytes                 = 0               common
        pppoe_rx_dropped[0]            = 0               drop
        pppoe_rx_dropped[1]            = 0               drop
        pppoe_rx_dropped[2]            = 0               drop
        pppoe_rx_dropped[3]            = 0               drop
        pppoe_short_pppoe_hdr_length   = 0               exception
        pppoe_short_packet_length      = 0               exception
        pppoe_wrong_version_or_type    = 0               exception
        pppoe_wrong_code               = 0               exception
        pppoe_unsupported_ppp_protocol = 0               exception
        pppoe_disabled_bridge_packet   = 0               exception
0. nss interface id=31, netdevice=pppoe-wan

#pppoe session node stats

        pppoe[0]_rx_pkts                  = 420620          common
        pppoe[0]_rx_byts                  = 547241746       common
        pppoe[0]_tx_pkts                  = 0               common
        pppoe[0]_tx_byts                  = 0               common
        pppoe[0]_wrong_version_or_type    = 0               exception
        pppoe[0]_wrong_code               = 0               exception
        pppoe[0]_unsupported_ppp_protocol = 6               exception

Wi-Fi doesn’t seem to be offloaded, not sure how to test/enable that.
To add, the patch I used previously had the same result. (applied to nss-drv)
And no memory leaks so far.
Edit2: Noticed that the UDP VPNs and QUIC perform much better too.


Here is the kmod file for testing only, extract with tar zxpvf and tar xvf for data.tar.gz , copy /etc /lib to root.
If the slate refuses to boot simply reset or unbrick.
May also work with the flint if the kernel version is equal.

kmod-qca-nss-drv-pppoe_4.4.60+153998d70fdba508a59a28c13a606032cbf32686-2_arm_cortex-a7.ipk.zip (3.7 KB)