Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

both pcnet32 and vmxnet can drive the device.

$ lspci -k
...
02:01.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10)
    Subsystem: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
    Flags: bus master, medium devsel, latency 64, IRQ 19
    I/O ports at 2000 [size=128]
    [virtual] Expansion ROM at dc400000 [disabled] [size=64K]
    Kernel driver in use: vmxnet
    Kernel modules: vmxnet, pcnet32

both kernel modules are loaded,

$ lsmod | grep net
pcnet32                32644  0 
vmxnet                 17696  0 
mii                     5212  1 pcnet32

as you see, kernel driver in use is vmxnet. is there any policy/algorithm in kernel how to choose from the candidates?

share|improve this question
add comment

2 Answers

up vote 0 down vote accepted

Short answer: The first module encountered by the kernel is chosen.

Module loading is typically handled by /etc/modules and via udev rules described in /etc/udev/rules.d. Today most Linux distributions uses udev for device handling. There is a rather complex interactions going on between udev, modprobe and the kernel module loader, however I think the author of this presentation explains it very well.

share|improve this answer
    
althou, it does not answer the question directly, it point to good document for me. and for the question, from my experiment the first loaded to the kernel will take charge of the device. –  Dyno Fu Mar 8 '10 at 6:07
    
This is correct and I have updated the answer with documentation that points to the rules of module ordering –  Lars Tackmann Mar 8 '10 at 10:07
add comment

Is this a virutal machine running under VMWare?

pcnet32 is an older ethernet device driver for vmware vmxnet is the newer ethernet device driver for vmware

mii is for ethernet bonding driver

According to this thread all you need to do is specify the correct NIC device for the guest in it's configuration.

ethernet0.virtualDev = "vmxnet"

share|improve this answer
    
i do use VMware, but the excerpt is more to server as an example. –  Dyno Fu Mar 8 '10 at 2:40
    
If I understand what you're trying to say here. You can't force a driver if the hardware isn't being defined for the virtual machine. So I still think that if you fix the definition of the virtual machine the driver issue will work itself out. –  3dinfluence Mar 8 '10 at 4:11
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.