https://sirherobrine23.com.br/tplink_xx230v/gpl_tplink-xx230v/src/commit/4d76b590398d1e510a2a893f6fc4c69bfedb5768/sdk/en7529/linux-4.4.115/arch/arm/boot/dts/en7523.dts#L295
https://sirherobrine23.com.br/tplink_xx230v/openwrt/src/commit/b8dc284d6687654b58be303c51135a40aa0c5764/target/linux/airoha/dts/en7523.dtsi#L398
Why are the values different?
On the EN7523 it has the WED connected via the GDM3 though and the port indexing has other meanings. But basically there is a PSE with different blocks connected to the PSE ports. And the QDMA is passing packets (descriptors) around.
This:
https://econet-linux.pkt.wiki/hardware/EN751221/frame-engine
and the following page 125
https://drive.google.com/file/d/1iZMXhaKoSO1bupRaXUShmNzj9Hj6n9Th/view
describes how things are connected and work.
On the EN7523 it has the WED connected via the GDM3 though and the port indexing has other meanings. But basically there is a PSE with different blocks connected to the PSE ports. And the QDMA is passing packets (descriptors) around.
graph TD
CPU <--> QDMA1
CPU --> QDMA2
subgraph Frame Engine EN7523
PPE1
QDMA1
QDMA2
NPU
GDM1
GDM2
GDM3
end
GDM1 --> MT7530_Switch[MT7530 Switch]
GDM2 --> WAN_xPON[WAN / xPON]
GDM3 --> WED["WED/WIFI/HSGMII(USB)/HSGMII(PCIe)"]
classDef default fill:#D3D3D3,stroke:#333,stroke-width:2px,color:#000;
classDef highlight fill:#FFE4E1,stroke:#8B0000,stroke-width:2px,color:#000;
class CPU,MT7530_Switch,WAN_xPON,WED highlight
class Frame_Engine,PPE,QDMA1,GDM1,QDMA2,GDM2 default
graph TD
subgraph System Bus
CPU <--> |INT, CFG_REG| PPE
DRAM <--> QDMA
TOPS <--> TDMA
WiFi <--> WED
CPU <--> ADMA
DRAM <--> WDMA
TOPS <--> EIP197
end
subgraph "PSE (L3 routing)"
PPE -- Port #0 <--> PSE
QDMA -- Port #8,9,13 <--> PSE
PSE -- p6 <--> L2_Switch_4_port_GPHY
end
GMAC_XGMAC2 <--> |2.5G PHY| 2.5G_PHY
GMAC_XGMAC2 <--> |HSGMII, USXGMII| HSGMII_USXGMII
GMAC_XGMAC3 <--> |HSGMII, USXGMII| HSGMII_USXGMII
L2_Switch_4_port_GPHY <--> |p0| RJ45_1
L2_Switch_4_port_GPHY <--> |p1| RJ45_2
L2_Switch_4_port_GPHY <--> |p2| RJ45_3
L2_Switch_4_port_GPHY <--> |p3| RJ45_4
subgraph Notes
pse_port_7_drop[PSE port #7 is for packet drop]
pse_port_6_qdma[PSE port #6 is QDMA HW path]
pse_port_11_reserved[PSE port #11 is reserved port]
end
classDef default fill:#D3D3D3,stroke:#3366cc,stroke-width:2px,color:#000;
classDef highlight fill:#ADD8E6,stroke:#3366cc,stroke-width:2px,color:#000;
class CPU,DRAM,TOPS,WiFi,System_Bus,PPE,ADMA,QDMA,WDMA,TDMA,EIP197,WED,PSE,GMAC_XGMAC2,GMAC_XGMAC3,L2_Switch_4_port_GPHY,2.5G_PHY,HSGMII_USXGMII,RJ45_1,RJ45_2,RJ45_3,RJ45_4,note,pse_port_7_drop,pse_port_6_qdma,pse_port_11_reserved default
class PPE,ADMA,QDMA,WDMA,TDMA,EIP197,WED,GMAC_XGMAC2,GMAC_XGMAC3,L2_Switch_4_port_GPHY highlight
so it will be something like this
```mermaid
graph TD
CPU <--> QDMA1
CPU --> QDMA2
subgraph Frame Engine EN7523
PPE1
QDMA1
QDMA2
NPU
GDM1
GDM2
GDM3
end
GDM1 --> MT7530_Switch[MT7530 Switch]
GDM2 --> WAN_xPON[WAN / xPON]
GDM3 --> WED["WED/WIFI/HSGMII(USB)/HSGMII(PCIe)"]
classDef default fill:#D3D3D3,stroke:#333,stroke-width:2px,color:#000;
classDef highlight fill:#FFE4E1,stroke:#8B0000,stroke-width:2px,color:#000;
class CPU,MT7530_Switch,WAN_xPON,WED highlight
class Frame_Engine,PPE,QDMA1,GDM1,QDMA2,GDM2 default
```
```mermaid
graph TD
subgraph System Bus
CPU <--> |INT, CFG_REG| PPE
DRAM <--> QDMA
TOPS <--> TDMA
WiFi <--> WED
CPU <--> ADMA
DRAM <--> WDMA
TOPS <--> EIP197
end
subgraph "PSE (L3 routing)"
PPE -- Port #0 <--> PSE
QDMA -- Port #8,9,13 <--> PSE
PSE -- p6 <--> L2_Switch_4_port_GPHY
end
GMAC_XGMAC2 <--> |2.5G PHY| 2.5G_PHY
GMAC_XGMAC2 <--> |HSGMII, USXGMII| HSGMII_USXGMII
GMAC_XGMAC3 <--> |HSGMII, USXGMII| HSGMII_USXGMII
L2_Switch_4_port_GPHY <--> |p0| RJ45_1
L2_Switch_4_port_GPHY <--> |p1| RJ45_2
L2_Switch_4_port_GPHY <--> |p2| RJ45_3
L2_Switch_4_port_GPHY <--> |p3| RJ45_4
subgraph Notes
pse_port_7_drop[PSE port #7 is for packet drop]
pse_port_6_qdma[PSE port #6 is QDMA HW path]
pse_port_11_reserved[PSE port #11 is reserved port]
end
classDef default fill:#D3D3D3,stroke:#3366cc,stroke-width:2px,color:#000;
classDef highlight fill:#ADD8E6,stroke:#3366cc,stroke-width:2px,color:#000;
class CPU,DRAM,TOPS,WiFi,System_Bus,PPE,ADMA,QDMA,WDMA,TDMA,EIP197,WED,PSE,GMAC_XGMAC2,GMAC_XGMAC3,L2_Switch_4_port_GPHY,2.5G_PHY,HSGMII_USXGMII,RJ45_1,RJ45_2,RJ45_3,RJ45_4,note,pse_port_7_drop,pse_port_6_qdma,pse_port_11_reserved default
class PPE,ADMA,QDMA,WDMA,TDMA,EIP197,WED,GMAC_XGMAC2,GMAC_XGMAC3,L2_Switch_4_port_GPHY highlight
```
This is the list of ports on the PSE and the component first connected to the port. Other things can be connected after it.
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/ethernet/airoha/airoha_eth.h?h=v6.18-rc4#n114
The router just arrived, I'm going to start building OpenWRT with the patchers to test it, but I'll probably only send the results tomorrow morning (Brazilian time)
The router just arrived, I'm going to start building OpenWRT with the patchers to test it, but I'll probably only send the results tomorrow morning (Brazilian time)
The port mask is 4 bits. It can never hold 0xFFFF. With different SoC configurations I think we should replace it with a table per SoC instead. Then we can load the correct SoC table during init. With 4 bits we only have 16 elements per SoC and a function call gets translated to a lookup table instead.
The port mask is 4 bits. It can never hold 0xFFFF. With different SoC configurations I think we should replace it with a table per SoC instead. Then we can load the correct SoC table during init. With 4 bits we only have 16 elements per SoC and a function call gets translated to a lookup table instead.
So I dropped 7 packets during a 2 day ping flood. I think the buffer handling is fine. Just need to route packets in the PSE properly.
No reported drops internally in the PSE either.
ping -f 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
.......^C
--- 192.168.1.1 ping statistics ---
1291673775 packets transmitted, 1291673768 received, 5.41932e-07% packet loss, time 176568864ms
rtt min/avg/max/mdev = 0.085/0.118/19.833/0.025 ms, pipe 2, ipg/ewma 0.136/0.127 ms
So I dropped 7 packets during a 2 day ping flood. I think the buffer handling is fine. Just need to route packets in the PSE properly.
No reported drops internally in the PSE either.
Okay, I'll remove the 0xffff, but after I changed that I was able to receive the packets without drops or significant loss when pinging in both directions
Okay, I'll remove the 0xffff, but after I changed that I was able to receive the packets without drops or significant loss when pinging in both directions
Maybe add a specific lookup value that prints out unknown sports.
I found these values:
//SPORT DEFINE
#define SPORT_QDMA_LAN 0
#define SPORT_GDMA1 1
#define SPORT_GDMA2 2//means wan , like SAR/PTM/xPON
#define SPORT_GDMA3 3//means lan, WDMA,xfi
#define SPORT_PPE 4
#define SPORT_QDMA_WAN 5//send to CPU via QDMA
#define SPORT_QDMA_HW 6//send to CPU via QDMA HW
#define SPORT_DISCARD 7
#define SPORT_CPU DPORT_PDMA
#define SPORT_NPU 6
Maybe add a specific lookup value that prints out unknown sports.
I found these values:
```
//SPORT DEFINE
#define SPORT_QDMA_LAN 0
#define SPORT_GDMA1 1
#define SPORT_GDMA2 2//means wan , like SAR/PTM/xPON
#define SPORT_GDMA3 3//means lan, WDMA,xfi
#define SPORT_PPE 4
#define SPORT_QDMA_WAN 5//send to CPU via QDMA
#define SPORT_QDMA_HW 6//send to CPU via QDMA HW
#define SPORT_DISCARD 7
#define SPORT_CPU DPORT_PDMA
#define SPORT_NPU 6
```
The hsgmii wan port sport value is missing and I cant find it. EN7523 have 4 HSGMII MACS.
Much of the en7512 code should be compatible. cjd found this GPL, which has several/all of the private code, and I also noticed that it is quite similar to some code I found within the xx230v GPL
It probably has something to do with the hsgmii wan port
> The hsgmii wan port sport value is missing and I cant find it. EN7523 have 4 HSGMII MACS.
Much of the en7512 code should be compatible. `cjd` found this GPL, which has several/all of the private code, and I also noticed that it is quite similar to some code I found within the xx230v GPL
It probably has something to do with the hsgmii wan port
https://sirherobrine23.com.br/Openwrt-EcoNet/TP-Link_XR500v_v2-6/src/commit/aea3a43562e8d3dc0335624202fde08d713a18c2/tclinux_phoenix/modules/private/ether/en7512/eth_en7512.h#L460-L480
I found this here:
https://sirherobrine23.com.br/Openwrt-EcoNet/TP-Link_XR500v_v2-6/src/commit/aea3a43562e8d3dc0335624202fde08d713a18c2/tclinux_phoenix/modules/private/xpon/inc/pwan/gpon_wan.h#L32-L45
Sirherobrine23
added a new dependency 2025-11-13 00:49:12 +00:00
I managed to get a small amount of network traffic, but then it freezes somewhere on airoha_eth
But then it stopped. I've attached the log for you to take a look at if you want
I managed to get a small amount of network traffic, but then it freezes somewhere on airoha_eth
But then it stopped. I've attached the log for you to take a look at if you want
Do we need to map the TCP here?
https://sirherobrine23.com.br/tplink_xx230v/kernel/src/commit/83d8f2e66e1c84a0fecf1fab0635e091f80484b7/drivers/net/ethernet/airoha/airoha_eth.c#L157-L219
This gives me properly sized packets but it is a highly dubious change. And it also seems the data is mapped incorrectly. Most likely we have some buffer alignment issue. Maybe the skb->data pointer needs an +4 offset also.
No VIP and IFC are filters that are active in the HW accelerated data forwarding path.
https://sirherobrine23.com.br/tplink_xx230v/kernel/src/commit/83d8f2e66e1c84a0fecf1fab0635e091f80484b7/drivers/net/ethernet/airoha/airoha_eth.c#L2103-L2105
I have
`len = skb_headlen(skb)+4;`
in my code here.
This gives me properly sized packets but it is a highly dubious change. And it also seems the data is mapped incorrectly. Most likely we have some buffer alignment issue. Maybe the skb->data pointer needs an +4 offset also.
I didn't make much progress today, but the responses on TCP increased, albeit altered
[boot_openwrt_2025-11-17_19-16.log](/attachments/9f22bb5c-8aef-44c5-8e95-1f918794748e)
I have been tracing the buffers and the xmit function in the driver gets the same data as higher level transmit functions. It seems the network data buffer is transmitted before the buffer is ready. The TCP header transmission is fine, it is just that the data seems to be ready much later. Can you try with adding some of the linux kernel configuration options from AN7581?
I have been tracing the buffers and the xmit function in the driver gets the same data as higher level transmit functions. It seems the network data buffer is transmitted before the buffer is ready. The TCP header transmission is fine, it is just that the data seems to be ready much later. Can you try with adding some of the linux kernel configuration options from AN7581?
I don't think this detachment works on the EN7523; I'm tinkering with it to see if that's the problem.
https://sirherobrine23.com.br/tplink_xx230v/kernel/src/commit/870b0c8bf05e61580e0d97edc79bf39c9bf3ac66/drivers/net/ethernet/airoha/airoha_eth.c#L1987-L1993
It's strange, but the TCP packets are working, but there's packet retransmission.
- [eth0_17_10.pcapng](/attachments/c682abef-4f2b-4dee-bdcb-501f5cb79121)
- [boot_openwrt_2025-11-18_16-54.log](/attachments/c957f5ee-acb5-4105-9e1d-dd0357a8e890)
I looked at this and while it is not really needed it looks like it does the correct thing.
> I don't think this detachment works on the EN7523; I'm tinkering with it to see if that's the problem.
>
> https://sirherobrine23.com.br/tplink_xx230v/kernel/src/commit/870b0c8bf05e61580e0d97edc79bf39c9bf3ac66/drivers/net/ethernet/airoha/airoha_eth.c#L1987-L1993
I looked at this and while it is not really needed it looks like it does the correct thing.
I installed python and transmitted raw packets. If I remove lan2 from the bridge the package buffer looks very different from what I am trying to transmit.
I installed python and transmitted raw packets. If I remove lan2 from the bridge the package buffer looks very different from what I am trying to transmit.
So the dump of the skb data buffer in tcp_transmit_skb(), shows different data compared to the output of tcpdump.
i noticed that difference too, something I'm experiencing within airoha_dev_xmit -> airoha_get_dsa_tag, the end of the full buffer is completely different.
So the data path works like this. The internal switch is connected to the PSE GDM1 port. The MT7530 switch port 6 is connected to the GDM1 and then port 2 is connected to the world.
When I trace the counters with the bridge down it disables the traffic somehow. If I disable the bridge the packet gets through. So if the bridge is active the interface will not work as the switch will block the traffic.
Now synthetic packets sent towards my computer work fine.
But pinging an ip set on lan2 will not work.
So the data path works like this. The internal switch is connected to the PSE GDM1 port. The MT7530 switch port 6 is connected to the GDM1 and then port 2 is connected to the world.
When I trace the counters with the bridge down it disables the traffic somehow. If I disable the bridge the packet gets through. So if the bridge is active the interface will not work as the switch will block the traffic.
Now synthetic packets sent towards my computer work fine.
But pinging an ip set on lan2 will not work.
The whole linux network stack just seem broken. If I go out of bridge mode and go directly on the interface I get a direct RST as a response from the TCP connection.
The whole linux network stack just seem broken. If I go out of bridge mode and go directly on the interface I get a direct RST as a response from the TCP connection.
The problem is probably with the DSA working with TCP packets, or something is invalidating the packets in airoha_eth, TCP and UDP packets are being processed irregularly somewhere in the drivers of airoha_eth or mt7530
The problem is probably with the DSA working with TCP packets, or something is invalidating the packets in `airoha_eth`, TCP and UDP packets are being processed irregularly somewhere in the drivers of `airoha_eth` or `mt7530`
The sk_buff struct has different length parameters. There might be an issue in the rx path of the driver (airoha_qdma_rx_process).
I did have to adjust the tx path with the +4:
len = skb_headlen(skb)+4;
data = skb->data;
index = q->head;
dev_dbg(NULL, "airoha_dev_xmit mid: headlen %d, len %d skb->data_len %d\n", len, skb->len, skb->data_len);
print_hex_dump_bytes("txd: ", DUMP_PREFIX_ADDRESS, data, 160);
The rx_process might need to get a length value correction also. If the networking stack gets badly formed sk_buffs from the driver then it sort of makes sense that the rest of the stack gets confused.
The sk_buff struct has different length parameters. There might be an issue in the rx path of the driver (airoha_qdma_rx_process).
I did have to adjust the tx path with the +4:
```
len = skb_headlen(skb)+4;
data = skb->data;
index = q->head;
dev_dbg(NULL, "airoha_dev_xmit mid: headlen %d, len %d skb->data_len %d\n", len, skb->len, skb->data_len);
print_hex_dump_bytes("txd: ", DUMP_PREFIX_ADDRESS, data, 160);
```
The rx_process might need to get a length value correction also. If the networking stack gets badly formed sk_buffs from the driver then it sort of makes sense that the rest of the stack gets confused.
Okay, so something I noticed is that I first need to access the router via SSH before I can open any HTTP requests, so something is still not working correctly. However, it is functional; on the local connection, I am getting almost 1 Gbps from the network interface, and my internet speed is almost fully reached (I have 600 Mbps, which is what I get on the main router). Besides that, I haven't had any other problems so far. Another thing is that Flow offloading type as Hardware or Software is very slow for now.
Okay, so something I noticed is that I first need to access the router via SSH before I can open any HTTP requests, so something is still not working correctly. However, it is functional; on the local connection, I am getting almost 1 Gbps from the network interface, and my internet speed is almost fully reached (I have 600 Mbps, which is what I get on the main router). Besides that, I haven't had any other problems so far. Another thing is that Flow offloading type as Hardware or Software is very slow for now.
Is this necessary, i removed/commented it out and had no more problems with the driver or packages?
https://sirherobrine23.com.br/tplink_xx230v/kernel/src/commit/480d374450c4f3144d6d55b7eb294d61c37f8f38/drivers/net/ethernet/airoha/airoha_eth.c#L490-L493
TX cant do fragmented skbufs. The dma engine just wont work. So I have to dig into the ref software and setup everything exactly like they do. Then maybe fragmentation starts working.
TX cant do fragmented skbufs. The dma engine just wont work. So I have to dig into the ref software and setup everything exactly like they do. Then maybe fragmentation starts working.
I dont think it matters until we want to get more speed. I just follow the ref code.
> Is this necessary, i removed/commented it out and had no more problems with the driver or packages?
>
> https://sirherobrine23.com.br/tplink_xx230v/kernel/src/commit/480d374450c4f3144d6d55b7eb294d61c37f8f38/drivers/net/ethernet/airoha/airoha_eth.c#L490-L493
I dont think it matters until we want to get more speed. I just follow the ref code.
I reverted some changes you made to airoha_eth and I took a quick test it. Tonight I'll leave iperf running so I can test it, but I find it strange that the upload speed has become so slow
I reverted some changes you made to `airoha_eth` and I took a quick test it. Tonight I'll leave iperf running so I can test it, but I find it strange that the upload speed has become so slow
If you remove NETIF_F_SG you should get better performance.
It all boils down to a tricky error with the qdma engine. This +4 should not be needed and I am trying to work around that. NETIF_F_SG is a good option to have and it would keep the driver logic mostly the same.
dev->hw_features = NETIF_F_IP_CSUM | NETIF_F_RXCSUM |
NETIF_F_TSO6 | NETIF_F_IPV6_CSUM |
NETIF_F_SG | NETIF_F_TSO |
NETIF_F_HW_TC;
If you remove NETIF_F_SG you should get better performance.
It all boils down to a tricky error with the qdma engine. This +4 should not be needed and I am trying to work around that. NETIF_F_SG is a good option to have and it would keep the driver logic mostly the same.
@merbanan I applied your changes to my code, I don't know why, but when I use gdmp I lose network traffic with an one SSH connection, then I lose all traffic on both TX/RX, but when I remove gdmp my network traffic becomes completely stable, but with limited upload (computer -> Openwrt || Openwrt -> Internet)
@merbanan I applied your changes to my code, I don't know why, but when I use `gdmp` I lose network traffic with an one SSH connection, then I lose all traffic on both TX/RX, but when I remove `gdmp` my network traffic becomes completely stable, but with limited upload (computer -> Openwrt || Openwrt -> Internet)
I tried with a 10mbit link and still get bad frames out of the device. I looked at the byte counters and they checked out.
The data path from the cpu is GDM1 tx -> ESW port 6 rx -> ESW port 2 tx.
I tried with a 10mbit link and still get bad frames out of the device. I looked at the byte counters and they checked out.
The data path from the cpu is GDM1 tx -> ESW port 6 rx -> ESW port 2 tx.
Today I got the GPL for xx530v v2, it's another SOC from the Econet/Airoha family, not same to v1
- https://sirherobrine23.com.br/tplink_gpl/tplink-xx530v_v2/src/branch/main/sdk/an7551/openwrt-21.02/openwrt-21.02.1_dev/linux-5.4.55
Ok, I was able to get one proper packet through but then things started to crash. I had to dump all the registers of the ref software internal switch and write them to the openwrt port. I have made alot of changes all over so it will take some time to figure out what is needed.
Ok, I was able to get one proper packet through but then things started to crash. I had to dump all the registers of the ref software internal switch and write them to the openwrt port. I have made alot of changes all over so it will take some time to figure out what is needed.
There are still issues with the passing traffic though. Iperf3 gives bad results.
devmem 0x1fb5b600 32 0x205e33b
That makes the +4 in the tx path redundant.
There are still issues with the passing traffic though. Iperf3 gives bad results.
devmem 0x1fb5b0F0 32 0xFF00
#define MT7530_CKGCR 0x30F0
#define LPI_TXIDLE_THD GENMASK(15, 8)
#define CKG_TXIDLE BIT(5)
#define CKG_RXLPI BIT(4)
#define CKG_LNKDN_PORT BIT(1)
#define CKG_LNKDN_GLB BIT(0)
MT7530_CKGCR should be set to 0xFF00
This does not seem to affect traffic
That is the correct irq for the switch. And I was able to get interrupts when connecting/disconnecting ethernet cables in the ports.
I think it should hook up to the same irq handler logic as the EN7581.
interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
That is the correct irq for the switch. And I was able to get interrupts when connecting/disconnecting ethernet cables in the ports.
I think it should hook up to the same irq handler logic as the EN7581.
mt7530-mmio 1fb58000.switch lan2: Link is Up - 100Mbps/Half - flow control off
This sounds bad.
I had forced the link to 100mbps on my computer
> ` mt7530-mmio 1fb58000.switch lan2: Link is Up - 100Mbps/Half - flow control off`
>
> This sounds bad.
I had forced the link to 100mbps on my computer
[ 1294.674671] br-lan: port 2(lan2) entered forwarding state
[ 1295.699589] mt7530-mmio 1fb58000.switch lan2: Link is Down
[ 1295.705262] br-lan: port 2(lan2) entered disabled state
[ 1297.781018] mt7530-mmio 1fb58000.switch lan2: Link is Up - 100Mbps/Half - flow control off
[ 1297.789472] br-lan: port 2(lan2) entered blocking state
[ 1297.794725] br-lan: port 2(lan2) entered forwarding state
[ 1543.227067] mt7530-mmio 1fb58000.switch lan2: Link is Down
[ 1543.232758] br-lan: port 2(lan2) entered disabled state
[ 1546.348406] mt7530-mmio 1fb58000.switch lan2: Link is Up - 1Gbps/Full - flow control rx/tx
[ 1546.356822] br-lan: port 2(lan2) entered blocking state
[ 1546.362067] br-lan: port 2(lan2) entered forwarding state
100Mbps half, no traffic
```
[ 1543.227067] mt7530-mmio 1fb58000.switch lan2: Link is Down
[ 1543.232758] br-lan: port 2(lan2) entered disabled state
[ 1546.348406] mt7530-mmio 1fb58000.switch lan2: Link is Up - 1Gbps/Full - flow control rx/tx
[ 1546.356822] br-lan: port 2(lan2) entered blocking state
[ 1546.362067] br-lan: port 2(lan2) entered forwarding state
```
SoC Interrupt 31 should not be triggering at all. Look at /proc/interrupts. If it is triggering then something is fishy with the enabling of interrupts. I validated manually.
What does devmem 0x1FB5F008 say?
SoC Interrupt 31 should not be triggering at all. Look at /proc/interrupts. If it is triggering then something is fishy with the enabling of interrupts. I validated manually.
What does devmem 0x1FB5F008 say?
When everything is working properly we should get proper interrupts from when something changes with the phy.
[ 64.776455] mt7530-mmio 1fb58000.switch lan1 (uninitialized): PHY [mt7530-0:09] driver [Generic PHY] (irq=POLL)
[ 64.793774] mt7530-mmio 1fb58000.switch lan2 (uninitialized): PHY [mt7530-0:0a] driver [Generic PHY] (irq=POLL)
[ 64.806081] mt7530-mmio 1fb58000.switch lan3 (uninitialized): PHY [mt7530-0:0b] driver [Generic PHY] (irq=POLL)
[ 64.818353] mt7530-mmio 1fb58000.switch wan (uninitialized): PHY [mt7530-0:0c] driver [Generic PHY] (irq=POLL)
These lines should change to real irqs.
SoC Interrupt 31 should not be triggering at all. Look at /proc/interrupts. If it is triggering then something is fishy with the enabling of interrupts. I validated manually.
I added the en7523 to mtk-ge-soc.c, and removed the alterations you requested, but my TCP packets are requesting retransmission, although ICMP is working normally
root@OpenWrt:~# apk update
wget: Failed to send request: Operation not permitted
ERROR: wget: exited with error 4
WARNING: updating and opening https://downloads.openwrt.org/snapshots/targets/airoha/en7523/packages/packages.adb: unexpected end of file
wget: Failed to send request: Operation not permitted
ERROR: wget: exited with error 4
WARNING: updating and opening https://downloads.openwrt.org/snapshots/packages/arm_cortex-a7/base/packages.adb: unexpected end of file
wget: Failed to send request: Operation not permitted
ERROR: wget: exited with error 4
WARNING: updating and opening https://downloads.openwrt.org/snapshots/packages/arm_cortex-a7/luci/packages.adb: unexpected end of file
wget: Failed to send request: Operation not permitted
ERROR: wget: exited with error 4
WARNING: updating and opening https://downloads.openwrt.org/snapshots/packages/arm_cortex-a7/packages/packages.adb: unexpected end of file
wget: Failed to send request: Operation not permitted
ERROR: wget: exited with error 4
WARNING: updating and opening https://downloads.openwrt.org/snapshots/packages/arm_cortex-a7/routing/packages.adb: unexpected end of file
wget: Failed to send request: Operation not permitted
ERROR: wget: exited with error 4
WARNING: updating and opening https://downloads.openwrt.org/snapshots/packages/arm_cortex-a7/telephony/packages.adb: unexpected end of file
wget: Failed to send request: Operation not permitted
ERROR: wget: exited with error 4
WARNING: updating and opening https://downloads.openwrt.org/snapshots/packages/arm_cortex-a7/video/packages.adb: unexpected end of file
7 unavailable, 0 stale; 187 distinct packages available
root@OpenWrt:~# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1): 56 data bytes
64 bytes from 192.168.1.1: seq=0 ttl=64 time=0.598 ms
64 bytes from 192.168.1.1: seq=1 ttl=64 time=0.499 ms
64 bytes from 192.168.1.1: seq=2 ttl=64 time=0.502 ms
64 bytes from 192.168.1.1: seq=3 ttl=64 time=0.508 ms
64 bytes from 192.168.1.1: seq=4 ttl=64 time=0.494 ms
64 bytes from 192.168.1.1: seq=5 ttl=64 time=0.502 ms
^C
--- 192.168.1.1 ping statistics ---
6 packets transmitted, 6 packets received, 0% packet loss
round-trip min/avg/max = 0.494/0.517/0.598 ms
root@OpenWrt:~# ip addr
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
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1504 qdisc mq state UNKNOWN qlen 1000
link/ether d8:44:89:bd:cf:d8 brd ff:ff:ff:ff:ff:ff
inet6 fe80::da44:89ff:febd:cfd8/64 scope link
valid_lft forever preferred_lft forever
3: lan1@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state DOWN qlen 1000
link/ether d8:44:89:bd:cf:d8 brd ff:ff:ff:ff:ff:ff
4: lan2@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state DOWN qlen 1000
link/ether d8:44:89:bd:cf:d8 brd ff:ff:ff:ff:ff:ff
5: lan3@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state DOWN qlen 1000
link/ether d8:44:89:bd:cf:d8 brd ff:ff:ff:ff:ff:ff
6: wan@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
link/ether d8:44:89:bd:cf:d8 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.8/24 brd 192.168.1.255 scope global wan
valid_lft forever preferred_lft forever
inet6 fe80::da44:89ff:febd:cfd8/64 scope link
valid_lft forever preferred_lft forever
7: br-lan: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
link/ether d8:44:89:bd:cf:d8 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.1/24 brd 192.168.2.255 scope global br-lan
valid_lft forever preferred_lft forever
inet6 fdfd:a42c:9933::1/60 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::da44:89ff:febd:cfd8/64 scope link
valid_lft forever preferred_lft forever
root@OpenWrt:~#
I added the en7523 to `mtk-ge-soc.c`, and removed the alterations you requested, but my TCP packets are requesting retransmission, although ICMP is working normally
```
root@OpenWrt:~# apk update
wget: Failed to send request: Operation not permitted
ERROR: wget: exited with error 4
WARNING: updating and opening https://downloads.openwrt.org/snapshots/targets/airoha/en7523/packages/packages.adb: unexpected end of file
wget: Failed to send request: Operation not permitted
ERROR: wget: exited with error 4
WARNING: updating and opening https://downloads.openwrt.org/snapshots/packages/arm_cortex-a7/base/packages.adb: unexpected end of file
wget: Failed to send request: Operation not permitted
ERROR: wget: exited with error 4
WARNING: updating and opening https://downloads.openwrt.org/snapshots/packages/arm_cortex-a7/luci/packages.adb: unexpected end of file
wget: Failed to send request: Operation not permitted
ERROR: wget: exited with error 4
WARNING: updating and opening https://downloads.openwrt.org/snapshots/packages/arm_cortex-a7/packages/packages.adb: unexpected end of file
wget: Failed to send request: Operation not permitted
ERROR: wget: exited with error 4
WARNING: updating and opening https://downloads.openwrt.org/snapshots/packages/arm_cortex-a7/routing/packages.adb: unexpected end of file
wget: Failed to send request: Operation not permitted
ERROR: wget: exited with error 4
WARNING: updating and opening https://downloads.openwrt.org/snapshots/packages/arm_cortex-a7/telephony/packages.adb: unexpected end of file
wget: Failed to send request: Operation not permitted
ERROR: wget: exited with error 4
WARNING: updating and opening https://downloads.openwrt.org/snapshots/packages/arm_cortex-a7/video/packages.adb: unexpected end of file
7 unavailable, 0 stale; 187 distinct packages available
root@OpenWrt:~# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1): 56 data bytes
64 bytes from 192.168.1.1: seq=0 ttl=64 time=0.598 ms
64 bytes from 192.168.1.1: seq=1 ttl=64 time=0.499 ms
64 bytes from 192.168.1.1: seq=2 ttl=64 time=0.502 ms
64 bytes from 192.168.1.1: seq=3 ttl=64 time=0.508 ms
64 bytes from 192.168.1.1: seq=4 ttl=64 time=0.494 ms
64 bytes from 192.168.1.1: seq=5 ttl=64 time=0.502 ms
^C
--- 192.168.1.1 ping statistics ---
6 packets transmitted, 6 packets received, 0% packet loss
round-trip min/avg/max = 0.494/0.517/0.598 ms
root@OpenWrt:~# ip addr
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
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1504 qdisc mq state UNKNOWN qlen 1000
link/ether d8:44:89:bd:cf:d8 brd ff:ff:ff:ff:ff:ff
inet6 fe80::da44:89ff:febd:cfd8/64 scope link
valid_lft forever preferred_lft forever
3: lan1@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state DOWN qlen 1000
link/ether d8:44:89:bd:cf:d8 brd ff:ff:ff:ff:ff:ff
4: lan2@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state DOWN qlen 1000
link/ether d8:44:89:bd:cf:d8 brd ff:ff:ff:ff:ff:ff
5: lan3@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state DOWN qlen 1000
link/ether d8:44:89:bd:cf:d8 brd ff:ff:ff:ff:ff:ff
6: wan@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
link/ether d8:44:89:bd:cf:d8 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.8/24 brd 192.168.1.255 scope global wan
valid_lft forever preferred_lft forever
inet6 fe80::da44:89ff:febd:cfd8/64 scope link
valid_lft forever preferred_lft forever
7: br-lan: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
link/ether d8:44:89:bd:cf:d8 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.1/24 brd 192.168.2.255 scope global br-lan
valid_lft forever preferred_lft forever
inet6 fdfd:a42c:9933::1/60 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::da44:89ff:febd:cfd8/64 scope link
valid_lft forever preferred_lft forever
root@OpenWrt:~#
```
https://sirherobrine23.com.br/airoha_en7523/kernel/src/commit/af865b0d0bb2e65deefc9d9f68f2443423194050/drivers/net/phy/mediatek/mtk-ge-soc.c#L1519-L1529
I added the en7523 to mtk-ge-soc.c, and removed the alterations you requested, but my TCP packets are requesting retransmission, although ICMP is working normally
I dont follow which ips are what and what direction you do things. TCP retransmission is bound to happen if you max out the link somehow.
I only test with the router are 192.168.1.1 and the computer client at 192.168.1.100. I then run iperf3 from the computer.
> I added the en7523 to `mtk-ge-soc.c`, and removed the alterations you requested, but my TCP packets are requesting retransmission, although ICMP is working normally
I dont follow which ips are what and what direction you do things. TCP retransmission is bound to happen if you max out the link somehow.
I only test with the router are 192.168.1.1 and the computer client at 192.168.1.100. I then run iperf3 from the computer.
I thought you had it working. Anyway this is the code I am using +
devmem 0x1fb5b0ec 32 0x2
devmem 0x1fb5b0F0 32 0x0000FF00
devmem 0x1fb5b600 32 0x205e33b
I am so sorry (cant understand it to me this amount of time to find this):
if (skb->len > 2048)
goto error;
Get rid of that line and you should get ~200mbit tx.
All in all while the code works the complete patch needs to be reworked. I think the MT7530 patches are good to go. For Openwrt I think this type of patch is going to be accept.
Are you up for sending this code up stream?
Also phy irq support is missing. And the dtsi should be cleanup like the an7581.dtsi has been.
I am so sorry (cant understand it to me this amount of time to find this):
if (skb->len > 2048)
goto error;
Get rid of that line and you should get ~200mbit tx.
All in all while the code works the complete patch needs to be reworked. I think the MT7530 patches are good to go. For Openwrt I think this type of patch is going to be accept.
Are you up for sending this code up stream?
Also phy irq support is missing. And the dtsi should be cleanup like the an7581.dtsi has been.
Correct, something must be missing when resolving the irq path, I am guessing it is the MT7530/EN7523 integration code. I am still rebuilding my setup so I can not test yet.
Correct, something must be missing when resolving the irq path, I am guessing it is the MT7530/EN7523 integration code. I am still rebuilding my setup so I can not test yet.
Well everything is passing via the cpu. NPU should not do anything.
I enabled hardware Flow offloading type. Before enabling it, I had 323Mbps Tx and Rx.
> Well everything is passing via the cpu. NPU should not do anything.
I enabled hardware Flow offloading type. Before enabling it, I had 323Mbps Tx and Rx.
if I'm not mistaken, the NPU handles part of the network traffic on the switch and wireless (tx ring)
These are speed tests I ran on speed.cloudflare.com
1. 500Mbps download, 390Mbps upload: offloading hardware enabled, ethernet
2. 351Mbps download, 331Mbps upload: offloading hardware disabled, ethernet
3. 502Mbps download, 282Mbps upload: offloading hardware disabled, wireless
4. 577Mbps download, 306Mbps upload: offloading hardware enabled, wireless
if I'm not mistaken, the NPU handles part of the network traffic on the switch and wireless (tx ring)
Check the cpu while doing an iperf test through the device. I am quite sure the NPUs are not involved at all.
You're right, but CPU usage has dropped significantly; it used to be 20-27%, and now it's around 16-22%
> Check the cpu while doing an iperf test through the device. I am quite sure the NPUs are not involved at all.
You're right, but CPU usage has dropped significantly; it used to be 20-27%, and now it's around 16-22%
I'm having problems with the NPU again. The whole system freezes after the interface starts up. If I disable it, it works normally again, but without the NPU and hardware offloading disabled and with the total speed reduced
[ 24.371993] mt7530-mmio 1fb58000.switch lan1: configuring for phy/internal link mode
[ 24.389733] br-lan: port 1(lan1) entered blocking state
[ 24.395011] br-lan: port 1(lan1) entered disabled state
[ 24.400403] mt7530-mmio 1fb58000.switch lan1: entered allmulticast mode
[ 24.407058] airoha_eth 1fb50000.ethernet eth0: entered allmulticast mode
[ 24.414265] mt7530-mmio 1fb58000.switch lan1: entered promiscuous mode
[ 24.424618] mt7530-mmio 1fb58000.switch lan2: configuring for phy/internal link mode
[ 24.433492] br-lan: port 2(lan2) entered blocking state
[ 24.438763] br-lan: port 2(lan2) entered disabled state
[ 24.444162] mt7530-mmio 1fb58000.switch lan2: entered allmulticast mode
[ 24.451191] mt7530-mmio 1fb58000.switch lan2: entered promiscuous mode
[ 24.462243] mt7530-mmio 1fb58000.switch lan3: configuring for phy/internal link mode
[ 24.471100] br-lan: port 3(lan3) entered blocking state
[ 24.476375] br-lan: port 3(lan3) entered disabled state
[ 24.481749] mt7530-mmio 1fb58000.switch lan3: entered allmulticast mode
[ 24.488725] mt7530-mmio 1fb58000.switch lan3: entered promiscuous mode
[ 24.537527] mt7530-mmio 1fb58000.switch wan: configuring for phy/internal link mode
I'm having problems with the NPU again. The whole system freezes after the interface starts up. If I disable it, it works normally again, but without the NPU and hardware offloading disabled and with the total speed reduced
```
[ 24.371993] mt7530-mmio 1fb58000.switch lan1: configuring for phy/internal link mode
[ 24.389733] br-lan: port 1(lan1) entered blocking state
[ 24.395011] br-lan: port 1(lan1) entered disabled state
[ 24.400403] mt7530-mmio 1fb58000.switch lan1: entered allmulticast mode
[ 24.407058] airoha_eth 1fb50000.ethernet eth0: entered allmulticast mode
[ 24.414265] mt7530-mmio 1fb58000.switch lan1: entered promiscuous mode
[ 24.424618] mt7530-mmio 1fb58000.switch lan2: configuring for phy/internal link mode
[ 24.433492] br-lan: port 2(lan2) entered blocking state
[ 24.438763] br-lan: port 2(lan2) entered disabled state
[ 24.444162] mt7530-mmio 1fb58000.switch lan2: entered allmulticast mode
[ 24.451191] mt7530-mmio 1fb58000.switch lan2: entered promiscuous mode
[ 24.462243] mt7530-mmio 1fb58000.switch lan3: configuring for phy/internal link mode
[ 24.471100] br-lan: port 3(lan3) entered blocking state
[ 24.476375] br-lan: port 3(lan3) entered disabled state
[ 24.481749] mt7530-mmio 1fb58000.switch lan3: entered allmulticast mode
[ 24.488725] mt7530-mmio 1fb58000.switch lan3: entered promiscuous mode
[ 24.537527] mt7530-mmio 1fb58000.switch wan: configuring for phy/internal link mode
```
Yeah, can you test loading the driver but not starting the cores? I think they simply corrupt the kernel internal structures or act on non zeroed buffer memory.
It is very hard to figure out what the issue is in this case. If you are able to find gpio 8/9 you should be able to enable the npu uart mux and see if there is any output from the npu driver. But this is all hard problems. I do have a ref board where I should be able to connect this but I dont see a path forward where this issue is getting fixed by being able to observe the npu uart.
The best way forward imo is to disable the npu for now and focus on the WED implementation. The MT7622 support should be possible to port to the en7523 code.
Yeah, can you test loading the driver but not starting the cores? I think they simply corrupt the kernel internal structures or act on non zeroed buffer memory.
It is very hard to figure out what the issue is in this case. If you are able to find gpio 8/9 you should be able to enable the npu uart mux and see if there is any output from the npu driver. But this is all hard problems. I do have a ref board where I should be able to connect this but I dont see a path forward where this issue is getting fixed by being able to observe the npu uart.
The best way forward imo is to disable the npu for now and focus on the WED implementation. The MT7622 support should be possible to port to the en7523 code.
Make sure you power cycle the device. The wifi driver npu support might need disabling also.
The mt7915 not have NPU and wed currently in OpenWRT builds, only mt7996
> Make sure you power cycle the device. The wifi driver npu support might need disabling also.
The mt7915 not have NPU and wed currently in OpenWRT builds, only mt7996
I disabled cores 3 and 4 and get the NPU active again, but if I enable cores 3 and 4, the system freezes, and if I enable even core 3, the system freezes before even starting the network interface
core 1, 2 and 3 boot
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 6.12.63 (sirherobrine23@matheus-note) (arm-openwrt-linux-muslgnueabi-gcc (OpenWrt GCC 14.3.0 r32493-8d680de76a) 14.3.0, GNU ld (GNU Binutils) 2.44) #0 SMP Fri Jan 9 13:48:45 2026
[ 0.000000] CPU: ARMv7 Processor [410fd034] revision 4 (ARMv7), cr=10c5383d
[ 0.000000] CPU: div instructions available: patching division code
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] OF: fdt: Machine model: TP-Link xx230v
[ 0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
[ 0.000000] earlycon: ns16550 at MMIO32 0x1fbf0000 (options '115200n8')
[ 0.000000] printk: legacy bootconsole [ns16550] enabled
[ 0.000000] Memory policy: Data cache writealloc
[ 0.000000] OF: reserved mem: Reserved memory: failed to reserve memory for node 'npu_binary@84000000': base 0x84000000, size 1 MiB
[ 0.000000] Zone ranges:
[ 0.000000] Normal [mem 0x0000000080200000-0x000000008fffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000080200000-0x0000000086ffffff]
[ 0.000000] node 0: [mem 0x0000000087000000-0x0000000089ffffff]
[ 0.000000] node 0: [mem 0x000000008a000000-0x000000008fffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x000000008fffffff]
[ 0.000000] On node 0, zone Normal: 512 pages in unavailable ranges
[ 0.000000] OF: reserved mem: 0x84000000..0x840fffff (1024 KiB) nomap non-reusable npu_binary@84000000
[ 0.000000] OF: reserved mem: 0x87000000..0x88ffffff (32768 KiB) nomap non-reusable qdma0-buf@87000000
[ 0.000000] OF: reserved mem: 0x89000000..0x89ffffff (16384 KiB) nomap non-reusable qdma1-buf@89000000
[ 0.000000] psci: probing for conduit method from DT.
[ 0.000000] psci: PSCIv1.1 detected in firmware.
[ 0.000000] psci: Using standard PSCI v0.2 function IDs
[ 0.000000] psci: MIGRATE_INFO_TYPE not supported.
[ 0.000000] psci: SMC Calling Convention v1.1
[ 0.000000] percpu: Embedded 14 pages/cpu s24780 r8192 d24372 u57344
[ 0.000000] Kernel command line: console=ttyS0,115200 earlycon
[ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes, linear)
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 65024
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] Tracing variant of Tasks RCU enabled.
[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[ 0.000000] RCU Tasks Trace: Setting shift to 1 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=2.
[ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[ 0.000000] GICv3: 256 SPIs implemented
[ 0.000000] GICv3: 0 Extended SPIs implemented
[ 0.000000] GICv3: GICv3 features: 16 PPIs
[ 0.000000] GICv3: GICD_CTRL.DS=0, SCR_EL3.FIQ=0
[ 0.000000] GICv3: CPU0: found redistributor 0 region 0:0x09080000
[ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[ 0.000000] arch_timer: cp15 timer(s) running at 25.00MHz (virt).
[ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x5c40939b5, max_idle_ns: 440795202646 ns
[ 0.000001] sched_clock: 56 bits at 25MHz, resolution 40ns, wraps every 4398046511100ns
[ 0.008800] Switching to timer-based delay loop, resolution 40ns
[ 0.015571] Calibrating delay loop (skipped), value calculated using timer frequency.. 50.00 BogoMIPS (lpj=250000)
[ 0.026958] CPU: Testing write buffer coherency: ok
[ 0.032340] pid_max: default: 32768 minimum: 301
[ 0.045203] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.053255] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.065194] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[ 0.072479] Setting up static identity map for 0x80300000 - 0x80300060
[ 0.079848] rcu: Hierarchical SRCU implementation.
[ 0.085117] rcu: Max phase no-delay instances is 1000.
[ 0.091156] Timer migration: 1 hierarchy levels; 8 children per group; 1 crossnode level
[ 0.100362] smp: Bringing up secondary CPUs ...
[ 0.120456] GICv3: CPU1: found redistributor 1 region 0:0x090a0000
[ 0.120510] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[ 0.120653] smp: Brought up 1 node, 2 CPUs
[ 0.138165] SMP: Total of 2 processors activated (100.00 BogoMIPS).
[ 0.145065] CPU: All CPU(s) started in SVC mode.
[ 0.150611] Memory: 141104K/260096K available (7784K kernel code, 600K rwdata, 2032K rodata, 55296K init, 221K bss, 118236K reserved, 0K cma-reserved)
[ 0.169697] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.180572] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
[ 0.191993] pinctrl core: initialized pinctrl subsystem
[ 0.199785] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[ 0.206598] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.214941] thermal_sys: Registered thermal governor 'step_wise'
[ 0.215026] cpuidle: using governor menu
[ 0.226906] debugfs: Directory '1fa20000.system-controller' with parent 'regmap' already present!
[ 0.237771] /pcie@1fa91000: Fixed dependency cycle(s) with /pcie@1fa91000/interrupt-controller
[ 0.247678] /pcie@1fa92000: Fixed dependency cycle(s) with /pcie@1fa92000/interrupt-controller
[ 0.269244] SCSI subsystem initialized
[ 0.273590] usbcore: registered new interface driver usbfs
[ 0.279728] usbcore: registered new interface driver hub
[ 0.285593] usbcore: registered new device driver usb
[ 0.291296] Advanced Linux Sound Architecture Driver Initialized.
[ 0.299402] clocksource: Switched to clocksource arch_sys_counter
[ 0.313065] NET: Registered PF_INET protocol family
[ 0.318574] IP idents hash table entries: 4096 (order: 3, 32768 bytes, linear)
[ 0.327190] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
[ 0.336452] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[ 0.344995] TCP established hash table entries: 2048 (order: 1, 8192 bytes, linear)
[ 0.353444] TCP bind hash table entries: 2048 (order: 3, 32768 bytes, linear)
[ 0.361340] TCP: Hash tables configured (established 2048 bind 2048)
[ 0.368763] MPTCP token hash table entries: 256 (order: 0, 4096 bytes, linear)
[ 0.376991] UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
[ 0.384215] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)
[ 0.392336] NET: Registered PF_UNIX/PF_LOCAL protocol family
[ 0.398584] PCI: CLS 0 bytes, default 64
[ 0.404541] workingset: timestamp_bits=14 max_order=16 bucket_order=2
[ 0.414222] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 0.420733] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[ 0.438626] mtk-pcie 1fa91000.pcie: host bridge /pcie@1fa91000 ranges:
[ 0.445934] mtk-pcie 1fa91000.pcie: MEM 0x0020000000..0x0021ffffff -> 0x0020000000
[ 1.049362] mtk-pcie 1fa91000.pcie: Port0 link down
[ 1.055025] mtk-pcie 1fa91000.pcie: PCI host bridge to bus 0000:00
[ 1.061886] pci_bus 0000:00: root bus resource [bus 00-ff]
[ 1.067916] pci_bus 0000:00: root bus resource [mem 0x20000000-0x21ffffff]
[ 1.076558] PCI: bus0: Fast back to back transfers enabled
[ 1.082631] pci_bus 0000:00: resource 4 [mem 0x20000000-0x21ffffff]
[ 1.089842] mtk-pcie 1fa92000.pcie: host bridge /pcie@1fa92000 ranges:
[ 1.097041] mtk-pcie 1fa92000.pcie: MEM 0x0022000000..0x0023ffffff -> 0x0022000000
[ 1.627809] mtk-pcie 1fa92000.pcie: PCI host bridge to bus 0001:00
[ 1.634662] pci_bus 0001:00: root bus resource [bus 00-ff]
[ 1.640719] pci_bus 0001:00: root bus resource [mem 0x22000000-0x23ffffff]
[ 1.648615] pci 0001:00:01.0: [14c3:0811] type 01 class 0x060400 PCIe Root Port
[ 1.656854] pci 0001:00:01.0: BAR 0: can't handle BAR larger than 4GB (size 0x200000000)
[ 1.665760] pci 0001:00:01.0: BAR 0 [mem size 0x00000001 64bit pref disabled]
[ 1.673685] pci 0001:00:01.0: PCI bridge to [bus 00]
[ 1.679204] pci 0001:00:01.0: bridge window [mem 0x00000000-0x000fffff]
[ 1.688943] PCI: bus0: Fast back to back transfers disabled
[ 1.695128] pci 0001:00:01.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[ 1.704631] pci 0001:01:00.0: [14c3:7915] type 00 class 0x000280 PCIe Endpoint
[ 1.712788] pci 0001:01:00.0: BAR 0 [mem 0x00000000-0x000fffff 64bit pref]
[ 1.720474] pci 0001:01:00.0: BAR 2 [mem 0x00000000-0x00003fff 64bit pref]
[ 1.728135] pci 0001:01:00.0: BAR 4 [mem 0x00000000-0x00000fff 64bit pref]
[ 1.736405] pci 0001:01:00.0: supports D1 D2
[ 1.741102] pci 0001:01:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 1.748709] pci 0001:01:00.0: 2.000 Gb/s available PCIe bandwidth, limited by 2.5 GT/s PCIe x1 link at 0001:00:01.0 (capable of 4.000 Gb/s with 5.0 GT/s PCIe x1 link)
[ 1.765746] PCI: bus1: Fast back to back transfers disabled
[ 1.771910] pci_bus 0001:01: busn_res: [bus 01-ff] end is updated to 01
[ 1.779244] pci 0001:00:01.0: bridge window [mem 0x22000000-0x221fffff]: assigned
[ 1.787491] pci 0001:00:01.0: BAR 0 [mem 0x22200000 64bit pref disabled]: assigned
[ 1.795869] pci 0001:00:01.0: BAR 0: error updating (0x2220000c != 0x0000000c)
[ 1.803855] pci 0001:01:00.0: BAR 0 [mem 0x22000000-0x220fffff 64bit pref]: assigned
[ 1.812466] pci 0001:01:00.0: BAR 2 [mem 0x22100000-0x22103fff 64bit pref]: assigned
[ 1.821068] pci 0001:01:00.0: BAR 4 [mem 0x22104000-0x22104fff 64bit pref]: assigned
[ 1.829669] pci 0001:00:01.0: PCI bridge to [bus 01]
[ 1.835152] pci 0001:00:01.0: bridge window [mem 0x22000000-0x221fffff]
[ 1.842690] pci_bus 0001:00: resource 4 [mem 0x22000000-0x23ffffff]
[ 1.849589] pci_bus 0001:01: resource 1 [mem 0x22000000-0x221fffff]
[ 1.856701] pcieport 0001:00:01.0: enabling device (0140 -> 0142)
[ 1.864268] pcieport 0001:00:01.0: PME: Signaling with IRQ 31
[ 1.872211] airoha_hsdma 1fa01800.hsdma: Airoha HSDMA driver registered
[ 1.880031] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
[ 1.888008] printk: legacy console [ttyS0] disabled
[ 1.893891] 1fbf0000.serial: ttyS0 at MMIO 0x1fbf0000 (irq = 33, base_baud = 115200) is a 16550
[ 1.903540] printk: legacy console [ttyS0] enabled
[ 1.903540] printk: legacy console [ttyS0] enabled
[ 1.913638] printk: legacy bootconsole [ns16550] disabled
[ 1.913638] printk: legacy bootconsole [ns16550] disabled
[ 1.927449] spi-nand spi0.0: ESMT SPI NAND was found.
[ 1.932595] spi-nand spi0.0: 128 MiB, block size: 128 KiB, page size: 2048, OOB size: 64
[ 1.948331] 6 fixed-partitions partitions found on MTD device spi0.0
[ 1.954753] Creating 6 MTD partitions on "spi0.0":
[ 1.959590] 0x000000000000-0x000000080000 : "bootloader"
[ 1.966942] 0x000000080000-0x000000120000 : "romfile"
[ 1.974001] 0x0000000a0000-0x000000240000 : "misc"
[ 1.982748] 0x0000001a0000-0x0000011a0000 : "kernel"
[ 2.021326] 0x0000011a0000-0x000006000000 : "rootfs"
[ 2.194700] mtd: setting mtd4 (rootfs) as root device
[ 2.200165] mtdsplit: no squashfs found in "rootfs"
[ 2.205085] 0x000003fe0000-0x000007fe0000 : "reserved_bmt"
[ 2.383667] airoha-npu 1e900000.npu: L2C sram size: 0x00
[ 2.389000] airoha-npu 1e900000.npu: FPGA Stage: 1
[C0]core freq at 333000000 Hz
[C0]timer_init: Timer clk is running at 32 Mhz
[C0]wcid_counter_init:0
[C0]wcid_counter_init:1
[C0][NPU] ba_node_init...
[C0]baNode_array_init
[C0]counter_init:2
[C0][NPU] queue_mutex_init...
[C0]qdma_init
[C1]core1_main
[C3]core3_main
[C3]do npu_enq_deq_init
[ 2.903482] airoha-npu 1e900000.npu: Airoha NPU fw version: v0.1111 (0x457)
[ 2.924912] airoha-usb-phy 1fad0000.phy: Frequency not detected, using default SR calibration.
[ 2.938115] xhci-mtk 1fab0000.usb: xHCI Host Controller
[ 2.943401] xhci-mtk 1fab0000.usb: new USB bus registered, assigned bus number 1
[ 2.954843] xhci-mtk 1fab0000.usb: hcc params 0x01400f98 hci version 0x110 quirks 0x0000000000200010
[ 2.964069] xhci-mtk 1fab0000.usb: irq 45, io mem 0x1fab0000
[ 2.969917] xhci-mtk 1fab0000.usb: xHCI Host Controller
[ 2.975157] xhci-mtk 1fab0000.usb: new USB bus registered, assigned bus number 2
[ 2.982596] xhci-mtk 1fab0000.usb: Host supports USB 3
core 1 and 2 boot
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 6.12.63 (sirherobrine23@matheus-note) (arm-openwrt-linux-muslgnueabi-gcc (OpenWrt GCC 14.3.0 r32493-8d680de76a) 14.3.0, GNU ld (GNU Binutils) 2.44) #0 SMP Fri Jan 9 13:48:45 2026
[ 0.000000] CPU: ARMv7 Processor [410fd034] revision 4 (ARMv7), cr=10c5383d
[ 0.000000] CPU: div instructions available: patching division code
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] OF: fdt: Machine model: TP-Link xx230v
[ 0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
[ 0.000000] earlycon: ns16550 at MMIO32 0x1fbf0000 (options '115200n8')
[ 0.000000] printk: legacy bootconsole [ns16550] enabled
[ 0.000000] Memory policy: Data cache writealloc
[ 0.000000] OF: reserved mem: Reserved memory: failed to reserve memory for node 'npu_binary@84000000': base 0x84000000, size 1 MiB
[ 0.000000] Zone ranges:
[ 0.000000] Normal [mem 0x0000000080200000-0x000000008fffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000080200000-0x0000000086ffffff]
[ 0.000000] node 0: [mem 0x0000000087000000-0x0000000089ffffff]
[ 0.000000] node 0: [mem 0x000000008a000000-0x000000008fffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x000000008fffffff]
[ 0.000000] On node 0, zone Normal: 512 pages in unavailable ranges
[ 0.000000] OF: reserved mem: 0x84000000..0x840fffff (1024 KiB) nomap non-reusable npu_binary@84000000
[ 0.000000] OF: reserved mem: 0x87000000..0x88ffffff (32768 KiB) nomap non-reusable qdma0-buf@87000000
[ 0.000000] OF: reserved mem: 0x89000000..0x89ffffff (16384 KiB) nomap non-reusable qdma1-buf@89000000
[ 0.000000] psci: probing for conduit method from DT.
[ 0.000000] psci: PSCIv1.1 detected in firmware.
[ 0.000000] psci: Using standard PSCI v0.2 function IDs
[ 0.000000] psci: MIGRATE_INFO_TYPE not supported.
[ 0.000000] psci: SMC Calling Convention v1.1
[ 0.000000] percpu: Embedded 14 pages/cpu s24780 r8192 d24372 u57344
[ 0.000000] Kernel command line: console=ttyS0,115200 earlycon
[ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes, linear)
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 65024
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] Tracing variant of Tasks RCU enabled.
[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[ 0.000000] RCU Tasks Trace: Setting shift to 1 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=2.
[ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[ 0.000000] GICv3: 256 SPIs implemented
[ 0.000000] GICv3: 0 Extended SPIs implemented
[ 0.000000] GICv3: GICv3 features: 16 PPIs
[ 0.000000] GICv3: GICD_CTRL.DS=0, SCR_EL3.FIQ=0
[ 0.000000] GICv3: CPU0: found redistributor 0 region 0:0x09080000
[ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[ 0.000000] arch_timer: cp15 timer(s) running at 25.00MHz (virt).
[ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x5c40939b5, max_idle_ns: 440795202646 ns
[ 0.000001] sched_clock: 56 bits at 25MHz, resolution 40ns, wraps every 4398046511100ns
[ 0.008800] Switching to timer-based delay loop, resolution 40ns
[ 0.015572] Calibrating delay loop (skipped), value calculated using timer frequency.. 50.00 BogoMIPS (lpj=250000)
[ 0.026957] CPU: Testing write buffer coherency: ok
[ 0.032341] pid_max: default: 32768 minimum: 301
[ 0.045204] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.053257] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.065193] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[ 0.072501] Setting up static identity map for 0x80300000 - 0x80300060
[ 0.079864] rcu: Hierarchical SRCU implementation.
[ 0.085135] rcu: Max phase no-delay instances is 1000.
[ 0.091174] Timer migration: 1 hierarchy levels; 8 children per group; 1 crossnode level
[ 0.100387] smp: Bringing up secondary CPUs ...
[ 0.120477] GICv3: CPU1: found redistributor 1 region 0:0x090a0000
[ 0.120532] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[ 0.120674] smp: Brought up 1 node, 2 CPUs
[ 0.138183] SMP: Total of 2 processors activated (100.00 BogoMIPS).
[ 0.145082] CPU: All CPU(s) started in SVC mode.
[ 0.150596] Memory: 141104K/260096K available (7784K kernel code, 600K rwdata, 2032K rodata, 55296K init, 221K bss, 118236K reserved, 0K cma-reserved)
[ 0.169680] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.180561] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
[ 0.191974] pinctrl core: initialized pinctrl subsystem
[ 0.199773] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[ 0.206583] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.214926] thermal_sys: Registered thermal governor 'step_wise'
[ 0.215012] cpuidle: using governor menu
[ 0.226890] debugfs: Directory '1fa20000.system-controller' with parent 'regmap' already present!
[ 0.237756] /pcie@1fa91000: Fixed dependency cycle(s) with /pcie@1fa91000/interrupt-controller
[ 0.247657] /pcie@1fa92000: Fixed dependency cycle(s) with /pcie@1fa92000/interrupt-controller
[ 0.269211] SCSI subsystem initialized
[ 0.273584] usbcore: registered new interface driver usbfs
[ 0.279705] usbcore: registered new interface driver hub
[ 0.285587] usbcore: registered new device driver usb
[ 0.291316] Advanced Linux Sound Architecture Driver Initialized.
[ 0.299281] clocksource: Switched to clocksource arch_sys_counter
[ 0.312954] NET: Registered PF_INET protocol family
[ 0.318462] IP idents hash table entries: 4096 (order: 3, 32768 bytes, linear)
[ 0.327127] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
[ 0.336376] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[ 0.344913] TCP established hash table entries: 2048 (order: 1, 8192 bytes, linear)
[ 0.353365] TCP bind hash table entries: 2048 (order: 3, 32768 bytes, linear)
[ 0.361263] TCP: Hash tables configured (established 2048 bind 2048)
[ 0.368687] MPTCP token hash table entries: 256 (order: 0, 4096 bytes, linear)
[ 0.376923] UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
[ 0.384140] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)
[ 0.392288] NET: Registered PF_UNIX/PF_LOCAL protocol family
[ 0.398541] PCI: CLS 0 bytes, default 64
[ 0.409452] workingset: timestamp_bits=14 max_order=16 bucket_order=2
[ 0.419079] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 0.425605] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[ 0.445398] mtk-pcie 1fa91000.pcie: host bridge /pcie@1fa91000 ranges:
[ 0.452754] mtk-pcie 1fa91000.pcie: MEM 0x0020000000..0x0021ffffff -> 0x0020000000
[ 1.059292] mtk-pcie 1fa91000.pcie: Port0 link down
[ 1.064956] mtk-pcie 1fa91000.pcie: PCI host bridge to bus 0000:00
[ 1.071819] pci_bus 0000:00: root bus resource [bus 00-ff]
[ 1.077856] pci_bus 0000:00: root bus resource [mem 0x20000000-0x21ffffff]
[ 1.086509] PCI: bus0: Fast back to back transfers enabled
[ 1.092573] pci_bus 0000:00: resource 4 [mem 0x20000000-0x21ffffff]
[ 1.099780] mtk-pcie 1fa92000.pcie: host bridge /pcie@1fa92000 ranges:
[ 1.106981] mtk-pcie 1fa92000.pcie: MEM 0x0022000000..0x0023ffffff -> 0x0022000000
[ 1.637737] mtk-pcie 1fa92000.pcie: PCI host bridge to bus 0001:00
[ 1.644580] pci_bus 0001:00: root bus resource [bus 00-ff]
[ 1.650642] pci_bus 0001:00: root bus resource [mem 0x22000000-0x23ffffff]
[ 1.658546] pci 0001:00:01.0: [14c3:0811] type 01 class 0x060400 PCIe Root Port
[ 1.666786] pci 0001:00:01.0: BAR 0: can't handle BAR larger than 4GB (size 0x200000000)
[ 1.675686] pci 0001:00:01.0: BAR 0 [mem size 0x00000001 64bit pref disabled]
[ 1.683606] pci 0001:00:01.0: PCI bridge to [bus 00]
[ 1.689127] pci 0001:00:01.0: bridge window [mem 0x00000000-0x000fffff]
[ 1.698885] PCI: bus0: Fast back to back transfers disabled
[ 1.705067] pci 0001:00:01.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[ 1.714573] pci 0001:01:00.0: [14c3:7915] type 00 class 0x000280 PCIe Endpoint
[ 1.722735] pci 0001:01:00.0: BAR 0 [mem 0x00000000-0x000fffff 64bit pref]
[ 1.730415] pci 0001:01:00.0: BAR 2 [mem 0x00000000-0x00003fff 64bit pref]
[ 1.738066] pci 0001:01:00.0: BAR 4 [mem 0x00000000-0x00000fff 64bit pref]
[ 1.746339] pci 0001:01:00.0: supports D1 D2
[ 1.751048] pci 0001:01:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 1.758659] pci 0001:01:00.0: 2.000 Gb/s available PCIe bandwidth, limited by 2.5 GT/s PCIe x1 link at 0001:00:01.0 (capable of 4.000 Gb/s with 5.0 GT/s PCIe x1 link)
[ 1.775697] PCI: bus1: Fast back to back transfers disabled
[ 1.781867] pci_bus 0001:01: busn_res: [bus 01-ff] end is updated to 01
[ 1.789192] pci 0001:00:01.0: bridge window [mem 0x22000000-0x221fffff]: assigned
[ 1.797432] pci 0001:00:01.0: BAR 0 [mem 0x22200000 64bit pref disabled]: assigned
[ 1.805819] pci 0001:00:01.0: BAR 0: error updating (0x2220000c != 0x0000000c)
[ 1.813813] pci 0001:01:00.0: BAR 0 [mem 0x22000000-0x220fffff 64bit pref]: assigned
[ 1.822414] pci 0001:01:00.0: BAR 2 [mem 0x22100000-0x22103fff 64bit pref]: assigned
[ 1.831017] pci 0001:01:00.0: BAR 4 [mem 0x22104000-0x22104fff 64bit pref]: assigned
[ 1.839617] pci 0001:00:01.0: PCI bridge to [bus 01]
[ 1.845101] pci 0001:00:01.0: bridge window [mem 0x22000000-0x221fffff]
[ 1.852635] pci_bus 0001:00: resource 4 [mem 0x22000000-0x23ffffff]
[ 1.859529] pci_bus 0001:01: resource 1 [mem 0x22000000-0x221fffff]
[ 1.866634] pcieport 0001:00:01.0: enabling device (0140 -> 0142)
[ 1.874201] pcieport 0001:00:01.0: PME: Signaling with IRQ 31
[ 1.882135] airoha_hsdma 1fa01800.hsdma: Airoha HSDMA driver registered
[ 1.889947] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
[ 1.897975] printk: legacy console [ttyS0] disabled
[ 1.903861] 1fbf0000.serial: ttyS0 at MMIO 0x1fbf0000 (irq = 33, base_baud = 115200) is a 16550
[ 1.913495] printk: legacy console [ttyS0] enabled
[ 1.913495] printk: legacy console [ttyS0] enabled
[ 1.923586] printk: legacy bootconsole [ns16550] disabled
[ 1.923586] printk: legacy bootconsole [ns16550] disabled
[ 1.937780] spi-nand spi0.0: ESMT SPI NAND was found.
[ 1.942893] spi-nand spi0.0: 128 MiB, block size: 128 KiB, page size: 2048, OOB size: 64
[ 1.958629] 6 fixed-partitions partitions found on MTD device spi0.0
[ 1.965050] Creating 6 MTD partitions on "spi0.0":
[ 1.969885] 0x000000000000-0x000000080000 : "bootloader"
[ 1.977227] 0x000000080000-0x000000120000 : "romfile"
[ 1.984271] 0x0000000a0000-0x000000240000 : "misc"
[ 1.992807] 0x0000001a0000-0x0000011a0000 : "kernel"
[ 2.031875] 0x0000011a0000-0x000006000000 : "rootfs"
[ 2.204975] mtd: setting mtd4 (rootfs) as root device
[ 2.210434] mtdsplit: no squashfs found in "rootfs"
[ 2.215354] 0x000003fe0000-0x000007fe0000 : "reserved_bmt"
[ 2.373398] airoha-npu 1e900000.npu: L2C sram size: 0x00
[ 2.378733] airoha-npu 1e900000.npu: FPGA Stage: 1
[C0]core freq at 333000000 Hz
[C0]timer_init: Timer clk is running at 32 Mhz
[C0]wcid_counter_init:0
[C0]wcid_counter_init:1
[C0][NPU] ba_node_init...
[C0]baNode_array_init
[C0]counter_init:2
[C0][NPU] queue_mutex_init...
[C0]qdma_init
[C1]core1_main
[C2]timer_isr Store Value 1e903000, val[C2]core2_main
[ 2.792388] airoha-npu 1e900000.npu: Airoha NPU fw version: v0.1111 (0x457)
[ 2.813813] airoha-usb-phy 1fad0000.phy: Frequency not detected, using default SR calibration.
[ 2.827025] xhci-mtk 1fab0000.usb: xHCI Host Controller
[ 2.832305] xhci-mtk 1fab0000.usb: new USB bus registered, assigned bus number 1
[ 2.843710] xhci-mtk 1fab0000.usb: hcc params 0x01400f98 hci version 0x110 quirks 0x0000000000200010
[ 2.852945] xhci-mtk 1fab0000.usb: irq 45, io mem 0x1fab0000
[ 2.858773] xhci-mtk 1fab0000.usb: xHCI Host Controller
[ 2.864051] xhci-mtk 1fab0000.usb: new USB bus registered, assigned bus number 2
[ 2.871481] xhci-mtk 1fab0000.usb: Host supports USB 3.2 Enhanced SuperSpeed
[ 2.879369] hub 1-0:1.0: USB hub found
[ 2.883308] hub 1-0:1.0: 2 ports detected
[ 2.888129] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[ 2.897014] hub 2-0:1.0: USB hub found
[ 2.900925] hub 2-0:1.0: 1 port detected
[ 2.905703] i2c-mt7621 1fbf8000.i2c0: clock 100 kHz
[ 2.911048] airoha-thermal 1efbd000.thermal-sensor: EN7523: IC calibrated (pdid:3, pkg:3)
[ 2.919362] airoha-thermal 1efbd000.thermal-sensor: EN7523: Init check code_30:32008, Slope:1750
[ 2.940591] en7523-audio 1fbe2200.audio-controller: mtk_afe_combine_sub_dai(), num of dai 2
[ 2.949472] debugfs: Directory '1fbe2200.audio-controller' with parent 'en7523-i2s' already present!
[ 2.960543] NET: Registered PF_INET6 protocol family
[ 2.967156] Segment Routing with IPv6
[ 2.970945] In-situ OAM (IOAM) with IPv6
[ 2.974967] NET: Registered PF_PACKET protocol family
[ 2.980289] 8021q: 802.1Q VLAN Support v1.8
[ 2.984572] Registering SWP/SWPB emulation handler
[ 3.055900] mt7530-mmio 1fb58000.switch: configuring for fixed/internal link mode
[ 3.063670] mt7530-mmio 1fb58000.switch lan1 (uninitialized): PHY [mt7530-0:09] driver [Airoha EN7523 PHY] (irq=POLL)
[ 3.075374] mt7530-mmio 1fb58000.switch lan2 (uninitialized): PHY [mt7530-0:0a] driver [Airoha EN7523 PHY] (irq=POLL)
[ 3.086993] mt7530-mmio 1fb58000.switch lan3 (uninitialized): PHY [mt7530-0:0b] driver [Airoha EN7523 PHY] (irq=POLL)
[ 3.098675] mt7530-mmio 1fb58000.switch wan (uninitialized): PHY [mt7530-0:0c] driver [Airoha EN7523 PHY] (irq=POLL)
[ 3.110146] airoha_eth 1fb50000.ethernet eth0: entered promiscuous mode
[ 3.116829] DSA: tree 0 setup
[ 3.120133] mt7530-mmio 1fb58000.switch: Link is Up - 10Gbps/Full - flow control rx/tx
[ 3.128827] clk: Disabling unused clocks
[ 3.132818] PM: genpd: Disabling unused power domains
[ 3.137881] ALSA device list:
[ 3.140902] #0: en7523-i2s
[ 3.199576] Freeing unused kernel image (initmem) memory: 55296K
[ 3.205870] Run /init as init process
[ 3.837654] init: Console is alive
[ 3.841403] init: - watchdog -
[ 3.851831] kmodloader: loading kernel modules from /etc/modules-boot.d/*
[ 3.860799] gpio_button_hotplug: loading out-of-tree module taints kernel.
[ 3.881843] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
[ 3.899763] init: - preinit -
Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level
[ 5.250916] random: procd: uninitialized urandom read (4 bytes read)
[ 5.254671] procd: - early -
[ 5.260462] procd: - watchdog -
[ 5.799084] procd: - watchdog -
[ 5.802572] procd: - ubus -
[ 7.729267] random: crng init done
[ 7.737455] procd: - init -
Please press Enter to activate this console.
[ 8.002266] kmodloader: loading kernel modules from /etc/modules.d/*
[ 8.252680] i2c_dev: i2c /dev entries driver
[ 8.268712] Loading modules backported from Linux version v6.18-0-g7d0a66e4b
[ 8.275820] Backport generated by backports.git 4d44cef
[ 8.354081] mt7915e 0001:01:00.0: enabling device (0140 -> 0142)
[ 8.540072] mt7915e 0001:01:00.0: HW/SW Version: 0x8a108a10, Build Time: 20240429200716a
[ 8.540072]
[ 8.567183] mt7915e 0001:01:00.0: WM Firmware Version: ____000000, Build Time: 20240429200752
[ 8.567259] urngd: v1.0.2 started.
[ 8.605472] mt7915e 0001:01:00.0: WA Firmware Version: DEV_000000, Build Time: 20240429200812
[ 8.743389] mt7915e 0001:01:00.0: registering led 'mt76-phy0'
[ 8.824489] mt7915e 0001:01:00.0: registering led 'mt76-phy1'
[ 8.951226] PPP generic driver version 2.4.2
[ 8.980055] NET: Registered PF_PPPOX protocol family
[ 8.999628] kmodloader: done loading kernel modules from /etc/modules.d/*
[ 19.492445] mt7530-mmio 1fb58000.switch lan1: configuring for phy/internal link mode
[ 19.503424] br-lan: port 1(lan1) entered blocking state
[ 19.508707] br-lan: port 1(lan1) entered disabled state
[ 19.514103] mt7530-mmio 1fb58000.switch lan1: entered allmulticast mode
[ 19.520799] airoha_eth 1fb50000.ethernet eth0: entered allmulticast mode
[ 19.527833] mt7530-mmio 1fb58000.switch lan1: entered promiscuous mode
[ 19.546703] mt7530-mmio 1fb58000.switch lan2: configuring for phy/internal link mode
[ 19.556841] br-lan: port 2(lan2) entered blocking state
[ 19.562178] br-lan: port 2(lan2) entered disabled state
[ 19.567474] mt7530-mmio 1fb58000.switch lan2: entered allmulticast mode
[ 19.574550] mt7530-mmio 1fb58000.switch lan2: entered promiscuous mode
[ 19.599657] mt7530-mmio 1fb58000.switch lan3: configuring for phy/internal link mode
[ 19.609144] br-lan: port 3(lan3) entered blocking state
[ 19.614553] br-lan: port 3(lan3) entered disabled state
[ 19.619923] mt7530-mmio 1fb58000.switch lan3: entered allmulticast mode
[ 19.626979] mt7530-mmio 1fb58000.switch lan3: entered promiscuous mode
[ 19.672216] mt7530-mmio 1fb58000.switch wan: configuring for phy/internal link mode
[ 20.114482] br-lan: port 4(phy0-ap0) entered blocking state
[ 20.120174] br-lan: port 4(phy0-ap0) entered disabled state
[ 20.125815] mt7915e 0001:01:00.0 phy0-ap0: entered allmulticast mode
[ 20.132541] mt7915e 0001:01:00.0 phy0-ap0: entered promiscuous mode
[ 20.153025] mt7915e 0001:01:00.0 phy0-ap0: left allmulticast mode
[ 20.159169] mt7915e 0001:01:00.0 phy0-ap0: left promiscuous mode
[ 20.165397] br-lan: port 4(phy0-ap0) entered disabled state
[ 20.265570] br-lan: port 4(phy0-ap0) entered blocking state
[ 20.271310] br-lan: port 4(phy0-ap0) entered disabled state
[ 20.276952] mt7915e 0001:01:00.0 phy0-ap0: entered allmulticast mode
[ 20.283622] mt7915e 0001:01:00.0 phy0-ap0: entered promiscuous mode
[ 20.710188] br-lan: port 5(phy1-ap0) entered blocking state
[ 20.715836] br-lan: port 5(phy1-ap0) entered disabled state
[ 20.721630] mt7915e 0001:01:00.0 phy1-ap0: entered allmulticast mode
[ 20.728280] mt7915e 0001:01:00.0 phy1-ap0: entered promiscuous mode
[ 20.790787] br-lan: port 5(phy1-ap0) entered blocking state
[ 20.796396] br-lan: port 5(phy1-ap0) entered forwarding state
[ 20.803849] mt7915e 0001:01:00.0 phy1-ap0: left allmulticast mode
[ 20.810155] mt7915e 0001:01:00.0 phy1-ap0: left promiscuous mode
[ 20.816406] br-lan: port 5(phy1-ap0) entered disabled state
[ 20.859888] br-lan: port 5(phy1-ap0) entered blocking state
[ 20.865530] br-lan: port 5(phy1-ap0) entered disabled state
[ 20.871305] mt7915e 0001:01:00.0 phy1-ap0: entered allmulticast mode
[ 20.878000] mt7915e 0001:01:00.0 phy1-ap0: entered promiscuous mode
[ 23.680957] mt7530-mmio 1fb58000.switch lan1: Link is Up - 1Gbps/Full - flow control rx/tx
[ 23.689334] br-lan: port 1(lan1) entered blocking state
[ 23.694576] br-lan: port 1(lan1) entered forwarding state
[ 24.224969] br-lan: port 5(phy1-ap0) entered blocking state
[ 24.230605] br-lan: port 5(phy1-ap0) entered forwarding state
[ 28.032662] br-lan: port 4(phy0-ap0) entered blocking state
[ 28.038259] br-lan: port 4(phy0-ap0) entered forwarding state
[ 34.240720] mt7530-mmio 1fb58000.switch wan: Link is Up - 1Gbps/Full - flow control rx
[ 37.200762] mt7530-mmio 1fb58000.switch lan1: Link is Down
[ 37.206378] br-lan: port 1(lan1) entered disabled state
[ 39.282321] mt7530-mmio 1fb58000.switch lan1: Link is Up - 1Gbps/Full - flow control rx/tx
[ 39.283311] br-lan: port 1(lan1) entered blocking state
[ 39.295932] br-lan: port 1(lan1) entered forwarding state
I disabled cores 3 and 4 and get the NPU active again, but if I enable cores 3 and 4, the system freezes, and if I enable even core 3, the system freezes before even starting the network interface
## core 1, 2 and 3 boot
```
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 6.12.63 (sirherobrine23@matheus-note) (arm-openwrt-linux-muslgnueabi-gcc (OpenWrt GCC 14.3.0 r32493-8d680de76a) 14.3.0, GNU ld (GNU Binutils) 2.44) #0 SMP Fri Jan 9 13:48:45 2026
[ 0.000000] CPU: ARMv7 Processor [410fd034] revision 4 (ARMv7), cr=10c5383d
[ 0.000000] CPU: div instructions available: patching division code
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] OF: fdt: Machine model: TP-Link xx230v
[ 0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
[ 0.000000] earlycon: ns16550 at MMIO32 0x1fbf0000 (options '115200n8')
[ 0.000000] printk: legacy bootconsole [ns16550] enabled
[ 0.000000] Memory policy: Data cache writealloc
[ 0.000000] OF: reserved mem: Reserved memory: failed to reserve memory for node 'npu_binary@84000000': base 0x84000000, size 1 MiB
[ 0.000000] Zone ranges:
[ 0.000000] Normal [mem 0x0000000080200000-0x000000008fffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000080200000-0x0000000086ffffff]
[ 0.000000] node 0: [mem 0x0000000087000000-0x0000000089ffffff]
[ 0.000000] node 0: [mem 0x000000008a000000-0x000000008fffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x000000008fffffff]
[ 0.000000] On node 0, zone Normal: 512 pages in unavailable ranges
[ 0.000000] OF: reserved mem: 0x84000000..0x840fffff (1024 KiB) nomap non-reusable npu_binary@84000000
[ 0.000000] OF: reserved mem: 0x87000000..0x88ffffff (32768 KiB) nomap non-reusable qdma0-buf@87000000
[ 0.000000] OF: reserved mem: 0x89000000..0x89ffffff (16384 KiB) nomap non-reusable qdma1-buf@89000000
[ 0.000000] psci: probing for conduit method from DT.
[ 0.000000] psci: PSCIv1.1 detected in firmware.
[ 0.000000] psci: Using standard PSCI v0.2 function IDs
[ 0.000000] psci: MIGRATE_INFO_TYPE not supported.
[ 0.000000] psci: SMC Calling Convention v1.1
[ 0.000000] percpu: Embedded 14 pages/cpu s24780 r8192 d24372 u57344
[ 0.000000] Kernel command line: console=ttyS0,115200 earlycon
[ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes, linear)
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 65024
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] Tracing variant of Tasks RCU enabled.
[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[ 0.000000] RCU Tasks Trace: Setting shift to 1 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=2.
[ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[ 0.000000] GICv3: 256 SPIs implemented
[ 0.000000] GICv3: 0 Extended SPIs implemented
[ 0.000000] GICv3: GICv3 features: 16 PPIs
[ 0.000000] GICv3: GICD_CTRL.DS=0, SCR_EL3.FIQ=0
[ 0.000000] GICv3: CPU0: found redistributor 0 region 0:0x09080000
[ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[ 0.000000] arch_timer: cp15 timer(s) running at 25.00MHz (virt).
[ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x5c40939b5, max_idle_ns: 440795202646 ns
[ 0.000001] sched_clock: 56 bits at 25MHz, resolution 40ns, wraps every 4398046511100ns
[ 0.008800] Switching to timer-based delay loop, resolution 40ns
[ 0.015571] Calibrating delay loop (skipped), value calculated using timer frequency.. 50.00 BogoMIPS (lpj=250000)
[ 0.026958] CPU: Testing write buffer coherency: ok
[ 0.032340] pid_max: default: 32768 minimum: 301
[ 0.045203] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.053255] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.065194] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[ 0.072479] Setting up static identity map for 0x80300000 - 0x80300060
[ 0.079848] rcu: Hierarchical SRCU implementation.
[ 0.085117] rcu: Max phase no-delay instances is 1000.
[ 0.091156] Timer migration: 1 hierarchy levels; 8 children per group; 1 crossnode level
[ 0.100362] smp: Bringing up secondary CPUs ...
[ 0.120456] GICv3: CPU1: found redistributor 1 region 0:0x090a0000
[ 0.120510] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[ 0.120653] smp: Brought up 1 node, 2 CPUs
[ 0.138165] SMP: Total of 2 processors activated (100.00 BogoMIPS).
[ 0.145065] CPU: All CPU(s) started in SVC mode.
[ 0.150611] Memory: 141104K/260096K available (7784K kernel code, 600K rwdata, 2032K rodata, 55296K init, 221K bss, 118236K reserved, 0K cma-reserved)
[ 0.169697] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.180572] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
[ 0.191993] pinctrl core: initialized pinctrl subsystem
[ 0.199785] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[ 0.206598] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.214941] thermal_sys: Registered thermal governor 'step_wise'
[ 0.215026] cpuidle: using governor menu
[ 0.226906] debugfs: Directory '1fa20000.system-controller' with parent 'regmap' already present!
[ 0.237771] /pcie@1fa91000: Fixed dependency cycle(s) with /pcie@1fa91000/interrupt-controller
[ 0.247678] /pcie@1fa92000: Fixed dependency cycle(s) with /pcie@1fa92000/interrupt-controller
[ 0.269244] SCSI subsystem initialized
[ 0.273590] usbcore: registered new interface driver usbfs
[ 0.279728] usbcore: registered new interface driver hub
[ 0.285593] usbcore: registered new device driver usb
[ 0.291296] Advanced Linux Sound Architecture Driver Initialized.
[ 0.299402] clocksource: Switched to clocksource arch_sys_counter
[ 0.313065] NET: Registered PF_INET protocol family
[ 0.318574] IP idents hash table entries: 4096 (order: 3, 32768 bytes, linear)
[ 0.327190] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
[ 0.336452] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[ 0.344995] TCP established hash table entries: 2048 (order: 1, 8192 bytes, linear)
[ 0.353444] TCP bind hash table entries: 2048 (order: 3, 32768 bytes, linear)
[ 0.361340] TCP: Hash tables configured (established 2048 bind 2048)
[ 0.368763] MPTCP token hash table entries: 256 (order: 0, 4096 bytes, linear)
[ 0.376991] UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
[ 0.384215] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)
[ 0.392336] NET: Registered PF_UNIX/PF_LOCAL protocol family
[ 0.398584] PCI: CLS 0 bytes, default 64
[ 0.404541] workingset: timestamp_bits=14 max_order=16 bucket_order=2
[ 0.414222] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 0.420733] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[ 0.438626] mtk-pcie 1fa91000.pcie: host bridge /pcie@1fa91000 ranges:
[ 0.445934] mtk-pcie 1fa91000.pcie: MEM 0x0020000000..0x0021ffffff -> 0x0020000000
[ 1.049362] mtk-pcie 1fa91000.pcie: Port0 link down
[ 1.055025] mtk-pcie 1fa91000.pcie: PCI host bridge to bus 0000:00
[ 1.061886] pci_bus 0000:00: root bus resource [bus 00-ff]
[ 1.067916] pci_bus 0000:00: root bus resource [mem 0x20000000-0x21ffffff]
[ 1.076558] PCI: bus0: Fast back to back transfers enabled
[ 1.082631] pci_bus 0000:00: resource 4 [mem 0x20000000-0x21ffffff]
[ 1.089842] mtk-pcie 1fa92000.pcie: host bridge /pcie@1fa92000 ranges:
[ 1.097041] mtk-pcie 1fa92000.pcie: MEM 0x0022000000..0x0023ffffff -> 0x0022000000
[ 1.627809] mtk-pcie 1fa92000.pcie: PCI host bridge to bus 0001:00
[ 1.634662] pci_bus 0001:00: root bus resource [bus 00-ff]
[ 1.640719] pci_bus 0001:00: root bus resource [mem 0x22000000-0x23ffffff]
[ 1.648615] pci 0001:00:01.0: [14c3:0811] type 01 class 0x060400 PCIe Root Port
[ 1.656854] pci 0001:00:01.0: BAR 0: can't handle BAR larger than 4GB (size 0x200000000)
[ 1.665760] pci 0001:00:01.0: BAR 0 [mem size 0x00000001 64bit pref disabled]
[ 1.673685] pci 0001:00:01.0: PCI bridge to [bus 00]
[ 1.679204] pci 0001:00:01.0: bridge window [mem 0x00000000-0x000fffff]
[ 1.688943] PCI: bus0: Fast back to back transfers disabled
[ 1.695128] pci 0001:00:01.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[ 1.704631] pci 0001:01:00.0: [14c3:7915] type 00 class 0x000280 PCIe Endpoint
[ 1.712788] pci 0001:01:00.0: BAR 0 [mem 0x00000000-0x000fffff 64bit pref]
[ 1.720474] pci 0001:01:00.0: BAR 2 [mem 0x00000000-0x00003fff 64bit pref]
[ 1.728135] pci 0001:01:00.0: BAR 4 [mem 0x00000000-0x00000fff 64bit pref]
[ 1.736405] pci 0001:01:00.0: supports D1 D2
[ 1.741102] pci 0001:01:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 1.748709] pci 0001:01:00.0: 2.000 Gb/s available PCIe bandwidth, limited by 2.5 GT/s PCIe x1 link at 0001:00:01.0 (capable of 4.000 Gb/s with 5.0 GT/s PCIe x1 link)
[ 1.765746] PCI: bus1: Fast back to back transfers disabled
[ 1.771910] pci_bus 0001:01: busn_res: [bus 01-ff] end is updated to 01
[ 1.779244] pci 0001:00:01.0: bridge window [mem 0x22000000-0x221fffff]: assigned
[ 1.787491] pci 0001:00:01.0: BAR 0 [mem 0x22200000 64bit pref disabled]: assigned
[ 1.795869] pci 0001:00:01.0: BAR 0: error updating (0x2220000c != 0x0000000c)
[ 1.803855] pci 0001:01:00.0: BAR 0 [mem 0x22000000-0x220fffff 64bit pref]: assigned
[ 1.812466] pci 0001:01:00.0: BAR 2 [mem 0x22100000-0x22103fff 64bit pref]: assigned
[ 1.821068] pci 0001:01:00.0: BAR 4 [mem 0x22104000-0x22104fff 64bit pref]: assigned
[ 1.829669] pci 0001:00:01.0: PCI bridge to [bus 01]
[ 1.835152] pci 0001:00:01.0: bridge window [mem 0x22000000-0x221fffff]
[ 1.842690] pci_bus 0001:00: resource 4 [mem 0x22000000-0x23ffffff]
[ 1.849589] pci_bus 0001:01: resource 1 [mem 0x22000000-0x221fffff]
[ 1.856701] pcieport 0001:00:01.0: enabling device (0140 -> 0142)
[ 1.864268] pcieport 0001:00:01.0: PME: Signaling with IRQ 31
[ 1.872211] airoha_hsdma 1fa01800.hsdma: Airoha HSDMA driver registered
[ 1.880031] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
[ 1.888008] printk: legacy console [ttyS0] disabled
[ 1.893891] 1fbf0000.serial: ttyS0 at MMIO 0x1fbf0000 (irq = 33, base_baud = 115200) is a 16550
[ 1.903540] printk: legacy console [ttyS0] enabled
[ 1.903540] printk: legacy console [ttyS0] enabled
[ 1.913638] printk: legacy bootconsole [ns16550] disabled
[ 1.913638] printk: legacy bootconsole [ns16550] disabled
[ 1.927449] spi-nand spi0.0: ESMT SPI NAND was found.
[ 1.932595] spi-nand spi0.0: 128 MiB, block size: 128 KiB, page size: 2048, OOB size: 64
[ 1.948331] 6 fixed-partitions partitions found on MTD device spi0.0
[ 1.954753] Creating 6 MTD partitions on "spi0.0":
[ 1.959590] 0x000000000000-0x000000080000 : "bootloader"
[ 1.966942] 0x000000080000-0x000000120000 : "romfile"
[ 1.974001] 0x0000000a0000-0x000000240000 : "misc"
[ 1.982748] 0x0000001a0000-0x0000011a0000 : "kernel"
[ 2.021326] 0x0000011a0000-0x000006000000 : "rootfs"
[ 2.194700] mtd: setting mtd4 (rootfs) as root device
[ 2.200165] mtdsplit: no squashfs found in "rootfs"
[ 2.205085] 0x000003fe0000-0x000007fe0000 : "reserved_bmt"
[ 2.383667] airoha-npu 1e900000.npu: L2C sram size: 0x00
[ 2.389000] airoha-npu 1e900000.npu: FPGA Stage: 1
[C0]core freq at 333000000 Hz
[C0]timer_init: Timer clk is running at 32 Mhz
[C0]wcid_counter_init:0
[C0]wcid_counter_init:1
[C0][NPU] ba_node_init...
[C0]baNode_array_init
[C0]counter_init:2
[C0][NPU] queue_mutex_init...
[C0]qdma_init
[C1]core1_main
[C3]core3_main
[C3]do npu_enq_deq_init
[ 2.903482] airoha-npu 1e900000.npu: Airoha NPU fw version: v0.1111 (0x457)
[ 2.924912] airoha-usb-phy 1fad0000.phy: Frequency not detected, using default SR calibration.
[ 2.938115] xhci-mtk 1fab0000.usb: xHCI Host Controller
[ 2.943401] xhci-mtk 1fab0000.usb: new USB bus registered, assigned bus number 1
[ 2.954843] xhci-mtk 1fab0000.usb: hcc params 0x01400f98 hci version 0x110 quirks 0x0000000000200010
[ 2.964069] xhci-mtk 1fab0000.usb: irq 45, io mem 0x1fab0000
[ 2.969917] xhci-mtk 1fab0000.usb: xHCI Host Controller
[ 2.975157] xhci-mtk 1fab0000.usb: new USB bus registered, assigned bus number 2
[ 2.982596] xhci-mtk 1fab0000.usb: Host supports USB 3
```
## core 1 and 2 boot
```
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 6.12.63 (sirherobrine23@matheus-note) (arm-openwrt-linux-muslgnueabi-gcc (OpenWrt GCC 14.3.0 r32493-8d680de76a) 14.3.0, GNU ld (GNU Binutils) 2.44) #0 SMP Fri Jan 9 13:48:45 2026
[ 0.000000] CPU: ARMv7 Processor [410fd034] revision 4 (ARMv7), cr=10c5383d
[ 0.000000] CPU: div instructions available: patching division code
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] OF: fdt: Machine model: TP-Link xx230v
[ 0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
[ 0.000000] earlycon: ns16550 at MMIO32 0x1fbf0000 (options '115200n8')
[ 0.000000] printk: legacy bootconsole [ns16550] enabled
[ 0.000000] Memory policy: Data cache writealloc
[ 0.000000] OF: reserved mem: Reserved memory: failed to reserve memory for node 'npu_binary@84000000': base 0x84000000, size 1 MiB
[ 0.000000] Zone ranges:
[ 0.000000] Normal [mem 0x0000000080200000-0x000000008fffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000080200000-0x0000000086ffffff]
[ 0.000000] node 0: [mem 0x0000000087000000-0x0000000089ffffff]
[ 0.000000] node 0: [mem 0x000000008a000000-0x000000008fffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x000000008fffffff]
[ 0.000000] On node 0, zone Normal: 512 pages in unavailable ranges
[ 0.000000] OF: reserved mem: 0x84000000..0x840fffff (1024 KiB) nomap non-reusable npu_binary@84000000
[ 0.000000] OF: reserved mem: 0x87000000..0x88ffffff (32768 KiB) nomap non-reusable qdma0-buf@87000000
[ 0.000000] OF: reserved mem: 0x89000000..0x89ffffff (16384 KiB) nomap non-reusable qdma1-buf@89000000
[ 0.000000] psci: probing for conduit method from DT.
[ 0.000000] psci: PSCIv1.1 detected in firmware.
[ 0.000000] psci: Using standard PSCI v0.2 function IDs
[ 0.000000] psci: MIGRATE_INFO_TYPE not supported.
[ 0.000000] psci: SMC Calling Convention v1.1
[ 0.000000] percpu: Embedded 14 pages/cpu s24780 r8192 d24372 u57344
[ 0.000000] Kernel command line: console=ttyS0,115200 earlycon
[ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes, linear)
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 65024
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] Tracing variant of Tasks RCU enabled.
[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[ 0.000000] RCU Tasks Trace: Setting shift to 1 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=2.
[ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[ 0.000000] GICv3: 256 SPIs implemented
[ 0.000000] GICv3: 0 Extended SPIs implemented
[ 0.000000] GICv3: GICv3 features: 16 PPIs
[ 0.000000] GICv3: GICD_CTRL.DS=0, SCR_EL3.FIQ=0
[ 0.000000] GICv3: CPU0: found redistributor 0 region 0:0x09080000
[ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[ 0.000000] arch_timer: cp15 timer(s) running at 25.00MHz (virt).
[ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x5c40939b5, max_idle_ns: 440795202646 ns
[ 0.000001] sched_clock: 56 bits at 25MHz, resolution 40ns, wraps every 4398046511100ns
[ 0.008800] Switching to timer-based delay loop, resolution 40ns
[ 0.015572] Calibrating delay loop (skipped), value calculated using timer frequency.. 50.00 BogoMIPS (lpj=250000)
[ 0.026957] CPU: Testing write buffer coherency: ok
[ 0.032341] pid_max: default: 32768 minimum: 301
[ 0.045204] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.053257] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.065193] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[ 0.072501] Setting up static identity map for 0x80300000 - 0x80300060
[ 0.079864] rcu: Hierarchical SRCU implementation.
[ 0.085135] rcu: Max phase no-delay instances is 1000.
[ 0.091174] Timer migration: 1 hierarchy levels; 8 children per group; 1 crossnode level
[ 0.100387] smp: Bringing up secondary CPUs ...
[ 0.120477] GICv3: CPU1: found redistributor 1 region 0:0x090a0000
[ 0.120532] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[ 0.120674] smp: Brought up 1 node, 2 CPUs
[ 0.138183] SMP: Total of 2 processors activated (100.00 BogoMIPS).
[ 0.145082] CPU: All CPU(s) started in SVC mode.
[ 0.150596] Memory: 141104K/260096K available (7784K kernel code, 600K rwdata, 2032K rodata, 55296K init, 221K bss, 118236K reserved, 0K cma-reserved)
[ 0.169680] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.180561] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
[ 0.191974] pinctrl core: initialized pinctrl subsystem
[ 0.199773] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[ 0.206583] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.214926] thermal_sys: Registered thermal governor 'step_wise'
[ 0.215012] cpuidle: using governor menu
[ 0.226890] debugfs: Directory '1fa20000.system-controller' with parent 'regmap' already present!
[ 0.237756] /pcie@1fa91000: Fixed dependency cycle(s) with /pcie@1fa91000/interrupt-controller
[ 0.247657] /pcie@1fa92000: Fixed dependency cycle(s) with /pcie@1fa92000/interrupt-controller
[ 0.269211] SCSI subsystem initialized
[ 0.273584] usbcore: registered new interface driver usbfs
[ 0.279705] usbcore: registered new interface driver hub
[ 0.285587] usbcore: registered new device driver usb
[ 0.291316] Advanced Linux Sound Architecture Driver Initialized.
[ 0.299281] clocksource: Switched to clocksource arch_sys_counter
[ 0.312954] NET: Registered PF_INET protocol family
[ 0.318462] IP idents hash table entries: 4096 (order: 3, 32768 bytes, linear)
[ 0.327127] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
[ 0.336376] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[ 0.344913] TCP established hash table entries: 2048 (order: 1, 8192 bytes, linear)
[ 0.353365] TCP bind hash table entries: 2048 (order: 3, 32768 bytes, linear)
[ 0.361263] TCP: Hash tables configured (established 2048 bind 2048)
[ 0.368687] MPTCP token hash table entries: 256 (order: 0, 4096 bytes, linear)
[ 0.376923] UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
[ 0.384140] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)
[ 0.392288] NET: Registered PF_UNIX/PF_LOCAL protocol family
[ 0.398541] PCI: CLS 0 bytes, default 64
[ 0.409452] workingset: timestamp_bits=14 max_order=16 bucket_order=2
[ 0.419079] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 0.425605] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[ 0.445398] mtk-pcie 1fa91000.pcie: host bridge /pcie@1fa91000 ranges:
[ 0.452754] mtk-pcie 1fa91000.pcie: MEM 0x0020000000..0x0021ffffff -> 0x0020000000
[ 1.059292] mtk-pcie 1fa91000.pcie: Port0 link down
[ 1.064956] mtk-pcie 1fa91000.pcie: PCI host bridge to bus 0000:00
[ 1.071819] pci_bus 0000:00: root bus resource [bus 00-ff]
[ 1.077856] pci_bus 0000:00: root bus resource [mem 0x20000000-0x21ffffff]
[ 1.086509] PCI: bus0: Fast back to back transfers enabled
[ 1.092573] pci_bus 0000:00: resource 4 [mem 0x20000000-0x21ffffff]
[ 1.099780] mtk-pcie 1fa92000.pcie: host bridge /pcie@1fa92000 ranges:
[ 1.106981] mtk-pcie 1fa92000.pcie: MEM 0x0022000000..0x0023ffffff -> 0x0022000000
[ 1.637737] mtk-pcie 1fa92000.pcie: PCI host bridge to bus 0001:00
[ 1.644580] pci_bus 0001:00: root bus resource [bus 00-ff]
[ 1.650642] pci_bus 0001:00: root bus resource [mem 0x22000000-0x23ffffff]
[ 1.658546] pci 0001:00:01.0: [14c3:0811] type 01 class 0x060400 PCIe Root Port
[ 1.666786] pci 0001:00:01.0: BAR 0: can't handle BAR larger than 4GB (size 0x200000000)
[ 1.675686] pci 0001:00:01.0: BAR 0 [mem size 0x00000001 64bit pref disabled]
[ 1.683606] pci 0001:00:01.0: PCI bridge to [bus 00]
[ 1.689127] pci 0001:00:01.0: bridge window [mem 0x00000000-0x000fffff]
[ 1.698885] PCI: bus0: Fast back to back transfers disabled
[ 1.705067] pci 0001:00:01.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[ 1.714573] pci 0001:01:00.0: [14c3:7915] type 00 class 0x000280 PCIe Endpoint
[ 1.722735] pci 0001:01:00.0: BAR 0 [mem 0x00000000-0x000fffff 64bit pref]
[ 1.730415] pci 0001:01:00.0: BAR 2 [mem 0x00000000-0x00003fff 64bit pref]
[ 1.738066] pci 0001:01:00.0: BAR 4 [mem 0x00000000-0x00000fff 64bit pref]
[ 1.746339] pci 0001:01:00.0: supports D1 D2
[ 1.751048] pci 0001:01:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 1.758659] pci 0001:01:00.0: 2.000 Gb/s available PCIe bandwidth, limited by 2.5 GT/s PCIe x1 link at 0001:00:01.0 (capable of 4.000 Gb/s with 5.0 GT/s PCIe x1 link)
[ 1.775697] PCI: bus1: Fast back to back transfers disabled
[ 1.781867] pci_bus 0001:01: busn_res: [bus 01-ff] end is updated to 01
[ 1.789192] pci 0001:00:01.0: bridge window [mem 0x22000000-0x221fffff]: assigned
[ 1.797432] pci 0001:00:01.0: BAR 0 [mem 0x22200000 64bit pref disabled]: assigned
[ 1.805819] pci 0001:00:01.0: BAR 0: error updating (0x2220000c != 0x0000000c)
[ 1.813813] pci 0001:01:00.0: BAR 0 [mem 0x22000000-0x220fffff 64bit pref]: assigned
[ 1.822414] pci 0001:01:00.0: BAR 2 [mem 0x22100000-0x22103fff 64bit pref]: assigned
[ 1.831017] pci 0001:01:00.0: BAR 4 [mem 0x22104000-0x22104fff 64bit pref]: assigned
[ 1.839617] pci 0001:00:01.0: PCI bridge to [bus 01]
[ 1.845101] pci 0001:00:01.0: bridge window [mem 0x22000000-0x221fffff]
[ 1.852635] pci_bus 0001:00: resource 4 [mem 0x22000000-0x23ffffff]
[ 1.859529] pci_bus 0001:01: resource 1 [mem 0x22000000-0x221fffff]
[ 1.866634] pcieport 0001:00:01.0: enabling device (0140 -> 0142)
[ 1.874201] pcieport 0001:00:01.0: PME: Signaling with IRQ 31
[ 1.882135] airoha_hsdma 1fa01800.hsdma: Airoha HSDMA driver registered
[ 1.889947] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
[ 1.897975] printk: legacy console [ttyS0] disabled
[ 1.903861] 1fbf0000.serial: ttyS0 at MMIO 0x1fbf0000 (irq = 33, base_baud = 115200) is a 16550
[ 1.913495] printk: legacy console [ttyS0] enabled
[ 1.913495] printk: legacy console [ttyS0] enabled
[ 1.923586] printk: legacy bootconsole [ns16550] disabled
[ 1.923586] printk: legacy bootconsole [ns16550] disabled
[ 1.937780] spi-nand spi0.0: ESMT SPI NAND was found.
[ 1.942893] spi-nand spi0.0: 128 MiB, block size: 128 KiB, page size: 2048, OOB size: 64
[ 1.958629] 6 fixed-partitions partitions found on MTD device spi0.0
[ 1.965050] Creating 6 MTD partitions on "spi0.0":
[ 1.969885] 0x000000000000-0x000000080000 : "bootloader"
[ 1.977227] 0x000000080000-0x000000120000 : "romfile"
[ 1.984271] 0x0000000a0000-0x000000240000 : "misc"
[ 1.992807] 0x0000001a0000-0x0000011a0000 : "kernel"
[ 2.031875] 0x0000011a0000-0x000006000000 : "rootfs"
[ 2.204975] mtd: setting mtd4 (rootfs) as root device
[ 2.210434] mtdsplit: no squashfs found in "rootfs"
[ 2.215354] 0x000003fe0000-0x000007fe0000 : "reserved_bmt"
[ 2.373398] airoha-npu 1e900000.npu: L2C sram size: 0x00
[ 2.378733] airoha-npu 1e900000.npu: FPGA Stage: 1
[C0]core freq at 333000000 Hz
[C0]timer_init: Timer clk is running at 32 Mhz
[C0]wcid_counter_init:0
[C0]wcid_counter_init:1
[C0][NPU] ba_node_init...
[C0]baNode_array_init
[C0]counter_init:2
[C0][NPU] queue_mutex_init...
[C0]qdma_init
[C1]core1_main
[C2]timer_isr Store Value 1e903000, val[C2]core2_main
[ 2.792388] airoha-npu 1e900000.npu: Airoha NPU fw version: v0.1111 (0x457)
[ 2.813813] airoha-usb-phy 1fad0000.phy: Frequency not detected, using default SR calibration.
[ 2.827025] xhci-mtk 1fab0000.usb: xHCI Host Controller
[ 2.832305] xhci-mtk 1fab0000.usb: new USB bus registered, assigned bus number 1
[ 2.843710] xhci-mtk 1fab0000.usb: hcc params 0x01400f98 hci version 0x110 quirks 0x0000000000200010
[ 2.852945] xhci-mtk 1fab0000.usb: irq 45, io mem 0x1fab0000
[ 2.858773] xhci-mtk 1fab0000.usb: xHCI Host Controller
[ 2.864051] xhci-mtk 1fab0000.usb: new USB bus registered, assigned bus number 2
[ 2.871481] xhci-mtk 1fab0000.usb: Host supports USB 3.2 Enhanced SuperSpeed
[ 2.879369] hub 1-0:1.0: USB hub found
[ 2.883308] hub 1-0:1.0: 2 ports detected
[ 2.888129] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[ 2.897014] hub 2-0:1.0: USB hub found
[ 2.900925] hub 2-0:1.0: 1 port detected
[ 2.905703] i2c-mt7621 1fbf8000.i2c0: clock 100 kHz
[ 2.911048] airoha-thermal 1efbd000.thermal-sensor: EN7523: IC calibrated (pdid:3, pkg:3)
[ 2.919362] airoha-thermal 1efbd000.thermal-sensor: EN7523: Init check code_30:32008, Slope:1750
[ 2.940591] en7523-audio 1fbe2200.audio-controller: mtk_afe_combine_sub_dai(), num of dai 2
[ 2.949472] debugfs: Directory '1fbe2200.audio-controller' with parent 'en7523-i2s' already present!
[ 2.960543] NET: Registered PF_INET6 protocol family
[ 2.967156] Segment Routing with IPv6
[ 2.970945] In-situ OAM (IOAM) with IPv6
[ 2.974967] NET: Registered PF_PACKET protocol family
[ 2.980289] 8021q: 802.1Q VLAN Support v1.8
[ 2.984572] Registering SWP/SWPB emulation handler
[ 3.055900] mt7530-mmio 1fb58000.switch: configuring for fixed/internal link mode
[ 3.063670] mt7530-mmio 1fb58000.switch lan1 (uninitialized): PHY [mt7530-0:09] driver [Airoha EN7523 PHY] (irq=POLL)
[ 3.075374] mt7530-mmio 1fb58000.switch lan2 (uninitialized): PHY [mt7530-0:0a] driver [Airoha EN7523 PHY] (irq=POLL)
[ 3.086993] mt7530-mmio 1fb58000.switch lan3 (uninitialized): PHY [mt7530-0:0b] driver [Airoha EN7523 PHY] (irq=POLL)
[ 3.098675] mt7530-mmio 1fb58000.switch wan (uninitialized): PHY [mt7530-0:0c] driver [Airoha EN7523 PHY] (irq=POLL)
[ 3.110146] airoha_eth 1fb50000.ethernet eth0: entered promiscuous mode
[ 3.116829] DSA: tree 0 setup
[ 3.120133] mt7530-mmio 1fb58000.switch: Link is Up - 10Gbps/Full - flow control rx/tx
[ 3.128827] clk: Disabling unused clocks
[ 3.132818] PM: genpd: Disabling unused power domains
[ 3.137881] ALSA device list:
[ 3.140902] #0: en7523-i2s
[ 3.199576] Freeing unused kernel image (initmem) memory: 55296K
[ 3.205870] Run /init as init process
[ 3.837654] init: Console is alive
[ 3.841403] init: - watchdog -
[ 3.851831] kmodloader: loading kernel modules from /etc/modules-boot.d/*
[ 3.860799] gpio_button_hotplug: loading out-of-tree module taints kernel.
[ 3.881843] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
[ 3.899763] init: - preinit -
Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level
[ 5.250916] random: procd: uninitialized urandom read (4 bytes read)
[ 5.254671] procd: - early -
[ 5.260462] procd: - watchdog -
[ 5.799084] procd: - watchdog -
[ 5.802572] procd: - ubus -
[ 7.729267] random: crng init done
[ 7.737455] procd: - init -
Please press Enter to activate this console.
[ 8.002266] kmodloader: loading kernel modules from /etc/modules.d/*
[ 8.252680] i2c_dev: i2c /dev entries driver
[ 8.268712] Loading modules backported from Linux version v6.18-0-g7d0a66e4b
[ 8.275820] Backport generated by backports.git 4d44cef
[ 8.354081] mt7915e 0001:01:00.0: enabling device (0140 -> 0142)
[ 8.540072] mt7915e 0001:01:00.0: HW/SW Version: 0x8a108a10, Build Time: 20240429200716a
[ 8.540072]
[ 8.567183] mt7915e 0001:01:00.0: WM Firmware Version: ____000000, Build Time: 20240429200752
[ 8.567259] urngd: v1.0.2 started.
[ 8.605472] mt7915e 0001:01:00.0: WA Firmware Version: DEV_000000, Build Time: 20240429200812
[ 8.743389] mt7915e 0001:01:00.0: registering led 'mt76-phy0'
[ 8.824489] mt7915e 0001:01:00.0: registering led 'mt76-phy1'
[ 8.951226] PPP generic driver version 2.4.2
[ 8.980055] NET: Registered PF_PPPOX protocol family
[ 8.999628] kmodloader: done loading kernel modules from /etc/modules.d/*
[ 19.492445] mt7530-mmio 1fb58000.switch lan1: configuring for phy/internal link mode
[ 19.503424] br-lan: port 1(lan1) entered blocking state
[ 19.508707] br-lan: port 1(lan1) entered disabled state
[ 19.514103] mt7530-mmio 1fb58000.switch lan1: entered allmulticast mode
[ 19.520799] airoha_eth 1fb50000.ethernet eth0: entered allmulticast mode
[ 19.527833] mt7530-mmio 1fb58000.switch lan1: entered promiscuous mode
[ 19.546703] mt7530-mmio 1fb58000.switch lan2: configuring for phy/internal link mode
[ 19.556841] br-lan: port 2(lan2) entered blocking state
[ 19.562178] br-lan: port 2(lan2) entered disabled state
[ 19.567474] mt7530-mmio 1fb58000.switch lan2: entered allmulticast mode
[ 19.574550] mt7530-mmio 1fb58000.switch lan2: entered promiscuous mode
[ 19.599657] mt7530-mmio 1fb58000.switch lan3: configuring for phy/internal link mode
[ 19.609144] br-lan: port 3(lan3) entered blocking state
[ 19.614553] br-lan: port 3(lan3) entered disabled state
[ 19.619923] mt7530-mmio 1fb58000.switch lan3: entered allmulticast mode
[ 19.626979] mt7530-mmio 1fb58000.switch lan3: entered promiscuous mode
[ 19.672216] mt7530-mmio 1fb58000.switch wan: configuring for phy/internal link mode
[ 20.114482] br-lan: port 4(phy0-ap0) entered blocking state
[ 20.120174] br-lan: port 4(phy0-ap0) entered disabled state
[ 20.125815] mt7915e 0001:01:00.0 phy0-ap0: entered allmulticast mode
[ 20.132541] mt7915e 0001:01:00.0 phy0-ap0: entered promiscuous mode
[ 20.153025] mt7915e 0001:01:00.0 phy0-ap0: left allmulticast mode
[ 20.159169] mt7915e 0001:01:00.0 phy0-ap0: left promiscuous mode
[ 20.165397] br-lan: port 4(phy0-ap0) entered disabled state
[ 20.265570] br-lan: port 4(phy0-ap0) entered blocking state
[ 20.271310] br-lan: port 4(phy0-ap0) entered disabled state
[ 20.276952] mt7915e 0001:01:00.0 phy0-ap0: entered allmulticast mode
[ 20.283622] mt7915e 0001:01:00.0 phy0-ap0: entered promiscuous mode
[ 20.710188] br-lan: port 5(phy1-ap0) entered blocking state
[ 20.715836] br-lan: port 5(phy1-ap0) entered disabled state
[ 20.721630] mt7915e 0001:01:00.0 phy1-ap0: entered allmulticast mode
[ 20.728280] mt7915e 0001:01:00.0 phy1-ap0: entered promiscuous mode
[ 20.790787] br-lan: port 5(phy1-ap0) entered blocking state
[ 20.796396] br-lan: port 5(phy1-ap0) entered forwarding state
[ 20.803849] mt7915e 0001:01:00.0 phy1-ap0: left allmulticast mode
[ 20.810155] mt7915e 0001:01:00.0 phy1-ap0: left promiscuous mode
[ 20.816406] br-lan: port 5(phy1-ap0) entered disabled state
[ 20.859888] br-lan: port 5(phy1-ap0) entered blocking state
[ 20.865530] br-lan: port 5(phy1-ap0) entered disabled state
[ 20.871305] mt7915e 0001:01:00.0 phy1-ap0: entered allmulticast mode
[ 20.878000] mt7915e 0001:01:00.0 phy1-ap0: entered promiscuous mode
[ 23.680957] mt7530-mmio 1fb58000.switch lan1: Link is Up - 1Gbps/Full - flow control rx/tx
[ 23.689334] br-lan: port 1(lan1) entered blocking state
[ 23.694576] br-lan: port 1(lan1) entered forwarding state
[ 24.224969] br-lan: port 5(phy1-ap0) entered blocking state
[ 24.230605] br-lan: port 5(phy1-ap0) entered forwarding state
[ 28.032662] br-lan: port 4(phy0-ap0) entered blocking state
[ 28.038259] br-lan: port 4(phy0-ap0) entered forwarding state
[ 34.240720] mt7530-mmio 1fb58000.switch wan: Link is Up - 1Gbps/Full - flow control rx
[ 37.200762] mt7530-mmio 1fb58000.switch lan1: Link is Down
[ 37.206378] br-lan: port 1(lan1) entered disabled state
[ 39.282321] mt7530-mmio 1fb58000.switch lan1: Link is Up - 1Gbps/Full - flow control rx/tx
[ 39.283311] br-lan: port 1(lan1) entered blocking state
[ 39.295932] br-lan: port 1(lan1) entered forwarding state
```
I looked at the register space for AN7581 and EN7523 and they are very similar. Can you instrument the code and print out the addresses that the code tries to read?
I looked at the register space for AN7581 and EN7523 and they are very similar. Can you instrument the code and print out the addresses that the code tries to read?
revert the patchers I had applied to the npu, and today I'm having problems with the Ethernet where the whole system is freezing when I try to access a any website. I haven't tested reverting to last week's commits yet
view video in attachaments
@merbanan
revert the patchers I had applied to the npu, and today I'm having problems with the Ethernet where the whole system is freezing when I try to access a any website. I haven't tested reverting to last week's commits yet
view video in attachaments
Those should not be needed and should be handled by the led configuration of the phy driver.
/* LED Config */
phy_write_mmd(phydev, MDIO_MMD_VEND1, 0x24, 0xc007);
phy_write_mmd(phydev, MDIO_MMD_VEND1, 0x25, 0x003f);
Those should not be needed and should be handled by the led configuration of the phy driver.
When I wrote a phy driver for AN7581 I often ended up in a non working state.
Start with just case REXT: and then add modes until it stops working to track down the parts that brakes the data link.
When I wrote a phy driver for AN7581 I often ended up in a non working state.
Start with just case REXT: and then add modes until it stops working to track down the parts that brakes the data link.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
4d76b59039/sdk/en7529/linux-4.4.115/arch/arm/boot/dts/en7523.dts (L348-L363)4d76b59039/sdk/en7529/linux-4.4.115/arch/arm/boot/dts/en7523.dts (L298-L304)Files
4d76b59039/sdk/en7529/linux-4.4.115/arch/arm/mach-econet/ecnt_frame_engine.c4d76b59039/sdk/en7529/linux-4.4.115/arch/arm/mach-econet/ecnt_xsi.cqdma_dev consume
4d76b59039/sdk/en7529/linux-4.4.115/qdma_dev.i (L62496-L65608)External comments
I am getting packet data through to the CPU now. But it is not correctly mapped to the correct interface. I am seeing ARP and stuff.
00:02:48.104438 IP 192.168.1.100 > OpenWrt.lan: ICMP echo request, id 139, seq 5, length 64
00:02:48.104561 IP OpenWrt.lan > 192.168.1.100: ICMP echo reply, id 139, seq 5, length 64
00:02:49.128439 IP 192.168.1.100 > OpenWrt.lan: ICMP echo request, id 139, seq 6, length 64
00:02:49.128562 IP OpenWrt.lan > 192.168.1.100: ICMP echo reply, id 139, seq 6, length 64
00:02:50.152444 IP 192.168.1.100 > OpenWrt.lan: ICMP echo request, id 139, seq 7, length 64
00:02:50.152568 IP OpenWrt.lan > 192.168.1.100: ICMP echo reply, id 139, seq 7, length 64
EN7523 CPU can now RX
You can send me the patcher so I can test it when I receive the xx230v.
Yeah, I will. I'll try to sort out tx now.
4d76b59039/sdk/en7529/linux-4.4.115/arch/arm/boot/dts/en7523.dts (L295)b8dc284d66/target/linux/airoha/dts/en7523.dtsi (L398)Why are the values different?
I fucked up I think.
Lovely, I was getting hangs after 100s of packets. This setting assigns sram over to the fe block. So I guess it get upset because of that.
devmem 0x1fbf9074 that needs to be 3.
Ok, still hangs after a while. Probably has to do with the descriptor allocation/queues.
Ok, 74 -> 0x74 is probably needed.
Ok, much better. Ping seems stable now.
Ok, I'm gonna do some other stuff for the time being. Validate my changes when you get your device.
okay
Ping flood from my computer.
GDMP_DATA_SELto change yep?7147d32347/drivers/net/ethernet/airoha/airoha_eth.c (L504-L510)Yes.
This:
https://econet-linux.pkt.wiki/hardware/EN751221/frame-engine
and the following page 125
https://drive.google.com/file/d/1iZMXhaKoSO1bupRaXUShmNzj9Hj6n9Th/view
describes how things are connected and work.
On the EN7523 it has the WED connected via the GDM3 though and the port indexing has other meanings. But basically there is a PSE with different blocks connected to the PSE ports. And the QDMA is passing packets (descriptors) around.
so it will be something like this
This is the list of ports on the PSE and the component first connected to the port. Other things can be connected after it.
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/ethernet/airoha/airoha_eth.h?h=v6.18-rc4#n114
A somewhat interesting gathering of information.
https://github.com/RuijieNetworksCommunity/openwrt-en75xx/blob/en7562-24.10/en7562ct.md
The router just arrived, I'm going to start building OpenWRT with the patchers to test it, but I'll probably only send the results tomorrow morning (Brazilian time)
Bootlog file: boot_openwrt_2025-11-10_22-10.log
boot_openwrt_2025-11-11_13-16.log
@merbanan i changed this
sportmap and not get moreairoha_eth 1fb50000.ethernet: airoha_qdma_rx_process() free frag:598f0598ee/drivers/net/ethernet/airoha/airoha_eth.c (L624-L651)log
The port mask is 4 bits. It can never hold 0xFFFF. With different SoC configurations I think we should replace it with a table per SoC instead. Then we can load the correct SoC table during init. With 4 bits we only have 16 elements per SoC and a function call gets translated to a lookup table instead.
ping -f 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
.......^C
--- 192.168.1.1 ping statistics ---
1291673775 packets transmitted, 1291673768 received, 5.41932e-07% packet loss, time 176568864ms
rtt min/avg/max/mdev = 0.085/0.118/19.833/0.025 ms, pipe 2, ipg/ewma 0.136/0.127 ms
So I dropped 7 packets during a 2 day ping flood. I think the buffer handling is fine. Just need to route packets in the PSE properly.
No reported drops internally in the PSE either.
Okay, I'll remove the 0xffff, but after I changed that I was able to receive the packets without drops or significant loss when pinging in both directions
#define QDMA_ETH_RXMSG_SPORT_MASK GENMASK(24, 20)
5 bits. Still it should be a table.
0x16,0x17,0x18 are mapped to HSGMII ethernet macs on the EN7523.
The hsgmii wan port sport value is missing and I cant find it. EN7523 have 4 HSGMII MACS.
Maybe add a specific lookup value that prints out unknown sports.
I found these values:
Much of the en7512 code should be compatible.
cjdfound this GPL, which has several/all of the private code, and I also noticed that it is quite similar to some code I found within the xx230v GPLIt probably has something to do with the hsgmii wan port
aea3a43562/tclinux_phoenix/modules/private/ether/en7512/eth_en7512.h (L460-L480)I found this here:
aea3a43562/tclinux_phoenix/modules/private/xpon/inc/pwan/gpon_wan.h (L32-L45)I managed to get a small amount of network traffic, but then it freezes somewhere on airoha_eth
But then it stopped. I've attached the log for you to take a look at if you want
I confirm the issue. ICMP seems to work fine. UDP might also work but TCP has issues.
I compared a working iperf3 tcp setup with a non working and it seems the tcp headers work fine but the payload was different.
tcpdump from device
wireshark from computer
09 != 08
So the tx path has issues with regard to where it collects the tcp packet data.
Do we need to map the TCP here?
83d8f2e66e/drivers/net/ethernet/airoha/airoha_eth.c (L157-L219)No VIP and IFC are filters that are active in the HW accelerated data forwarding path.
83d8f2e66e/drivers/net/ethernet/airoha/airoha_eth.c (L2103-L2105)I have
len = skb_headlen(skb)+4;in my code here.
This gives me properly sized packets but it is a highly dubious change. And it also seems the data is mapped incorrectly. Most likely we have some buffer alignment issue. Maybe the skb->data pointer needs an +4 offset also.
I'll be away from home this weekend, I'll only be able to test it when I get home on Monday
+4 to the data pointer did not work.
Well the transmit function outputs what's in the data buffer.
hexdump in kernel on DUT:
and tcpdump on lan2 on same device
So tcpdump says that the last byte in the skb data should be 09 but the dump of the buffer before transmit says it is 45.
I didn't make much progress today, but the responses on TCP increased, albeit altered
boot_openwrt_2025-11-17_19-16.log
I have been tracing the buffers and the xmit function in the driver gets the same data as higher level transmit functions. It seems the network data buffer is transmitted before the buffer is ready. The TCP header transmission is fine, it is just that the data seems to be ready much later. Can you try with adding some of the linux kernel configuration options from AN7581?
What would they be?
And moving the device out of the bridge makes it work even less.
I can ping from the device but not too the device. I think the change brakes ARP.
Im not sure. I just make a diff between the different kernel configs in the openwrt tree.
I don't think this detachment works on the EN7523; I'm tinkering with it to see if that's the problem.
870b0c8bf0/drivers/net/ethernet/airoha/airoha_eth.c (L1987-L1993)It's strange, but the TCP packets are working, but there's packet retransmission.
So the dump of the skb data buffer in tcp_transmit_skb(), shows different data compared to the output of tcpdump.
Call trace:
[ 213.875713] unwind_backtrace from show_stack+0x10/0x14
[ 213.875737] show_stack from dump_stack_lvl+0x50/0x64
[ 213.875760] dump_stack_lvl from airoha_dev_xmit+0x70/0x890
[ 213.875785] airoha_dev_xmit from dev_hard_start_xmit+0xa4/0xec
[ 213.875808] dev_hard_start_xmit from sch_direct_xmit+0x8c/0x30c
[ 213.875829] sch_direct_xmit from __dev_queue_xmit+0x7e4/0xd7c
[ 213.875847] __dev_queue_xmit from dsa_user_xmit+0x114/0x1a8
[ 213.875870] dsa_user_xmit from dev_hard_start_xmit+0xa4/0xec
[ 213.875890] dev_hard_start_xmit from __dev_queue_xmit+0x200/0xd7c
[ 213.875910] __dev_queue_xmit from br_dev_queue_push_xmit+0x68/0x190
[ 213.875928] br_dev_queue_push_xmit from br_forward_finish+0x90/0x9c
[ 213.875940] br_forward_finish from br_dev_xmit+0x2c4/0x4cc
[ 213.875958] br_dev_xmit from dev_hard_start_xmit+0xa4/0xec
[ 213.875979] dev_hard_start_xmit from __dev_queue_xmit+0x200/0xd7c
[ 213.875999] __dev_queue_xmit from ip_finish_output2+0x1e0/0x700
[ 213.876020] ip_finish_output2 from ip_output+0x4c/0xa0
[ 213.876037] ip_output from __ip_queue_xmit+0x174/0x47c
[ 213.876054] __ip_queue_xmit from __tcp_transmit_skb+0x538/0xbc0
[ 213.876075] __tcp_transmit_skb from tcp_write_xmit+0x36c/0x1764
[ 213.876096] tcp_write_xmit from __tcp_push_pending_frames+0x30/0x10c
[ 213.876117] __tcp_push_pending_frames from tcp_sendmsg_locked+0xa6c/0xcf0
[ 213.876135] tcp_sendmsg_locked from tcp_sendmsg+0x28/0x40
[ 213.876147] tcp_sendmsg from sock_write_iter+0x94/0xe4
[ 213.876167] sock_write_iter from vfs_write+0x3ac/0x42c
[ 213.876190] vfs_write from ksys_write+0x8c/0xc4
[ 213.876208] ksys_write from ret_fast_syscall+0x0/0x4c
I looked at this and while it is not really needed it looks like it does the correct thing.
I installed python and transmitted raw packets. If I remove lan2 from the bridge the package buffer looks very different from what I am trying to transmit.
i noticed that difference too, something I'm experiencing within
airoha_dev_xmit->airoha_get_dsa_tag, the end of the full buffer is completely different.Computer (wireshark):
router in
870b0c8bf0/drivers/net/ethernet/airoha/airoha_eth.c (L1987-L1993)No it looks fine, but it wont transfer.
With DSA active the MTK sp-tag is inserted. And then in the outgoing path it is removed again.
boot_openwrt_2025-11-18_21-03.log
eth0_21_31.pcapng
So the data path works like this. The internal switch is connected to the PSE GDM1 port. The MT7530 switch port 6 is connected to the GDM1 and then port 2 is connected to the world.
When I trace the counters with the bridge down it disables the traffic somehow. If I disable the bridge the packet gets through. So if the bridge is active the interface will not work as the switch will block the traffic.
Now synthetic packets sent towards my computer work fine.
But pinging an ip set on lan2 will not work.
The whole linux network stack just seem broken. If I go out of bridge mode and go directly on the interface I get a direct RST as a response from the TCP connection.
The problem is probably with the DSA working with TCP packets, or something is invalidating the packets in
airoha_eth, TCP and UDP packets are being processed irregularly somewhere in the drivers ofairoha_ethormt7530The sk_buff struct has different length parameters. There might be an issue in the rx path of the driver (airoha_qdma_rx_process).
I did have to adjust the tx path with the +4:
The rx_process might need to get a length value correction also. If the networking stack gets badly formed sk_buffs from the driver then it sort of makes sense that the rest of the stack gets confused.
skb_linearize_cow(skb);
Add that somewhere in the tx path and the correct data should be present.
It worked with SSH, but now we have the problem of processing freezing after the PSE buff runs out.
UDP
TCP
Computer test
Okay, so something I noticed is that I first need to access the router via SSH before I can open any HTTP requests, so something is still not working correctly. However, it is functional; on the local connection, I am getting almost 1 Gbps from the network interface, and my internet speed is almost fully reached (I have 600 Mbps, which is what I get on the main router). Besides that, I haven't had any other problems so far. Another thing is that Flow offloading type as Hardware or Software is very slow for now.
Openwrt:
Computer
Is this necessary, i removed/commented it out and had no more problems with the driver or packages?
480d374450/drivers/net/ethernet/airoha/airoha_eth.c (L490-L493)New iperf test
Computer
Openwrt
wan -> Wireless
TX cant do fragmented skbufs. The dma engine just wont work. So I have to dig into the ref software and setup everything exactly like they do. Then maybe fragmentation starts working.
I dont think it matters until we want to get more speed. I just follow the ref code.
I reverted some changes you made to
airoha_ethand I took a quick test it. Tonight I'll leave iperf running so I can test it, but I find it strange that the upload speed has become so slowdev->hw_features = NETIF_F_IP_CSUM | NETIF_F_RXCSUM |
NETIF_F_TSO6 | NETIF_F_IPV6_CSUM |
NETIF_F_SG | NETIF_F_TSO |
NETIF_F_HW_TC;
If you remove NETIF_F_SG you should get better performance.
It all boils down to a tricky error with the qdma engine. This +4 should not be needed and I am trying to work around that. NETIF_F_SG is a good option to have and it would keep the driver logic mostly the same.
Can you run sys memrl 1FB54018 on ref software?
I'm going to change the rootfs to stock so I can log in via SSH and UART
@merbanan I applied your changes to my code, I don't know why, but when I use
gdmpI lose network traffic with an one SSH connection, then I lose all traffic on both TX/RX, but when I removegdmpmy network traffic becomes completely stable, but with limited upload (computer -> Openwrt || Openwrt -> Internet)I've traced the issue to the switch or phy. The driver is mostly ok.
I changed a few things in DSA and got a slight increase in upload speed.
Patch in DSA
if you look at the traffic in wireshark, is it clean or is there lots of errros ?
My last test with iperf3
Yeah that is the same issue I also have. It looks like it is some kind of switch configuration.
With UDP test
I discarded my changes in the DSA, tested it now without the modifications and it's the same thing, we'll have to look at the PHY
I tried with a 10mbit link and still get bad frames out of the device. I looked at the byte counters and they checked out.
The data path from the cpu is GDM1 tx -> ESW port 6 rx -> ESW port 2 tx.
sh /gsw_diff.sh
Ping
PING 192.168.1.100 (192.168.1.100): 56 data bytes
RXDIFF: 0x62 TXDIFF: 0x62
On working ref I get RXDIFF: 0x62 TXDIFF: 0x66.
So I think the switch configuration has something to do with it.
Today I got the GPL for xx530v v2, it's another SOC from the Econet/Airoha family, not same to v1
AN7551 is a stripped down AN7581.
Ok, I was able to get one proper packet through but then things started to crash. I had to dump all the registers of the ref software internal switch and write them to the openwrt port. I have made alot of changes all over so it will take some time to figure out what is needed.
devmem 0x1fb5b600 32 0x205e33b
That makes the +4 in the tx path redundant.
There are still issues with the passing traffic though. Iperf3 gives bad results.
#define MT753X_PMCR_P(x)
#define MT7530_TXCRC_EN_P6 BIT(26)
#define MT7530_RXCRC_EN_P6 BIT(25)
It is bit 25 that needs to be set somewhere.
devmem 0x1fb5b0ec 32 0x2
#define MT7530_DBGGCR 0x30EC
#define TXFC_LPICHK BIT(5)
#define LPDET_RDYFIX BIT(4)
#define PSON_RDYFIX BIT(3)
#define PSOFF_RDYFIX BIT(2)
#define CPORT_RXG_BUSY BIT(1)
#define TX_LKOFF_ENDCHK BIT(0)
CPORT_RXG_BUSY needs to be set.
Now I get a quite clean steady 100mbit transfer.
And with the revert of some patches i get the following:
iperf3 -c 192.168.1.1 -R -t1000
Connecting to host 192.168.1.1, port 5201
Reverse mode, remote host 192.168.1.1 is sending
[ 5] local 192.168.1.100 port 53064 connected to 192.168.1.1 port 5201
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 31.0 MBytes 260 Mbits/sec
[ 5] 1.00-2.00 sec 30.4 MBytes 255 Mbits/sec
[ 5] 2.00-3.00 sec 28.0 MBytes 234 Mbits/sec
[ 5] 3.00-4.00 sec 32.2 MBytes 271 Mbits/sec
[ 5] 4.00-5.00 sec 33.3 MBytes 279 Mbits/sec
[ 5] 5.00-6.00 sec 30.8 MBytes 259 Mbits/sec
[ 5] 6.00-7.00 sec 25.3 MBytes 212 Mbits/sec
[ 5] 7.00-8.00 sec 28.0 MBytes 235 Mbits/sec
[ 5] 8.00-9.00 sec 30.9 MBytes 259 Mbits/sec
[ 5] 9.00-10.00 sec 35.6 MBytes 298 Mbits/sec
[ 5] 10.00-11.00 sec 27.6 MBytes 231 Mbits/sec
[ 5] 11.00-12.00 sec 26.6 MBytes 223 Mbits/sec
[ 5] 12.00-13.00 sec 27.6 MBytes 231 Mbits/sec
[ 5] 13.00-14.00 sec 35.1 MBytes 294 Mbits/sec
[ 5] 14.00-15.00 sec 37.8 MBytes 317 Mbits/sec
[ 5] 15.00-16.00 sec 28.6 MBytes 240 Mbits/sec
[ 5] 16.00-17.00 sec 29.7 MBytes 249 Mbits/sec
[ 5] 17.00-18.00 sec 38.7 MBytes 324 Mbits/sec
[ 5] 18.00-19.00 sec 26.1 MBytes 219 Mbits/sec
[ 5] 19.00-20.00 sec 33.7 MBytes 283 Mbits/sec
[ 5] 20.00-21.00 sec 38.5 MBytes 323 Mbits/sec
[ 5] 21.00-22.00 sec 33.0 MBytes 277 Mbits/sec
devmem 0x1fb5b0F0 32 0xFF00
#define MT7530_CKGCR 0x30F0
#define LPI_TXIDLE_THD GENMASK(15, 8)
#define CKG_TXIDLE BIT(5)
#define CKG_RXLPI BIT(4)
#define CKG_LNKDN_PORT BIT(1)
#define CKG_LNKDN_GLB BIT(0)
MT7530_CKGCR should be set to 0xFF00
This does not seem to affect traffic
From what I understand, you did this on the mt7530 driver
I have a messy work tree. But I think this should be enough for the traffic. IRQ routing seems fishy though.
interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
That is the correct irq for the switch. And I was able to get interrupts when connecting/disconnecting ethernet cables in the ports.
I think it should hook up to the same irq handler logic as the EN7581.
That didn't work. Before I left on Friday, I tested it, and there's still a lot of packet loss, so it didn't work.
Command:
iperf3 -c 192.168.2.1 -R -t1000Patch
dts
External iperf server:
iperf3 -c 138.199.4.1 -R -t100Off topic
Hardware offloader on
test 2:
Can you show the boot log and the following:
devmem 0x1fb5b0ec
devmem 0x1fb5b0F0
?
I think these settings are not applied properly.
mt7530-mmio 1fb58000.switch lan2: Link is Up - 100Mbps/Half - flow control offThis sounds bad.
Client:
iperf3 -c 192.168.2.1 -t25 -RI had forced the link to 100mbps on my computer
99% of the time, if you end up with half duplex something is wrong.
What speeds do you get without -R?
1Gbps:
100mbps full
100Mbps half, no traffic
If I switch back to
209, the interrupt will give me those speeds.iperf3 -c 192.168.2.1 -t25 -RWell I would say that this is working quite well. Will you update the openwrt PR with these changes?
I will, but which interrupt should I leave?
31interruptAre you saying that you get slower speeds with the 31 interrupt configured? That should not be possible.
SoC Interrupt 31 should not be triggering at all. Look at /proc/interrupts. If it is triggering then something is fishy with the enabling of interrupts. I validated manually.
What does devmem 0x1FB5F008 say?
When everything is working properly we should get proper interrupts from when something changes with the phy.
[ 64.776455] mt7530-mmio 1fb58000.switch lan1 (uninitialized): PHY [mt7530-0:09] driver [Generic PHY] (irq=POLL)
[ 64.793774] mt7530-mmio 1fb58000.switch lan2 (uninitialized): PHY [mt7530-0:0a] driver [Generic PHY] (irq=POLL)
[ 64.806081] mt7530-mmio 1fb58000.switch lan3 (uninitialized): PHY [mt7530-0:0b] driver [Generic PHY] (irq=POLL)
[ 64.818353] mt7530-mmio 1fb58000.switch wan (uninitialized): PHY [mt7530-0:0c] driver [Generic PHY] (irq=POLL)
These lines should change to real irqs.
Anyway update the PR with the interrupt set at 209 if you dont get it working. I'll pull your changes and look into the issue.
31interrupt:209interrupt:LGTM
I will be finishing the other drivers, and as soon as I'm done I will be pushing them to both repositories
I don't know if this will help, but this is the /proc/interrupts file in stock
Commit:
e526ec1965Stock
offloading enabled
iperf3 -c 192.168.2.1 -t25 -Riperf3 -c 192.168.2.1 -t25offloading disabled
iperf3 -c 192.168.2.1 -t25 -Riperf3 -c 192.168.2.1 -t25Full log
I added the en7523 to
mtk-ge-soc.c, and removed the alterations you requested, but my TCP packets are requesting retransmission, although ICMP is working normallyI dont follow which ips are what and what direction you do things. TCP retransmission is bound to happen if you max out the link somehow.
I only test with the router are 192.168.1.1 and the computer client at 192.168.1.100. I then run iperf3 from the computer.
In either direction, because I can't get TCP/IPv6 from either the OpenWrt side or the computer, only IPv4
The same applies to UDP/IPv6
I thought you had it working. Anyway this is the code I am using +
devmem 0x1fb5b0ec 32 0x2
devmem 0x1fb5b0F0 32 0x0000FF00
devmem 0x1fb5b600 32 0x205e33b
Your mt7530 changes should make the memsets unneeded.
I confirm I get the same speeds as you.
Try disabling
GDMP, this may restore the upload speed.But the code looked ok :( I'll have to debug more tomorrow.
I'll test it with gdmp enabled and disabled
I am so sorry (cant understand it to me this amount of time to find this):
Get rid of that line and you should get ~200mbit tx.
All in all while the code works the complete patch needs to be reworked. I think the MT7530 patches are good to go. For Openwrt I think this type of patch is going to be accept.
Are you up for sending this code up stream?
Also phy irq support is missing. And the dtsi should be cleanup like the an7581.dtsi has been.
I already removed it, so I don't know what it could be
see the pull request (#9)
This is how things are connected in the frame engine on the EN7523.
@merbanan, please clarify something for me, wasn't
irq=POLLsupposed to have been changed?Correct, something must be missing when resolving the irq path, I am guessing it is the MT7530/EN7523 integration code. I am still rebuilding my setup so I can not test yet.
now re-enable NPU
That looks wrong.
NPU Enabled gettings my max speed in https://speed.cloudflare.com/
Well everything is passing via the cpu. NPU should not do anything.
74e58d4a82/econet_public/arch/arm/mach-econet/ecnt_scu.c (L84)74e58d4a82/econet_public/arch/arm/mach-econet/ecnt_scu.c (L1317)I enabled hardware Flow offloading type. Before enabling it, I had 323Mbps Tx and Rx.
These are speed tests I ran on speed.cloudflare.com
if I'm not mistaken, the NPU handles part of the network traffic on the switch and wireless (tx ring)
Check the cpu while doing an iperf test through the device. I am quite sure the NPUs are not involved at all.
You're right, but CPU usage has dropped significantly; it used to be 20-27%, and now it's around 16-22%
Well it seems the hw off-load (eth) is working then. I need to write the tools so we can look at the active ppe rules.
And wifi tx off-load is still within reach.
I'm having problems with the NPU again. The whole system freezes after the interface starts up. If I disable it, it works normally again, but without the NPU and hardware offloading disabled and with the total speed reduced
Well what happens if you only disable the NPU? I think the memory that the npu cores touch is not properly reserved from the os.
If I disable it, the whole system works normally, without system freezing
Yeah, can you test loading the driver but not starting the cores? I think they simply corrupt the kernel internal structures or act on non zeroed buffer memory.
It is very hard to figure out what the issue is in this case. If you are able to find gpio 8/9 you should be able to enable the npu uart mux and see if there is any output from the npu driver. But this is all hard problems. I do have a ref board where I should be able to connect this but I dont see a path forward where this issue is getting fixed by being able to observe the npu uart.
The best way forward imo is to disable the npu for now and focus on the WED implementation. The MT7622 support should be possible to port to the en7523 code.
this boot
Make sure you power cycle the device. The wifi driver npu support might need disabling also.
The mt7915 not have NPU and wed currently in OpenWRT builds, only mt7996
I disabled core boot and had no problem with the NPU, boot log:
I disabled cores 3 and 4 and get the NPU active again, but if I enable cores 3 and 4, the system freezes, and if I enable even core 3, the system freezes before even starting the network interface
core 1, 2 and 3 boot
core 1 and 2 boot
mt76 crashing
[ 7.741737] airoha_wed1: error status=00080000
You need to look in the all the mt76 patches I uploaded to see what is needed for working WED support.
Sirherobrine23 referenced this issue2026-01-24 11:08:02 +00:00
One question, what do I need to do to make the PPE return correct values to
entriesandbind?I looked at the register space for AN7581 and EN7523 and they are very similar. Can you instrument the code and print out the addresses that the code tries to read?
get this with this changes:
There is no ppe2 on the EN7523.
Total amount of forwarding rules are 512 sram and 16k dram.
I've reverted some things here that were accidentally replaced, and I'll revert the information from the PPE
state return this
@merbanan
revert the patchers I had applied to the npu, and today I'm having problems with the Ethernet where the whole system is freezing when I try to access a any website. I haven't tested reverting to last week's commits yet
view video in attachaments
I added patch for calibration for switch and fix dts switch interrups (I misspelled
interrupt, instead ofinterrupts)but now the leds are not blinking and the wan interface is not identifying the connection
If you leave out the calibration part does that help?
I'll see now, first I'll go up to pr commit
Now there is no network traffic at all, but the LEDs are blinking again
Those should not be needed and should be handled by the led configuration of the phy driver.
When I wrote a phy driver for AN7581 I often ended up in a non working state.
Start with just case REXT: and then add modes until it stops working to track down the parts that brakes the data link.
I will be locking this issue for new conversations, let's keep the conversations going in PR #9