tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: How to build Realtek 8169 driver as kernel module?



Thanks, your answer is very helpful :)

I want to rewrite a existing Ethernet driver (such as Realtek 8169 driver) or write a new Ethernet driver as a independent kernel module, and load it normally at runtime. The example driver is Linux r8169 driver. It can be built, loaded, unloaded in the form of a kernel module.

In fact, I am a novice of developing NetBSD drivers, and I am learning now.
Do you think my plan is feasible? Or could you give me some advice?

Thanks in advance,
Jia-Ju Bai


On 2017/2/10 23:19, Taylor R Campbell wrote:
Date: Fri, 10 Feb 2017 18:39:23 +0800 (CST)
From: "Jia-Ju Bai" <baijiaju1990%163.com@localhost>

I find the Realtek 8169 driver is built in the kernel, but how to
built it as a kernel module and load it at runtime?
I assume you mean re(4).  Nobody has written the code to make that
driver modular.  re(4) has multiple bus interfaces, PCI and Cardbus,
so it needs at least two modules:

1. a module called re for the common bus-independent code;
2. a module called if_re_pci for the PCI attachment;
and, if you care about Cardbus,
3. a module called if_re_cardbus for the Cardbus attachment.

Each module needs (a) a directory in sys/modules/ with a Makefile, and
(b) a MODULE declaration and <modulename>_modcmd function in one of
its associated .c files.  The bus attachment module also needs an
ioconf file mimicking the kernel config.

There's an example of this for ath(4): sys/modules/ath,
sys/modules/if_ath_pci.  For re, you need `.PATH: ${S}/dev/ic' and
`SRCS=rtl8169.c', if I have guessed right from sys/conf/files; for
if_re_pci, you need `.PATH: ${S}/dev/pci' and `SRCS=if_re_pci.c'.  The
ioconf for if_re_pci should be just like the ioconf for if_ath_pci,
but with `re' substituted for `ath'.  The MODULE declarations and
<modulename>_modcmd functions should look similar to what you find in
dev/ic/ath_netbsd.c and dev/pci/if_ath_pci.c.




Home | Main Index | Thread Index | Old Index