From 659e731f2800cc96c6d99724e899a54d5fd5e5ce Mon Sep 17 00:00:00 2001 From: Mahesh Patil Date: Mon, 10 Mar 2025 21:52:58 -0700 Subject: [PATCH] r8125: Enabling realtek ethernet driver support Bug 5091558 Change-Id: Idb013a451e81ad1e7a664d85f024eebb17f92b77 Signed-off-by: Mahesh Patil Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3316987 Reviewed-by: Shobek Attupurath Reviewed-by: mobile promotions Reviewed-by: Srinivas Ramachandran Tested-by: mobile promotions GVS: buildbot_gerritrpt --- BUILD.bazel | 1 + drivers/net/ethernet/realtek/Makefile | 4 + drivers/net/ethernet/realtek/r8125/Makefile | 193 ++++++++++++++++-- .../ethernet/realtek/r8125/{src => }/r8125.h | 0 .../realtek/r8125/{src => }/r8125_dash.h | 0 .../realtek/r8125/{src => }/r8125_firmware.c | 0 .../realtek/r8125/{src => }/r8125_firmware.h | 0 .../realtek/r8125/{src => }/r8125_n.c | 0 .../realtek/r8125/{src => }/r8125_ptp.c | 0 .../realtek/r8125/{src => }/r8125_ptp.h | 0 .../realtek/r8125/{src => }/r8125_realwow.h | 0 .../realtek/r8125/{src => }/r8125_rss.c | 0 .../realtek/r8125/{src => }/r8125_rss.h | 0 .../realtek/r8125/{src => }/rtl_eeprom.c | 0 .../realtek/r8125/{src => }/rtl_eeprom.h | 0 .../realtek/r8125/{src => }/rtltool.c | 0 .../realtek/r8125/{src => }/rtltool.h | 0 17 files changed, 179 insertions(+), 19 deletions(-) rename drivers/net/ethernet/realtek/r8125/{src => }/r8125.h (100%) rename drivers/net/ethernet/realtek/r8125/{src => }/r8125_dash.h (100%) rename drivers/net/ethernet/realtek/r8125/{src => }/r8125_firmware.c (100%) rename drivers/net/ethernet/realtek/r8125/{src => }/r8125_firmware.h (100%) rename drivers/net/ethernet/realtek/r8125/{src => }/r8125_n.c (100%) rename drivers/net/ethernet/realtek/r8125/{src => }/r8125_ptp.c (100%) rename drivers/net/ethernet/realtek/r8125/{src => }/r8125_ptp.h (100%) rename drivers/net/ethernet/realtek/r8125/{src => }/r8125_realwow.h (100%) rename drivers/net/ethernet/realtek/r8125/{src => }/r8125_rss.c (100%) rename drivers/net/ethernet/realtek/r8125/{src => }/r8125_rss.h (100%) rename drivers/net/ethernet/realtek/r8125/{src => }/rtl_eeprom.c (100%) rename drivers/net/ethernet/realtek/r8125/{src => }/rtl_eeprom.h (100%) rename drivers/net/ethernet/realtek/r8125/{src => }/rtltool.c (100%) rename drivers/net/ethernet/realtek/r8125/{src => }/rtltool.h (100%) diff --git a/BUILD.bazel b/BUILD.bazel index 777e2801..1af69d6e 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -110,6 +110,7 @@ kernel_module( "drivers/net/ethernet/microchip/lan743x.ko", "drivers/net/ethernet/nvidia/nvethernet/nvethernet.ko", "drivers/net/ethernet/nvidia/pcie/tegra_vnet.ko", + "drivers/net/ethernet/realtek/r8125/r8125.ko", "drivers/net/ethernet/realtek/r8126/r8126.ko", "drivers/net/ethernet/realtek/r8168/r8168.ko", "drivers/nv-p2p/nvidia-p2p.ko", diff --git a/drivers/net/ethernet/realtek/Makefile b/drivers/net/ethernet/realtek/Makefile index 10d3d525..c4761881 100644 --- a/drivers/net/ethernet/realtek/Makefile +++ b/drivers/net/ethernet/realtek/Makefile @@ -8,3 +8,7 @@ endif ifneq ($(NV_OOT_REALTEK_R8126_SKIP_BUILD),y) obj-m += r8126/ endif + +ifdef CONFIG_TEGRA_SYSTEM_TYPE_ACK +obj-m += r8125/ +endif diff --git a/drivers/net/ethernet/realtek/r8125/Makefile b/drivers/net/ethernet/realtek/r8125/Makefile index dced245c..7e000ddf 100644 --- a/drivers/net/ethernet/realtek/r8125/Makefile +++ b/drivers/net/ethernet/realtek/r8125/Makefile @@ -30,30 +30,185 @@ # US6,570,884, US6,115,776, and US6,327,625. ################################################################################ -KFLAG := 2$(shell uname -r | sed -ne 's/^2\.[4]\..*/4/p')x +CONFIG_SOC_LAN = n +ENABLE_FIBER_SUPPORT = n +ENABLE_REALWOW_SUPPORT = n +ENABLE_DASH_SUPPORT = n +ENABLE_DASH_PRINTER_SUPPORT = n +CONFIG_DOWN_SPEED_100 = n +CONFIG_ASPM = y +ENABLE_S5WOL = y +ENABLE_S5_KEEP_CURR_MAC = n +ENABLE_EEE = y +ENABLE_S0_MAGIC_PACKET = n +ENABLE_TX_NO_CLOSE = y +ENABLE_MULTIPLE_TX_QUEUE = n +ENABLE_PTP_SUPPORT = n +ENABLE_PTP_MASTER_MODE = n +ENABLE_RSS_SUPPORT = n +ENABLE_LIB_SUPPORT = n +ENABLE_USE_FIRMWARE_FILE = n +DISABLE_WOL_SUPPORT = n +DISABLE_MULTI_MSIX_VECTOR = n +ENABLE_DOUBLE_VLAN = n +ENABLE_PAGE_REUSE = n +ENABLE_RX_PACKET_FRAGMENT = n -all: clean modules install +ifneq ($(KERNELRELEASE),) + obj-m := r8125.o + r8125-objs := r8125_n.o rtl_eeprom.o rtltool.o + ifeq ($(CONFIG_SOC_LAN), y) + EXTRA_CFLAGS += -DCONFIG_SOC_LAN + endif + ifeq ($(ENABLE_FIBER_SUPPORT), y) + r8125-objs += r8125_fiber.o + EXTRA_CFLAGS += -DENABLE_FIBER_SUPPORT + endif + ifeq ($(ENABLE_REALWOW_SUPPORT), y) + r8125-objs += r8125_realwow.o + EXTRA_CFLAGS += -DENABLE_REALWOW_SUPPORT + endif + ifeq ($(ENABLE_DASH_SUPPORT), y) + r8125-objs += r8125_dash.o + EXTRA_CFLAGS += -DENABLE_DASH_SUPPORT + endif + ifeq ($(ENABLE_DASH_PRINTER_SUPPORT), y) + r8125-objs += r8125_dash.o + EXTRA_CFLAGS += -DENABLE_DASH_SUPPORT -DENABLE_DASH_PRINTER_SUPPORT + endif + EXTRA_CFLAGS += -DCONFIG_R8125_NAPI + EXTRA_CFLAGS += -DCONFIG_R8125_VLAN + ifeq ($(CONFIG_DOWN_SPEED_100), y) + EXTRA_CFLAGS += -DCONFIG_DOWN_SPEED_100 + endif + ifeq ($(CONFIG_ASPM), y) + EXTRA_CFLAGS += -DCONFIG_ASPM + endif + ifeq ($(ENABLE_S5WOL), y) + EXTRA_CFLAGS += -DENABLE_S5WOL + endif + ifeq ($(ENABLE_S5_KEEP_CURR_MAC), y) + EXTRA_CFLAGS += -DENABLE_S5_KEEP_CURR_MAC + endif + ifeq ($(ENABLE_EEE), y) + EXTRA_CFLAGS += -DENABLE_EEE + endif + ifeq ($(ENABLE_S0_MAGIC_PACKET), y) + EXTRA_CFLAGS += -DENABLE_S0_MAGIC_PACKET + endif + ifeq ($(ENABLE_TX_NO_CLOSE), y) + EXTRA_CFLAGS += -DENABLE_TX_NO_CLOSE + endif + ifeq ($(ENABLE_MULTIPLE_TX_QUEUE), y) + EXTRA_CFLAGS += -DENABLE_MULTIPLE_TX_QUEUE + endif + ifeq ($(ENABLE_PTP_SUPPORT), y) + r8125-objs += r8125_ptp.o + EXTRA_CFLAGS += -DENABLE_PTP_SUPPORT + endif + ifeq ($(ENABLE_PTP_MASTER_MODE), y) + EXTRA_CFLAGS += -DENABLE_PTP_MASTER_MODE + endif + ifeq ($(ENABLE_RSS_SUPPORT), y) + r8125-objs += r8125_rss.o + EXTRA_CFLAGS += -DENABLE_RSS_SUPPORT + endif + ifeq ($(ENABLE_LIB_SUPPORT), y) + r8125-objs += r8125_lib.o + EXTRA_CFLAGS += -DENABLE_LIB_SUPPORT + endif + ifeq ($(ENABLE_USE_FIRMWARE_FILE), y) + r8125-objs += r8125_firmware.o + EXTRA_CFLAGS += -DENABLE_USE_FIRMWARE_FILE + endif + ifeq ($(DISABLE_WOL_SUPPORT), y) + EXTRA_CFLAGS += -DDISABLE_WOL_SUPPORT + endif + ifeq ($(DISABLE_MULTI_MSIX_VECTOR), y) + EXTRA_CFLAGS += -DDISABLE_MULTI_MSIX_VECTOR + endif + ifeq ($(ENABLE_DOUBLE_VLAN), y) + EXTRA_CFLAGS += -DENABLE_DOUBLE_VLAN + endif + ifeq ($(ENABLE_PAGE_REUSE), y) + EXTRA_CFLAGS += -DENABLE_PAGE_REUSE + endif + ifeq ($(ENABLE_RX_PACKET_FRAGMENT), y) + EXTRA_CFLAGS += -DENABLE_RX_PACKET_FRAGMENT + endif +else + BASEDIR := /lib/modules/$(shell uname -r) + KERNELDIR ?= $(BASEDIR)/build + PWD :=$(shell pwd) + DRIVERDIR := $(shell find $(BASEDIR)/kernel/drivers/net/ethernet -name realtek -type d) + ifeq ($(DRIVERDIR),) + DRIVERDIR := $(shell find $(BASEDIR)/kernel/drivers/net -name realtek -type d) + endif + ifeq ($(DRIVERDIR),) + DRIVERDIR := $(BASEDIR)/kernel/drivers/net + endif + RTKDIR := $(subst $(BASEDIR)/,,$(DRIVERDIR)) + KERNEL_GCC_VERSION := $(shell cat /proc/version | sed -n 's/.*gcc version \([[:digit:]]\.[[:digit:]]\.[[:digit:]]\).*/\1/p') + CCVERSION = $(shell $(CC) -dumpversion) + + KVER = $(shell uname -r) + KMAJ = $(shell echo $(KVER) | \ + sed -e 's/^\([0-9][0-9]*\)\.[0-9][0-9]*\.[0-9][0-9]*.*/\1/') + KMIN = $(shell echo $(KVER) | \ + sed -e 's/^[0-9][0-9]*\.\([0-9][0-9]*\)\.[0-9][0-9]*.*/\1/') + KREV = $(shell echo $(KVER) | \ + sed -e 's/^[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/') + + kver_ge = $(shell \ + echo test | awk '{if($(KMAJ) < $(1)) {print 0} else { \ + if($(KMAJ) > $(1)) {print 1} else { \ + if($(KMIN) < $(2)) {print 0} else { \ + if($(KMIN) > $(2)) {print 1} else { \ + if($(KREV) < $(3)) {print 0} else { print 1 } \ + }}}}}' \ + ) + +.PHONY: all +all: print_vars clean modules install + +print_vars: + @echo + @echo "CC: " $(CC) + @echo "CCVERSION: " $(CCVERSION) + @echo "KERNEL_GCC_VERSION: " $(KERNEL_GCC_VERSION) + @echo "KVER: " $(KVER) + @echo "KMAJ: " $(KMAJ) + @echo "KMIN: " $(KMIN) + @echo "KREV: " $(KREV) + @echo "BASEDIR: " $(BASEDIR) + @echo "DRIVERDIR: " $(DRIVERDIR) + @echo "PWD: " $(PWD) + @echo "RTKDIR: " $(RTKDIR) + @echo + +.PHONY:modules modules: -ifeq ($(KFLAG),24x) - $(MAKE) -C src/ -f Makefile_linux24x modules -else - $(MAKE) -C src/ modules -endif +#ifeq ($(call kver_ge,5,0,0),1) + $(MAKE) -C $(KERNELDIR) M=$(PWD) modules +#else +# $(MAKE) -C $(KERNELDIR) SUBDIRS=$(PWD) modules +#endif +.PHONY:clean clean: -ifeq ($(KFLAG),24x) - $(MAKE) -C src/ -f Makefile_linux24x clean -else - $(MAKE) -C src/ clean -endif +#ifeq ($(call kver_ge,5,0,0),1) + $(MAKE) -C $(KERNELDIR) M=$(PWD) clean +#else +# $(MAKE) -C $(KERNELDIR) SUBDIRS=$(PWD) clean +#endif +.PHONY:install install: -ifeq ($(KFLAG),24x) - $(MAKE) -C src/ -f Makefile_linux24x install -else - $(MAKE) -C src/ install +#ifeq ($(call kver_ge,5,0,0),1) + $(MAKE) -C $(KERNELDIR) M=$(PWD) INSTALL_MOD_DIR=$(RTKDIR) modules_install +#else +# $(MAKE) -C $(KERNELDIR) SUBDIRS=$(PWD) INSTALL_MOD_DIR=$(RTKDIR) modules_install +#endif + endif - - - diff --git a/drivers/net/ethernet/realtek/r8125/src/r8125.h b/drivers/net/ethernet/realtek/r8125/r8125.h similarity index 100% rename from drivers/net/ethernet/realtek/r8125/src/r8125.h rename to drivers/net/ethernet/realtek/r8125/r8125.h diff --git a/drivers/net/ethernet/realtek/r8125/src/r8125_dash.h b/drivers/net/ethernet/realtek/r8125/r8125_dash.h similarity index 100% rename from drivers/net/ethernet/realtek/r8125/src/r8125_dash.h rename to drivers/net/ethernet/realtek/r8125/r8125_dash.h diff --git a/drivers/net/ethernet/realtek/r8125/src/r8125_firmware.c b/drivers/net/ethernet/realtek/r8125/r8125_firmware.c similarity index 100% rename from drivers/net/ethernet/realtek/r8125/src/r8125_firmware.c rename to drivers/net/ethernet/realtek/r8125/r8125_firmware.c diff --git a/drivers/net/ethernet/realtek/r8125/src/r8125_firmware.h b/drivers/net/ethernet/realtek/r8125/r8125_firmware.h similarity index 100% rename from drivers/net/ethernet/realtek/r8125/src/r8125_firmware.h rename to drivers/net/ethernet/realtek/r8125/r8125_firmware.h diff --git a/drivers/net/ethernet/realtek/r8125/src/r8125_n.c b/drivers/net/ethernet/realtek/r8125/r8125_n.c similarity index 100% rename from drivers/net/ethernet/realtek/r8125/src/r8125_n.c rename to drivers/net/ethernet/realtek/r8125/r8125_n.c diff --git a/drivers/net/ethernet/realtek/r8125/src/r8125_ptp.c b/drivers/net/ethernet/realtek/r8125/r8125_ptp.c similarity index 100% rename from drivers/net/ethernet/realtek/r8125/src/r8125_ptp.c rename to drivers/net/ethernet/realtek/r8125/r8125_ptp.c diff --git a/drivers/net/ethernet/realtek/r8125/src/r8125_ptp.h b/drivers/net/ethernet/realtek/r8125/r8125_ptp.h similarity index 100% rename from drivers/net/ethernet/realtek/r8125/src/r8125_ptp.h rename to drivers/net/ethernet/realtek/r8125/r8125_ptp.h diff --git a/drivers/net/ethernet/realtek/r8125/src/r8125_realwow.h b/drivers/net/ethernet/realtek/r8125/r8125_realwow.h similarity index 100% rename from drivers/net/ethernet/realtek/r8125/src/r8125_realwow.h rename to drivers/net/ethernet/realtek/r8125/r8125_realwow.h diff --git a/drivers/net/ethernet/realtek/r8125/src/r8125_rss.c b/drivers/net/ethernet/realtek/r8125/r8125_rss.c similarity index 100% rename from drivers/net/ethernet/realtek/r8125/src/r8125_rss.c rename to drivers/net/ethernet/realtek/r8125/r8125_rss.c diff --git a/drivers/net/ethernet/realtek/r8125/src/r8125_rss.h b/drivers/net/ethernet/realtek/r8125/r8125_rss.h similarity index 100% rename from drivers/net/ethernet/realtek/r8125/src/r8125_rss.h rename to drivers/net/ethernet/realtek/r8125/r8125_rss.h diff --git a/drivers/net/ethernet/realtek/r8125/src/rtl_eeprom.c b/drivers/net/ethernet/realtek/r8125/rtl_eeprom.c similarity index 100% rename from drivers/net/ethernet/realtek/r8125/src/rtl_eeprom.c rename to drivers/net/ethernet/realtek/r8125/rtl_eeprom.c diff --git a/drivers/net/ethernet/realtek/r8125/src/rtl_eeprom.h b/drivers/net/ethernet/realtek/r8125/rtl_eeprom.h similarity index 100% rename from drivers/net/ethernet/realtek/r8125/src/rtl_eeprom.h rename to drivers/net/ethernet/realtek/r8125/rtl_eeprom.h diff --git a/drivers/net/ethernet/realtek/r8125/src/rtltool.c b/drivers/net/ethernet/realtek/r8125/rtltool.c similarity index 100% rename from drivers/net/ethernet/realtek/r8125/src/rtltool.c rename to drivers/net/ethernet/realtek/r8125/rtltool.c diff --git a/drivers/net/ethernet/realtek/r8125/src/rtltool.h b/drivers/net/ethernet/realtek/r8125/rtltool.h similarity index 100% rename from drivers/net/ethernet/realtek/r8125/src/rtltool.h rename to drivers/net/ethernet/realtek/r8125/rtltool.h