Unload ixgbe driver for Intel X550

I would like to unload ixgbe driver and flash X550 mac address.
When use sudo rmmod ixgbe, got the message “rmmod: ERROR: Module ixgbe is builtin.”.
How to unload ixgbe driver?

“Builtin” implies the kernel Image itself has the content, and no module is used. It’s still a driver, and perhaps more efficient being non-module, but this implies you’d need to take the existing kernel config, remove that feature (or change it to module format if module format is supported), and then rebuild the kernel making sure “CONFIG_LOCALVERSION” matches so you don’t need to rebuild modules as well.

FYI, other than CONFIG_LOCALVERSION, your file “/proc/config.gz” is an exact match of your running system. You should save a copy of this somewhere safe. After this any of the docs on building a kernel will do the job.

Installing a new Image file can be done by a simple file copy if “uname -r” does not change, and the CONFIG_LOCALVERSION entry is the suffix part of “uname -r”. So if your current “uname -r” is “4.9.140-tegra”, then CONFIG_LOCALVERSION will be “-tegra”:

If you need more information just ask, but short of actual install, much of this is the same on all Linux systems.

I have tried to modify tegra_deconfig and .config files.

Ixgbe driver can’t be unloaded.
nvidia@nvidia-desktop:~$ sudo rmmod ixgbe
rmmod: ERROR: Module ixgbe is builtin.

From the ifconfig the eth0 has been disappeared.

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet netmask
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1 (Local Loopback)
RX packets 160 bytes 12548 (12.5 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 160 bytes 12548 (12.5 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet netmask broadcast
inet6 fe80::4568:643a:944d:1299 prefixlen 64 scopeid 0x20
ether 7c:5c:f8:db:88:78 txqueuelen 1000 (Ethernet)
RX packets 7503 bytes 995240 (995.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6291 bytes 1116544 (1.1 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

An integrated feature cannot be removed without replacing the kernel. Some features cannot be made as a module (I do not know if that is the case with ixgbe or not, don’t have one myself).

Basically you need to compile a new kernel without the feature and then install that kernel since the feature is not currently in the form of a module.

I had re-build kernel and flash to emmc.

If you examine the symbol from the kernel compile (such as looking at the feature in “make nconfig” and seeing what the “CONFIG_…” is), I am guessing the symbol will contain “CONFIG_IXGBE…” (anything starting with “CONFIG_IXGBE”). If you then examine what the running kernel says is loaded, compare with your symbol:
zcat /proc/config.gz | grep IXGBE

What is the output of this? Does any of it say “=y”? Does any of it say “=m”?

What does “uname -r” say? Does this end with suffix “-tegra”? On your compiled kernel, did you specify this (which is what the default kernel would use):

Hi John,

I have tried to modify tegra_deconfig and .config files.
What did you modify?

A built-in driver means it is inside the kernel image but not a .ko file to load. Not able to unload it.