synology-igc/README.md
Jim Ma 6cdff220fa update prebuild module info
Signed-off-by: Jim Ma <majinjing3@gmail.com>
2022-11-17 03:47:53 +00:00

3.7 KiB

Intel igc driver for Synology Kernel 4.4.180

Backport from Linux Kernel v5.12, commit: 9f4ad9e425

Compatible devices&NICs manifest

Not all I225/I226 NIC is working. My device is UGREEN DX4600 with I225-V B3, the igc driver is working normally.

If this igc driver is compatible with your devices, you can reply in this issue.

Motherboard NIC Version Device ID Ports Firmware Version
UGREEN DX4600 I225-V B3 8086:15F3 2 TBA
ROG MAXIMUS XIII HERO I225-V B3 8086:15F3 2 1057:8754
CW N5105-N6005-6SATA I226-V 8086:125C 4 2014:8877

Prebuild module

Download from https://github.com/jim3ma/synology-igc/tree/main/igc/releases

Eg: https://github.com/jim3ma/synology-igc/raw/main/igc/releases/igc-geminilake.tgz

Follow load module action: https://github.com/jim3ma/synology-igc#3-load-module

Build in docker

mkdir -p output

# avaliable platform:
#   apollolake
#   broadwell
#   broadwellnk
#   denverton
#   geminilake
#   v1000
# I think the platform is not important for building `igc`, change it as your own
PLATFORM=geminilake

docker run -u 1000 --rm -t -v "${PWD}":/input -v "${PWD}/output":/output fbelavenuto/syno-compiler compile-module ${PLATFORM}

The output/igc.ko is the module.

And then Follow load module actions: https://github.com/jim3ma/synology-igc#3-load-module

Build in Synology develop environment

1. Setup develop environment

Prepare Environment

Refer: https://help.synology.com/developer-guide/getting_started/prepare_environment.html

Assume platform=geminilake, version=7.1, working directory is /synology-toolkit

Now the build env is /synology-toolkit/build_env/ds.geminilake-7.1

Enter chrooot

sudo chroot /synology-toolkit/build_env/ds.geminilake-7.1

Clone source code

cd /usr/src/
git clone https://github.com/jim3ma/synology-igc.git

2. Build module

cd /usr/src/synology-igc/
make -C /usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/lib/modules/DSM-7.1/build M=$PWD modules

3. Load module

Copy igc.ko to target machine

Find i225/i226 pci device

03:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V (rev 03)
insmod igc.ko debug=16 # enable debug log
echo igc > /sys/bus/pci/devices/0000:03:00.0/driver_override
echo 0000:03:00.0 > /sys/bus/pci/drivers_probe
ip link set up eth1 # in my machine, the nic name is eth1

TODO

  1. tc support
  2. igc: Enable internal i225 PPS - 64433e5bf4

History

1.2.3

Date 2022.11.16

This version support i226 with device id 8086:125C, firmware version: 2014:8877

  • igc: Remove phy->type checking
  • igc: Remove _I_PHY_ID checking

1.2.2

Date 2022.11.15

  • Update defines for compile error

1.2.1

Date 2022.11.03

  • igc: Fix BUG: scheduling while atomic
  • igc: Add new device ID I226_LMVP
  • igc: Fix suspending when PTM is active

1.2.0

Date 2022.10.27

Backport fixes from upstream

  • igc: Fix TX timestamp support for non-MSI-X platforms
  • igc: Fix typo in i225 LTR functions
  • igc: Update I226_K device ID
  • igc: Reinstate IGC_REMOVED logic and implement it properly
  • igc: Fix infinite loop in release_swfw_sync
  • igc: Increase timeout value for Speed 100/1000/2500
  • igc: Fix use-after-free error during reset
  • igc: change default return of igc_read_phy_reg()
  • igc: Fix an error handling path in 'igc_probe()'

1.1.0

Date 2022.10.27

  • Support ethtool operations

1.0.0

Date 2022.10.26

  • Backport from Linux Kernel v5.12, commit: 9f4ad9e425a1d3b6a34617b8ea226d56a119a717.