How do I find out what kernel module is used for any given network interface?
On the command line run
sudo lshw -C network
For every network interface you'll get a section starting with
*-network. Every section hast a
logical name: line that contains the interface name and a
configuration: line that contain the driver and some other information.
You can query sysfs to tell you this information. To tell which driver a network interface is using:
ls -l /sys/class/net/<devname>/device/driver
<devname> is something like
driver directory will be a symlink to the driver node in sysfs.
To get the name of the module that provides that driver:
ls -l /sys/class/net/<devname>/device/driver/module
... and this
module directory will be a symlink to the module node in sysfs.
IMHO for scripts the best is to use sysfs info (as Jeremy Kerr shows), but for more info:
ethtool -i IFACE_NAME
$ ethtool -i eth0 driver: 8139cp version: 1.3 firmware-version: bus-info: 0000:00:07.0 supports-statistics: yes supports-test: no supports-eeprom-access: yes supports-register-dump: yes supports-priv-flags: no