Realtek Ethernet driver r8169

Check the Driver version in Ubuntu

$ uname -r
5.4.0-39-generic
$ lsmod |grep r8169
r8169                  90112  0
$ modinfo r8169
filename:       /lib/modules/5.4.0-39-generic/kernel/drivers/net/ethernet/realte                                                                                                                                                             k/r8169.ko
firmware:       rtl_nic/rtl8125a-3.fw
firmware:       rtl_nic/rtl8107e-2.fw
firmware:       rtl_nic/rtl8107e-1.fw
firmware:       rtl_nic/rtl8168h-2.fw
firmware:       rtl_nic/rtl8168h-1.fw
firmware:       rtl_nic/rtl8168g-3.fw
firmware:       rtl_nic/rtl8168g-2.fw
firmware:       rtl_nic/rtl8106e-2.fw
firmware:       rtl_nic/rtl8106e-1.fw
firmware:       rtl_nic/rtl8411-2.fw
firmware:       rtl_nic/rtl8411-1.fw
firmware:       rtl_nic/rtl8402-1.fw
firmware:       rtl_nic/rtl8168f-2.fw
firmware:       rtl_nic/rtl8168f-1.fw
firmware:       rtl_nic/rtl8105e-1.fw
firmware:       rtl_nic/rtl8168e-3.fw
firmware:       rtl_nic/rtl8168e-2.fw
firmware:       rtl_nic/rtl8168e-1.fw
firmware:       rtl_nic/rtl8168d-2.fw
firmware:       rtl_nic/rtl8168d-1.fw
license:        GPL
softdep:        pre: realtek
description:    RealTek RTL-8169 Gigabit Ethernet driver
author:         Realtek and the Linux r8169 crew <netdev@vger.kernel.org>
srcversion:     DF4ECFD2CD48E2A6FA2D7FE
alias:          pci:v000010ECd00003000sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008125sv*sd*bc*sc*i*
alias:          pci:v00000001d00008168sv*sd00002410bc*sc*i*
alias:          pci:v00001737d00001032sv*sd00000024bc*sc*i*
alias:          pci:v000016ECd00000116sv*sd*bc*sc*i*
alias:          pci:v00001259d0000C107sv*sd*bc*sc*i*
alias:          pci:v00001186d00004302sv*sd*bc*sc*i*
alias:          pci:v00001186d00004300sv*sd*bc*sc*i*
alias:          pci:v00001186d00004300sv00001186sd00004B10bc*sc*i*
alias:          pci:v000010ECd00008169sv*sd*bc*sc*i*
alias:          pci:v000010FFd00008168sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008168sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008167sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008161sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008136sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008129sv*sd*bc*sc*i*
alias:          pci:v000010ECd00002600sv*sd*bc*sc*i*
alias:          pci:v000010ECd00002502sv*sd*bc*sc*i*
depends:
retpoline:      Y
intree:         Y
name:           r8169
vermagic:       5.4.0-39-generic SMP mod_unload
sig_id:         PKCS#7
signer:         Build time autogenerated kernel key
sig_key:        70:3A:0E:EF:43:F2:F2:F1:A6:03:AF:FE:E6:21:11:A1:3D:27:AF:2C
sig_hashalgo:   sha512
signature:      6C:4C:5C:26:99:89:20:C5:BC:70:67:12:D5:CD:0B:38:28:9B:01:1B:
                18:AF:B9:41:75:62:48:52:A8:96:43:CC:07:14:D1:C4:95:79:9F:28:
                D0:1C:27:FA:79:0C:15:40:2D:58:A3:2A:CD:01:05:DE:BB:6A:51:19:
                61:97:CC:76:2C:AB:85:AA:6D:E9:1A:DB:CB:AD:F7:B9:49:37:34:DF:
                7A:F0:10:74:BB:11:87:C5:A4:7B:A4:0B:8D:66:D1:44:33:67:1C:DB:
                F5:07:B3:7E:6B:B3:83:7F:85:21:EE:2A:49:9A:2F:53:05:7E:F2:D7:
                83:8F:5E:6C:6A:81:DE:E9:CB:3A:AC:B3:CE:32:2C:E3:E0:8A:6A:DB:
                76:C2:C8:FF:8D:54:AC:85:12:06:CD:92:BD:C4:85:21:05:A4:B7:DE:
                A7:89:93:A3:5B:68:87:81:A8:C5:AF:A5:37:3A:1C:60:B2:C8:2D:B2:
                F6:9C:A1:99:D1:07:0F:FE:E3:82:63:D2:1D:C4:C1:3A:9C:3C:05:DB:
                BE:82:1B:0D:FD:2F:E4:81:28:D6:D5:38:FE:A2:CD:AB:D0:C8:A7:85:
                25:BE:7D:61:D0:FC:B5:F9:6F:62:98:15:30:24:F5:23:4E:23:D8:70:
                EE:B6:8B:D6:39:0B:79:E7:4C:8E:4D:E7:7A:D0:CB:BC:85:1F:90:11:
                68:AE:E1:87:2F:46:2F:2D:63:95:F2:8B:7D:A5:B4:49:22:AE:55:6F:
                F1:F5:8C:71:E8:16:F0:D0:83:53:A6:DA:86:52:97:A0:2E:6D:E8:64:
                4C:54:C6:42:A3:6D:7B:E5:48:1A:52:B8:A4:AC:E8:25:C8:E4:02:00:
                F1:CF:BA:8F:3E:B7:19:F0:8A:63:79:E7:60:03:1C:EB:E1:3E:60:7D:
                7A:D8:0A:4C:77:20:C5:12:42:AE:90:66:D4:D6:A3:31:46:F2:DD:34:
                03:7A:77:86:EA:80:FF:66:26:95:63:44:22:DA:B4:D9:09:70:04:12:
                87:C6:85:53:EB:05:D9:96:20:68:7B:76:E8:17:FF:CB:0B:91:A5:31:
                7A:9C:46:00:23:D1:2B:C6:C6:59:EE:E6:63:2A:7A:57:4A:08:61:C2:
                C5:EE:A8:1E:82:FF:31:92:9D:5F:12:AA:F6:39:57:79:59:2F:95:01:
                EA:45:20:AE:B6:20:59:90:0C:2F:A7:A0:87:98:3C:F5:4A:2B:33:D9:
                82:7D:B9:BE:01:E2:68:B0:6D:9D:BE:05:F8:54:05:CA:24:C2:B2:D4:
                CE:E2:4D:2D:F1:43:14:5F:E6:37:B0:29:28:27:05:76:39:34:C3:0B:
                53:DE:71:6E:05:48:C3:F1:2E:DF:48:C3
parm:           debug:Debug verbosity level (0=none, ..., 16=all) (int)

Kernel site

https://www.kernel.org/doc/html/latest/

//Kernel src
apt-get source linux-image-$(uname -r)
Get:2 http://in.archive.ubuntu.com/ubuntu focal-updates/main linux-signed 5.4.0-39.43 (tar) [18.4 kB]

//
sudo apt-get install linux-source -y
Get:1 http://in.archive.ubuntu.com/ubuntu focal-updates/main amd64 linux-source-5.4.0 all 5.4.0-39.43 [135 MB]
Get:2 http://in.archive.ubuntu.com/ubuntu focal-updates/main amd64 linux-source all 5.4.0.39.42 [2,464 B]

//path of source in system
/usr/src$ ls -ltr
total 20
lrwxrwxrwx  1 root root   32 Jun  4 23:25 vboxhost-6.1.10 -> ../share/virtualbox/src/vboxhost
drwxr-xr-x 24 root root 4096 Jun 10 12:07 linux-headers-5.4.0-37
lrwxrwxrwx  1 root root   45 Jun 19 15:26 linux-source-5.4.0.tar.bz2 -> linux-source-5.4.0/linux-source-5.4.0.tar.bz2
drwxr-xr-x 24 root root 4096 Jun 25 19:54 linux-headers-5.4.0-39
drwxr-xr-x  7 root root 4096 Jun 25 19:54 linux-headers-5.4.0-39-generic
drwxr-xr-x  7 root root 4096 Jun 25 20:09 linux-headers-5.4.0-37-generic
drwxr-xr-x  4 root root 4096 Jun 26 11:39 linux-source-5.4.0

//ethernet drivers
linux-source-5.4.0/drivers/net/ethernet/realtek
8139cp.c  8139too.c  atp.c  atp.h  Kconfig  Makefile  r8169_firmware.c  r8169_firmware.h  r8169_main.c

Ubuntu 18.04 (Bionic) sources.list

/etc/apt/sources.list
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://us.archive.ubuntu.com/ubuntu/ bionic main restricted
deb http://us.archive.ubuntu.com/ubuntu/ bionic-updates main restricted
deb http://us.archive.ubuntu.com/ubuntu/ bionic universe
deb http://us.archive.ubuntu.com/ubuntu/ bionic-updates universe
deb http://us.archive.ubuntu.com/ubuntu/ bionic multiverse
deb http://us.archive.ubuntu.com/ubuntu/ bionic-updates multiverse
deb http://us.archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu bionic-security main restricted
deb http://security.ubuntu.com/ubuntu bionic-security universe
deb http://security.ubuntu.com/ubuntu bionic-security multiverse

DLINK related change

"r8169_n.c"

#ifndef PCI_VENDOR_ID_DLINK
#define PCI_VENDOR_ID_DLINK 0x1186
#endif

static struct pci_device_id rtl8169_pci_tbl[] = {
        { PCI_DEVICE(PCI_VENDOR_ID_REALTEK,     0x8167), 0, 0, RTL_CFG_0 },
        { PCI_DEVICE(PCI_VENDOR_ID_REALTEK,     0x8169), 0, 0, RTL_CFG_0 },
        { PCI_VENDOR_ID_DLINK, 0x4300, PCI_VENDOR_ID_DLINK, 0x4300, 0, 0, RTL_CFG_0 },
        {0,},
};

Kernel module building

make -C /lib/modules/5.4.0-39-generic/build SUBDIRS=/home/nsarkar/work/dlink-dge528t/Linux/src clean

lspci Ethernet Driver info

sudo lspci -s 02:00.0 -vv
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0c)
        Subsystem: Gigabyte Technology Co., Ltd Onboard Ethernet
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 18
        Region 0: I/O ports at e000 [size=256]
        Region 2: Memory at f7c00000 (64-bit, non-prefetchable) [size=4K]
        Region 4: Memory at f0000000 (64-bit, prefetchable) [size=16K]
        Capabilities: [40] Power Management version 3
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
                Address: 0000000000000000  Data: 0000
        Capabilities: [70] Express (v2) Endpoint, MSI 01
                DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <512ns, L1 <64us
                        ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 10.000W
                DevCtl: CorrErr- NonFatalErr- FatalErr- UnsupReq-
                        RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
                        MaxPayload 128 bytes, MaxReadReq 4096 bytes
                DevSta: CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
                LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s unlimited, L1 <64us
                        ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
                LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 2.5GT/s (ok), Width x1 (ok)
                        TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
                DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, NROPrPrP-, LTR+
                         10BitTagComp-, 10BitTagReq-, OBFF Via message/WAKE#, ExtFmt-, EETLPPrefix-
                         EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
                         FRS-, TPHComp-, ExtTPHComp-
                         AtomicOpsCap: 32bit- 64bit- 128bitCAS-
                DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF Disabled
                         AtomicOpsCtl: ReqEn-
                LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
                         Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
                         Compliance De-emphasis: -6dB
                LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
                         EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
        Capabilities: [b0] MSI-X: Enable+ Count=4 Masked-
                Vector table: BAR=4 offset=00000000
                PBA: BAR=4 offset=00000800
        Capabilities: [d0] Vital Product Data
pcilib: sysfs_read_vpd: read failed: Input/output error
                Not readable
        Capabilities: [100 v1] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
                AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
                        MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
                HeaderLog: 00000000 00000000 00000000 00000000
        Capabilities: [140 v1] Virtual Channel
                Caps:   LPEVC=0 RefClk=100ns PATEntryBits=1
                Arb:    Fixed- WRR32- WRR64- WRR128-
                Ctrl:   ArbSelect=Fixed
                Status: InProgress-
                VC0:    Caps:   PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
                        Arb:    Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
                        Ctrl:   Enable+ ID=0 ArbSelect=Fixed TC/VC=01
                        Status: NegoPending- InProgress-
        Capabilities: [160 v1] Device Serial Number 01-00-00-00-68-4c-e0-00
        Capabilities: [170 v1] Latency Tolerance Reporting
                Max snoop latency: 71680ns
                Max no snoop latency: 71680ns
        Kernel driver in use: r8169
        Kernel modules: r8169

Vendor ID

include/linux/pci_ids.h

#define PCI_VENDOR_ID_DLINK             0x1186
#define PCI_VENDOR_ID_REALTEK           0x10ec
#define PCI_VENDOR_ID_MELLANOX          0x15b3
#define PCI_VENDOR_ID_INTEL             0x8086
#define PCI_VENDOR_ID_NETGEAR           0x1385
#define PCI_VENDOR_ID_APPLE             0x106b
#define PCI_VENDOR_ID_DELL              0x1028

Leave a comment