jnippula opened a new pull request, #21476:
URL: https://github.com/apache/nuttx/pull/21476
## Summary
This pull request adds support for the NETC (Network Ethernet Controller)
architecture on the i.MXRT118x family, introducing a new Ethernet driver and
configuration options for the RT1180-EVK board. The changes include new Kconfig
options, build system integration, and comprehensive documentation updates for
enabling and configuring the NETC Ethernet interfaces and their PHYs. Also new
PHY device driver support added to avoid hardcoding list of supported PHY
models in network controller code.
**PHY device drivers:**
- phy_ops_s struct defined for calling phyinit and phyreset actions from
network driver
- Realtek RTL8201F and RTL8211F PHY drivers implemented
**NETC Ethernet support for i.MXRT118x:**
- Added NETC architecture driver and build integration:
- support for enabling SYS_PLL1 derived clock sources
- Introduced a new NETDEV lower-half Ethernet driver (`imxrt_netc.c`,
`imxrt_netc_port.c`, `imxrt_netc_switch.c`) for RT118x, supporting both
direct-PHY (ENETC0) and switch-attached (ENETC1) interfaces.
- Updated `chip.h` to define NETC controller and port counts for
i.MXRT118x.
- Kconfig and build system enhancements:
- Added `IMXRT_HAVE_NETC` and a new "NETC Ethernet ports" menu with
options to enable ENETC0 and ENETC1 switch ports 0–3, as well as settings for
descriptor counts and PHY initialization. ENET is now disabled for i.MXRT118x
in favor of NETC.
**Board and documentation updates:**
- RT1180-EVK board integration:
- Updated the board documentation to describe NETC Ethernet support,
including which ports are enabled by default, PHY models, configuration
requirements, and hardware integration notes.
- The `nsh` configuration now enables NETC Ethernet on ETH1
(ENETC1/PORT1) with static IPv4 and `ping` command.
- Usage and configuration guidance:
- Provided detailed instructions in the platform documentation for
enabling and configuring NETC, including PHY driver selection, board-level
integration, DMA requirements, and validation steps.
These changes collectively enable robust, configurable Ethernet support on
the i.MXRT1180-EVK using the new NETC architecture.
## Impact
Affects rt1180-evk board only.
## Testing
*Host PC: Kubuntu 26.04*
*NuttX device: mimxrt1180-evk board*
**NETC verified by 10 minutes TCPBlaster run
(`nuttx-apps/examples/tcpblaster`):**
- TCPBlaster enabled with `CONFIG_EXAMPLES_TCPBLASTER=y`
- ENETC1 / PORT0 used.
Host:
```
$ ./tcpserver
Binding to IPv4 Address: 00000000
server: Accepting connections on port 5471
server: Connection accepted -- receiving
...
[2026-11-04 14:56:55.000] 38008: Received 50 buffers: 69.3 KB (buffer
averagesize: 1.4 KB) in 0.01 seconds ( 5864.2 KB/second)
[2026-11-04 14:56:55.000] 38009: Received 50 buffers: 65.3 KB (buffer
averagesize: 1.3 KB) in 0.01 seconds ( 5744.7 KB/second)
[2026-11-04 14:56:55.000] 38010: Received 50 buffers: 66.7 KB (buffer
averagesize: 1.3 KB) in 0.01 seconds ( 5466.8 KB/second)
[2026-11-04 14:56:55.000] 38011: Received 50 buffers: 69.3 KB (buffer
averagesize: 1.4 KB) in 0.01 seconds ( 5897.9 KB/second)
[2026-11-04 14:56:55.000] 38012: Received 50 buffers: 61.4 KB (buffer
averagesize: 1.2 KB) in 0.01 seconds ( 6072.6 KB/second)
[2026-11-04 14:56:55.000] 38013: Received 50 buffers: 65.3 KB (buffer
averagesize: 1.3 KB) in 0.01 seconds ( 5205.9 KB/second)
[2026-11-04 14:56:55.000] 38014: Received 50 buffers: 68.0 KB (buffer
averagesize: 1.4 KB) in 0.01 seconds ( 5531.2 KB/second)
[2026-11-04 14:56:55.000] 38015: Received 50 buffers: 66.6 KB (buffer
averagesize: 1.3 KB) in 0.01 seconds ( 6426.2 KB/second)
[2026-11-04 14:56:55.000] 38016: Received 50 buffers: 65.4 KB (buffer
averagesize: 1.3 KB) in 0.01 seconds ( 5369.9 KB/second)
[2026-11-04 14:56:55.000] 38017: Received 50 buffers: 66.7 KB (buffer
averagesize: 1.3 KB) in 0.01 seconds ( 5894.5 KB/second)
[2026-11-04 14:56:55.000] 38018: Received 50 buffers: 65.3 KB (buffer
averagesize: 1.3 KB) in 0.01 seconds ( 5734.6 KB/second)
[2026-11-04 14:56:55.000] 38019: Received 50 buffers: 62.7 KB (buffer
averagesize: 1.3 KB) in 0.01 seconds ( 5407.9 KB/second)
[2026-11-04 14:56:55.000] 38020: Received 50 buffers: 64.0 KB (buffer
averagesize: 1.3 KB) in 0.01 seconds ( 5604.4 KB/second)
[2026-11-04 14:56:55.000] 38021: Received 50 buffers: 77.3 KB (buffer
averagesize: 1.5 KB) in 0.01 seconds ( 5718.9 KB/second)
[2026-11-04 14:56:55.000] 38022: Received 50 buffers: 70.7 KB (buffer
averagesize: 1.4 KB) in 0.01 seconds ( 5287.5 KB/second)
[2026-11-04 14:56:55.000] 38023: Received 50 buffers: 70.6 KB (buffer
averagesize: 1.4 KB) in 0.01 seconds ( 5858.8 KB/second)
[2026-11-04 14:56:55.000] 38024: Received 50 buffers: 74.7 KB (buffer
averagesize: 1.5 KB) in 0.01 seconds ( 6212.5 KB/second)
[2026-11-04 14:56:55.000] 38025: Received 50 buffers: 69.3 KB (buffer
averagesize: 1.4 KB) in 0.01 seconds ( 5472.9 KB/second)
[2026-11-04 14:56:55.000] 38026: Received 50 buffers: 81.4 KB (buffer
averagesize: 1.6 KB) in 0.01 seconds ( 5820.8 KB/second)
[2026-11-04 14:56:55.000] 38027: Received 50 buffers: 65.3 KB (buffer
averagesize: 1.3 KB) in 0.01 seconds ( 5991.7 KB/second)
[2026-11-04 14:56:55.000] 38028: Received 50 buffers: 65.3 KB (buffer
averagesize: 1.3 KB) in 0.01 seconds ( 5392.3 KB/second)
[2026-11-04 14:56:55.000] 38029: Received 50 buffers: 68.0 KB (buffer
averagesize: 1.4 KB) in 0.01 seconds ( 6092.4 KB/second)
[2026-11-04 14:56:55.000] 38030: Received 50 buffers: 72.0 KB (buffer
averagesize: 1.4 KB) in 0.01 seconds ( 5827.9 KB/second)
[2026-11-04 14:56:55.000] 38031: Received 50 buffers: 61.4 KB (buffer
averagesize: 1.2 KB) in 0.01 seconds ( 5123.6 KB/second)
[2026-11-04 14:56:55.000] 38032: Received 50 buffers: 70.6 KB (buffer
averagesize: 1.4 KB) in 0.01 seconds ( 5933.1 KB/second)
[2026-11-04 14:56:55.000] 38033: Received 50 buffers: 80.0 KB (buffer
averagesize: 1.6 KB) in 0.01 seconds ( 5565.5 KB/second)
[2026-11-04 14:56:55.000] 38034: Received 50 buffers: 69.4 KB (buffer
averagesize: 1.4 KB) in 0.01 seconds ( 6178.4 KB/second)
[2026-11-04 14:56:55.000] 38035: Received 50 buffers: 68.0 KB (buffer
averagesize: 1.4 KB) in 0.01 seconds ( 6056.0 KB/second)
[2026-11-04 14:56:55.000] 38036: Received 50 buffers: 65.3 KB (buffer
averagesize: 1.3 KB) in 0.01 seconds ( 5326.4 KB/second)
[2026-11-04 14:56:55.000] 38037: Received 50 buffers: 68.0 KB (buffer
averagesize: 1.4 KB) in 0.01 seconds ( 6282.0 KB/second)
[2026-11-04 14:56:55.000] 38038: Received 50 buffers: 66.7 KB (buffer
averagesize: 1.3 KB) in 0.01 seconds ( 6122.3 KB/second)
[2026-11-04 14:56:55.000] 38039: Received 50 buffers: 73.3 KB (buffer
averagesize: 1.5 KB) in 0.01 seconds ( 5269.1 KB/second)
[2026-11-04 14:56:55.000] 38040: Received 50 buffers: 70.7 KB (buffer
averagesize: 1.4 KB) in 0.01 seconds ( 6537.7 KB/second)
[2026-11-04 14:56:55.000] 38041: Received 50 buffers: 65.3 KB (buffer
averagesize: 1.3 KB) in 0.01 seconds ( 5677.8 KB/second)
```
NuttX device:
```
nsh> tcpclient 10.0.0.1
Connecting to IPv4 Address: 0100000a
client: Connected
[2018-09-01 00:00:40.000] 0: Sent 50 4096-byte buffers: 200.0KB (avg 4.0
KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:00:40.000] 1: Sent 50 4096-byte buffers: 200.0KB (avg 4.0
KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:00:40.000] 2: Sent 50 4096-byte buffers: 200.0KB (avg 4.0
KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:00:40.000] 3: Sent 50 4096-byte buffers: 200.0KB (avg 4.0
KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:00:40.000] 4: Sent 50 4096-byte buffers: 200.0KB (avg 4.0
KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:00:40.000] 5: Sent 50 4096-byte buffers: 200.0KB (avg 4.0
KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:00:40.000] 6: Sent 50 4096-byte buffers: 200.0KB (avg 4.0
KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:00:40.000] 7: Sent 50 4096-byte buffers: 200.0KB (avg 4.0
KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:00:40.000] 8: Sent 50 4096-byte buffers: 200.0KB (avg 4.0
KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:00:40.000] 9: Sent 50 4096-byte buffers: 200.0KB (avg 4.0
KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:00:40.000] 10: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:00:40.000] 11: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:00:40.000] 12: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:00:40.000] 13: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:00:40.000] 14: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:00:40.000] 15: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:00:40.000] 16: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:00:40.000] 17: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:00:40.000] 18: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:00:40.000] 19: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:00:40.000] 20: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:00:40.000] 21: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:00:40.000] 22: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:00:40.000] 23: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:00:40.000] 24: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:00:41.000] 25: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:00:41.000] 26: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.03 seconds ( 6666.7 KB/second)
...
[2018-09-01 00:10:10.000] 12949: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:10:10.000] 12950: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:10:10.000] 12951: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:10:10.000] 12952: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:10:10.000] 12953: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:10:10.000] 12954: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:10:10.000] 12955: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:10:10.000] 12956: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:10:10.000] 12957: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:10:10.000] 12958: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:10:11.000] 12959: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:10:11.000] 12960: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:10:11.000] 12961: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:10:11.000] 12962: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:10:11.000] 12963: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:10:11.000] 12964: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:10:11.000] 12965: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:10:11.000] 12966: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:10:11.000] 12967: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:10:11.000] 12968: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:10:11.000] 12969: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:10:11.000] 12970: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:10:11.000] 12971: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:10:11.000] 12972: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:10:11.000] 12973: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:10:11.000] 12974: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.03 seconds ( 6666.7 KB/second)
[2018-09-01 00:10:11.000] 12975: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.04 seconds ( 5000.0 KB/second)
[2018-09-01 00:10:11.000] 12976: Sent 50 4096-byte buffers: 200.0KB (avg
4.0 KB) in 0.03 seconds ( 6666.7 KB/second)
```
**OSTest log:**
[rt1180_ostest.log](https://github.com/user-attachments/files/34410209/rt1180_ostest.log)
**Documentation:**
- Documentation successfully built with `make html`
- Doc changed verified with browser
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]