This is an automated email from the ASF dual-hosted git repository. archer pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit 22f2d39e2152f38878b2952a07dd9ac76bac2878 Author: zouboan <zoub...@hotmail.com> AuthorDate: Wed Feb 5 21:50:52 2025 +0800 arch/zynq-mpsoc improve the ethernet driver 1. Changes the phyadd to 0xC to speed up the training of phyadd. 2. Set RX DMA buffer size configureable. 3. Create netnsh configs as ethernet boot from QSPI FLASH. 4. Fix some typo in #15720 which is nonsynchronous with local code. --- arch/arm64/src/zynq-mpsoc/Kconfig | 10 ++++++ arch/arm64/src/zynq-mpsoc/zynq_boot.c | 7 ----- arch/arm64/src/zynq-mpsoc/zynq_enet.c | 16 +++++++--- .../zcu111/configs/{net => netjtag}/defconfig | 26 +++++++++++++--- .../zcu111/configs/{net => netnsh}/defconfig | 36 ++++++++++++++-------- boards/arm64/zynq-mpsoc/zcu111/src/Makefile | 4 +++ 6 files changed, 70 insertions(+), 29 deletions(-) diff --git a/arch/arm64/src/zynq-mpsoc/Kconfig b/arch/arm64/src/zynq-mpsoc/Kconfig index 128cf1b100..70bad2c1a8 100644 --- a/arch/arm64/src/zynq-mpsoc/Kconfig +++ b/arch/arm64/src/zynq-mpsoc/Kconfig @@ -86,6 +86,16 @@ config ZYNQ_GMAC_NTXBUFFERS that can be in flight. This is also equal to the number of TX descriptors that will be allocated. +config ZYNQ_GMAC_RXDMA_BUFSIZE + int "RX DMA buffer size" + default 128 + range 64 10240 + ---help--- + DMA receive buffer size in external AMBA (AHB/AXI) system memory. + The value defined by these bits determines the size of buffer to + use in main system memory when writing received data. The value + must be defined as multiples of 64 bytes, i.e. 64, 128, 256... + config ZYNQ_GMAC_PREALLOCATE bool "Preallocate buffers" default n diff --git a/arch/arm64/src/zynq-mpsoc/zynq_boot.c b/arch/arm64/src/zynq-mpsoc/zynq_boot.c index 0580e37939..c2d3ff753d 100644 --- a/arch/arm64/src/zynq-mpsoc/zynq_boot.c +++ b/arch/arm64/src/zynq-mpsoc/zynq_boot.c @@ -203,10 +203,3 @@ void arm64_chip_boot(void) up_perf_init((void *)CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC); #endif } - -#if defined(CONFIG_NET) && !defined(CONFIG_NETDEV_LATEINIT) -void arm64_netinitialize(void) -{ - /* TODO: Support net initialize */ -} -#endif diff --git a/arch/arm64/src/zynq-mpsoc/zynq_enet.c b/arch/arm64/src/zynq-mpsoc/zynq_enet.c index 135dd833de..e74e8a5d6e 100644 --- a/arch/arm64/src/zynq-mpsoc/zynq_enet.c +++ b/arch/arm64/src/zynq-mpsoc/zynq_enet.c @@ -99,8 +99,8 @@ /* GMAC buffer sizes, number of buffers, and number of descriptors. *********/ -#define GMAC_RX_UNITSIZE 128 /* Fixed size for RX buffer */ -#define GMAC_TX_UNITSIZE CONFIG_NET_ETH_PKTSIZE /* MAX size for Ethernet packet */ +#define GMAC_RX_UNITSIZE CONFIG_ZYNQ_GMAC_RXDMA_BUFSIZE /* DMA buffer size for receive */ +#define GMAC_TX_UNITSIZE CONFIG_NET_ETH_PKTSIZE /* MAX size for Ethernet packet */ /* The MAC can support frame lengths up to 1536 bytes */ @@ -3551,8 +3551,8 @@ static int zynq_gmac_configure(struct zynq_gmac_s *priv) * IRXER = 0 : Disable ignore IPG GXER */ - regval = GMAC_NCFGR_FD | GMAC_NCFGR_GBE | - GMAC_NCFGR_CLK_DIV64 | GMAC_NCFGR_DBW_64; + regval = GMAC_NCFGR_FD | GMAC_NCFGR_GBE | GMAC_NCFGR_PEN | + GMAC_NCFGR_RFCS | GMAC_NCFGR_CLK_DIV64 | GMAC_NCFGR_DBW_64; #ifdef CONFIG_NET_PROMISCUOUS regval |= GMAC_NCFGR_CAF; @@ -3568,6 +3568,14 @@ static int zynq_gmac_configure(struct zynq_gmac_s *priv) regval = zynq_getreg(priv, ZYNQ_GMAC_DCFGR); + /* DMA receive buffer size in external AMBA (AHB/AXI) system memory */ + + regval &= ~GMAC_DCFGR_DRBS_MASK; + + /* The value is defined in multiples of 64 bytes */ + + regval |= GMAC_DCFGR_DRBS(GMAC_RX_UNITSIZE / 64); + regval &= ~GMAC_DCFGR_ESPA; #ifdef CDNS_TX_CSUM_OFFLOAD diff --git a/boards/arm64/zynq-mpsoc/zcu111/configs/net/defconfig b/boards/arm64/zynq-mpsoc/zcu111/configs/netjtag/defconfig similarity index 79% copy from boards/arm64/zynq-mpsoc/zcu111/configs/net/defconfig copy to boards/arm64/zynq-mpsoc/zcu111/configs/netjtag/defconfig index 301bf6fff8..23732710be 100644 --- a/boards/arm64/zynq-mpsoc/zcu111/configs/net/defconfig +++ b/boards/arm64/zynq-mpsoc/zcu111/configs/netjtag/defconfig @@ -48,18 +48,33 @@ CONFIG_IDLETHREAD_STACKSIZE=8192 CONFIG_INIT_ENTRYPOINT="nsh_main" CONFIG_INIT_STACKSIZE=9192 CONFIG_NET=y +CONFIG_NETDB_DNSCLIENT=y +CONFIG_NETDB_DNSCLIENT_ENTRIES=4 +CONFIG_NETDB_DNSSERVER_NOADDR=y +CONFIG_NETINIT_DRIPADDR=0xc0a80002 +CONFIG_NETINIT_IPADDR=0xc0a8000f CONFIG_NETINIT_NOMAC=y +CONFIG_NETUTILS_CODECS=y CONFIG_NETUTILS_IPERF=y -CONFIG_NET_BINDTODEVICE=y +CONFIG_NETUTILS_TELNETD=y +CONFIG_NETUTILS_TFTPC=y +CONFIG_NETUTILS_WEBCLIENT=y CONFIG_NET_BROADCAST=y +CONFIG_NET_ETH_PKTSIZE=1500 CONFIG_NET_ICMP_SOCKET=y -CONFIG_NET_NETLINK=y -CONFIG_NET_SOCKOPTS=y +CONFIG_NET_LL_GUARDSIZE=32 +CONFIG_NET_MAX_LISTENPORTS=8 +CONFIG_NET_RECV_BUFSIZE=32768 +CONFIG_NET_SENDFILE=y +CONFIG_NET_SOLINGER=y CONFIG_NET_STATISTICS=y CONFIG_NET_TCP=y -CONFIG_NET_TCPPROTO_OPTIONS=y -CONFIG_NET_TIMESTAMP=y +CONFIG_NET_TCPBACKLOG=y +CONFIG_NET_TCP_DELAYED_ACK=y +CONFIG_NET_TCP_KEEPALIVE=y +CONFIG_NET_TCP_WRITE_BUFFERS=y CONFIG_NET_UDP=y +CONFIG_NET_UDP_WRITE_BUFFERS=y CONFIG_NSH_ARCHINIT=y CONFIG_NSH_BUILTIN_APPS=y CONFIG_NSH_FILEIOSIZE=512 @@ -93,3 +108,4 @@ CONFIG_USERLED_LOWER=y CONFIG_ZYNQ_ENET=y CONFIG_ZYNQ_GMAC_NRXBUFFERS=256 CONFIG_ZYNQ_GMAC_NTXBUFFERS=256 +CONFIG_ZYNQ_GMAC_PHYADDR=12 diff --git a/boards/arm64/zynq-mpsoc/zcu111/configs/net/defconfig b/boards/arm64/zynq-mpsoc/zcu111/configs/netnsh/defconfig similarity index 76% rename from boards/arm64/zynq-mpsoc/zcu111/configs/net/defconfig rename to boards/arm64/zynq-mpsoc/zcu111/configs/netnsh/defconfig index 301bf6fff8..b12abead1c 100644 --- a/boards/arm64/zynq-mpsoc/zcu111/configs/net/defconfig +++ b/boards/arm64/zynq-mpsoc/zcu111/configs/netnsh/defconfig @@ -5,10 +5,8 @@ # You can then do "make savedefconfig" to generate a new defconfig file that includes your # modifications. # -# CONFIG_DEBUG_OPT_UNUSED_SECTIONS is not set CONFIG_ARCH="arm64" CONFIG_ARCH_ARM64=y -CONFIG_ARCH_ARM64_EXCEPTION_LEVEL=3 CONFIG_ARCH_BOARD="zcu111" CONFIG_ARCH_BOARD_ZCU111=y CONFIG_ARCH_CHIP="zynq-mpsoc" @@ -18,22 +16,19 @@ CONFIG_ARCH_INTERRUPTSTACK=4096 CONFIG_ARM64_DCACHE_DISABLE=y CONFIG_ARM64_GIC_VERSION=2 CONFIG_ARM64_ICACHE_DISABLE=y +CONFIG_BOARDCTL_RESET=y CONFIG_BOARD_LOOPSPERMSEC=116524 -CONFIG_BOOT_RUNFROMSDRAM=y CONFIG_BUILTIN=y CONFIG_DEBUG_ASSERTIONS=y CONFIG_DEBUG_FEATURES=y +CONFIG_DEBUG_FULLOPT=y CONFIG_DEBUG_IRQ=y CONFIG_DEBUG_IRQ_INFO=y -CONFIG_DEBUG_NET=y -CONFIG_DEBUG_NET_ERROR=y -CONFIG_DEBUG_NET_WARN=y CONFIG_DEBUG_SCHED=y CONFIG_DEBUG_SCHED_ERROR=y CONFIG_DEBUG_SCHED_INFO=y CONFIG_DEBUG_SCHED_WARN=y CONFIG_DEBUG_SYMBOLS=y -CONFIG_DEBUG_SYMBOLS_LEVEL="-g3" CONFIG_DEFAULT_TASK_STACKSIZE=8192 CONFIG_ETC_ROMFS=y CONFIG_EXAMPLES_HELLO=y @@ -48,18 +43,33 @@ CONFIG_IDLETHREAD_STACKSIZE=8192 CONFIG_INIT_ENTRYPOINT="nsh_main" CONFIG_INIT_STACKSIZE=9192 CONFIG_NET=y +CONFIG_NETDB_DNSCLIENT=y +CONFIG_NETDB_DNSCLIENT_ENTRIES=4 +CONFIG_NETDB_DNSSERVER_NOADDR=y +CONFIG_NETINIT_DRIPADDR=0xc0a80002 +CONFIG_NETINIT_IPADDR=0xc0a8000f CONFIG_NETINIT_NOMAC=y +CONFIG_NETUTILS_CODECS=y CONFIG_NETUTILS_IPERF=y -CONFIG_NET_BINDTODEVICE=y +CONFIG_NETUTILS_TELNETD=y +CONFIG_NETUTILS_TFTPC=y +CONFIG_NETUTILS_WEBCLIENT=y CONFIG_NET_BROADCAST=y +CONFIG_NET_ETH_PKTSIZE=1500 CONFIG_NET_ICMP_SOCKET=y -CONFIG_NET_NETLINK=y -CONFIG_NET_SOCKOPTS=y +CONFIG_NET_LL_GUARDSIZE=32 +CONFIG_NET_MAX_LISTENPORTS=8 +CONFIG_NET_RECV_BUFSIZE=32768 +CONFIG_NET_SENDFILE=y +CONFIG_NET_SOLINGER=y CONFIG_NET_STATISTICS=y CONFIG_NET_TCP=y -CONFIG_NET_TCPPROTO_OPTIONS=y -CONFIG_NET_TIMESTAMP=y +CONFIG_NET_TCPBACKLOG=y +CONFIG_NET_TCP_DELAYED_ACK=y +CONFIG_NET_TCP_KEEPALIVE=y +CONFIG_NET_TCP_WRITE_BUFFERS=y CONFIG_NET_UDP=y +CONFIG_NET_UDP_WRITE_BUFFERS=y CONFIG_NSH_ARCHINIT=y CONFIG_NSH_BUILTIN_APPS=y CONFIG_NSH_FILEIOSIZE=512 @@ -81,7 +91,6 @@ CONFIG_START_MONTH=11 CONFIG_START_YEAR=2022 CONFIG_SYMTAB_ORDEREDBYNAME=y CONFIG_SYSTEM_NSH=y -CONFIG_SYSTEM_PING=y CONFIG_SYSTEM_SYSTEM=y CONFIG_SYSTEM_TIME64=y CONFIG_TESTING_GETPRIME=y @@ -93,3 +102,4 @@ CONFIG_USERLED_LOWER=y CONFIG_ZYNQ_ENET=y CONFIG_ZYNQ_GMAC_NRXBUFFERS=256 CONFIG_ZYNQ_GMAC_NTXBUFFERS=256 +CONFIG_ZYNQ_GMAC_PHYADDR=12 diff --git a/boards/arm64/zynq-mpsoc/zcu111/src/Makefile b/boards/arm64/zynq-mpsoc/zcu111/src/Makefile index 252de5d0f7..a0eacd701e 100644 --- a/boards/arm64/zynq-mpsoc/zcu111/src/Makefile +++ b/boards/arm64/zynq-mpsoc/zcu111/src/Makefile @@ -38,6 +38,10 @@ ifeq ($(CONFIG_USERLED),y) CSRCS += zcu111_userleds.c endif +ifeq ($(CONFIG_NET),y) +CSRCS += zcu111_ethernet.c +endif + ifeq ($(CONFIG_ETC_ROMFS),y) RCSRCS = etc/init.d/rc.sysinit etc/init.d/rcS endif