Internal Memo: Porting Intel i226 Driver on JetPack 5

Result
We built a new igc.ko for JetPack 5.1.1 to enable Intel i226 support.
This memo documents the development process of porting the Intel i226 driver to JetPack 5.
Background Information
JetPack 5 officially supports Intel i225-IT, but not Intel i226-IT.
JetPack 6 officially supports both Intel i225-IT and Intel i226-IT.
The Intel i225 and Intel i226 drivers are part of the igc driver. Fortunately,
igc.kois built as a loadable kernel module rather than being built into the kernel image on both JetPack 5 and JetPack 6.An out-of-tree version of the igc driver exists. It is possible to compile it as an external kernel module using the kernel headers.
Backporting Intel i226 Driver
When it comes to backporting, the key is identifying the closest kernel header candidate.
JetPack 5.1.1 is based on kernel 5.10.104.
According to Intel’s documentation, support for Intel i226 begins with kernel 5.16.
Fortunately, kernel 5.10.240 includes a backported igc driver with Intel i226 support.
Steps
Download the 5.10.240 kernel source from kernel.org:
Extract the igc folder from:
drivers/net/ethernet/intel/igcCreate a new Makefile to build only the kernel module.
Compile and resolve kernel API conflicts between 5.10.104 and 5.10.240.
Ported the
igc_ipv6_csum_is_sctpapproach from 5.10.104.Disabled the PTM feature in
igc_main.c.
Moved the compiled
igc.koto/lib/modules/5.10.104-tegra/kernel/drivers/net/ethernet/intel/igc/igc.ko, which is the default path for loading the igc kernel module.
Last updated