Hi all,
Recently freed my R7800 for tinkering and was wondering if I can get QSDK's NSS GMAC driver to work with DSA. The hope is that if it works, it can pave the way to get NSS acceleration working without force enabling swconfig.
The good news is that I got NSS GMAC working with DSA, but it doesn't seem stable.
Below are the SSH (yes, I can ssh into the R7800 once booted) output showing qca-nss-gmac driving both GMACs, with DSA.
Summary
root@OpenWrt:/sys/devices/platform/soc# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1502 qdisc fq_codel state UP qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1502 qdisc fq_codel state UP qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
4: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN qlen 1000
link/tunnel6 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
5: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN qlen 1000
link/sit 0.0.0.0 brd 0.0.0.0
6: gre0@NONE: <NOARP> mtu 1476 qdisc noop state DOWN qlen 1000
link/gre 0.0.0.0 brd 0.0.0.0
7: gretap0@NONE: <BROADCAST,MULTICAST> mtu 1462 qdisc noop state DOWN qlen 1000
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
8: erspan0@NONE: <BROADCAST,MULTICAST> mtu 1450 qdisc noop state DOWN qlen 1000
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
9: ip6gre0@NONE: <NOARP> mtu 1448 qdisc noop state DOWN qlen 1000
link/[823] 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
10: lan4@eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state LOWERLAYERDOWN qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
11: lan3@eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state LOWERLAYERDOWN qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
12: lan2@eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state LOWERLAYERDOWN qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
13: lan1@eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
14: wan@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state LOWERLAYERDOWN qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
15: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
root@OpenWrt:/sys/devices/platform/soc# uname -a
Linux OpenWrt 6.6.80 #0 SMP Wed Mar 5 19:23:50 2025 armv7l GNU/Linux
root@OpenWrt:~# ls -l /sys/bus/platform/drivers/nss-gmac/
lrwxrwxrwx 1 root root 0 Jan 1 00:04 37200000.ethernet -> ../../../../devices/platform/soc/37200000.ethernet
lrwxrwxrwx 1 root root 0 Jan 1 00:04 37400000.ethernet -> ../../../../devices/platform/soc/37400000.ethernet
--w------- 1 root root 4096 Jan 1 00:04 bind
lrwxrwxrwx 1 root root 0 Jan 1 00:04 module -> ../../../../module/qca_nss_gmac
--w------- 1 root root 4096 Jan 1 00:04 uevent
--w------- 1 root root 4096 Jan 1 00:04 unbind
Not ready for prime time tho. as I think I need to further understand how to get both the RGMII and SGMII MACs to play nice with the physical layer.
Good news is that now I can get the LAN1 - LAN4 ports working and using it to access LUCI.
The WAN port is a little finicky tho. I think it's due to me not configuring the SGMII MAC PHY link.
Will update back here when I have more progress.
Once I think the code is good enough, I'll push it into my Github repo.