Debugging R8125 Ethernet Driver On CentOS 8

這幾天剛換伺服器的板子
原本為了伺服器衝上X570
代價就是….所有的驅動都死光光啦XD

首當其衝的就是網卡了
板子用的是 Realtek 的 R8125
預設的 Driver 一點反應都沒有
又因為網卡掛了,Package Manager 直接罷工
去官網一看,只給了Source File…..
當下就知道不好搞了


載下來跑 auto-run.sh ,說缺了 kernel-devel
因為沒 dnf 能用,只能乖乖的載
還好有 rpm find 能用

安裝後又說缺 elfutils-libelf
載了 devel.0.183-3 的,都用 usb 丟到 server 上了才發現載到 fedora35…
重載 0.182-3.el8,結果 server 說跟 0.180-1 衝突
再載 devel.0.180-1.el8,幹是 aarch64 的版本…..
最後終於灌上去了,正當我開心的跑 make,以為一切會順利時

F…….

雖然已經做好心裡準備會要跟他奮鬥了啦
但遇到 error 還是會覺得很幹
說歸說,該 debug 的還是得做

檢查了原始碼的部份,在第62行的部份,gcc 找不到 kernel 的 pci-aspm.h

檢查了一下 kernel version

嗯?kernel-devel 沒有含這個 header file?
但怎麼查都說2.7 ~ 5.4 之間都有這個 header 阿????

結果東翻翻西翻翻在 gentoo 的 bug report 中翻到類似的解答
其中提到 pci-aspm.h 的東西已經 merge 到 pci.h裡了,所以只需要 <linux/pci.h> 就夠了
但文中提到是5.4的事
後來抱持者死馬當活馬醫的方式試,註解掉 60 ~ 64 行後重編

The F ??? 還真的過了 ??? 我的 kernel-devel 是不是摻雜到奇怪的東西阿 ???
不過當時已經凌晨1點多了,只想趕著搞完,索性就繼續下去了

下一個問題是 function pointer “rtl8125_tx_timeout” 的 incompatible pointer type 問題
簡單的翻了一下程式碼就找到 function 的 declaration 了 ( line 295 )

又是類似的狀況了 (´・_・`)

仔細看的話會發現
Compile Error 顯示 .ndo_tx_timout 是一個 void (*)(struct net_device *, unsigned int)
而 declaration 一臉就是用到下面的 版本了 void (*)(struct net_device *)

註解掉剩上面那行再試著編譯一次

definition 那裡也要順便處理 ( line 13002 )

過惹

The F……

在〈Debugging R8125 Ethernet Driver On CentOS 8〉中有 2 則留言

留言功能已關閉。