Skip to content
Advertisement

How to extract the MAC address of an interface from witthin a driver code

I’m new to Linux Kernel programming and driver programming. I’m working with madwifi drivers, on Linux with kernel version 2.6.32-37 and wish to extract the MAC address of an interface inside the driver code. I know this information supposed to be found in the netdevice structure fields, but not quite sure which one of them is the right one.

My questions are:

  1. What is the difference between the *dev an the *real?
  2. Which one of them should I use? (they’re both in use in different parts of the code and I don’t understand when should I use the former and when the latter).

Advertisement

Answer

Quoting from http://www.makelinux.net/ldd3/chp-17-sect-3:

unsigned char dev_addr[MAX_ADDR_LEN];

Hardware (MAC) address length and device hardware addresses. The Ethernet address length is six octets (we are referring to the hardware ID of the interface board), and the broadcast address is made up of six 0xff octets; ether_setup arranges for these values to be correct. The device address, on the other hand, must be read from the interface board in a device-specific way, and the driver should copy it to dev_addr. The hardware address is used to generate correct Ethernet headers before the packet is handed over to the driver for transmission. The snull device doesn’t use a physical interface, and it invents its own hardware address.

Hope that helps.

Advertisement