Se você acredita que a máquina local não está sendo falsificada, ifconfig
e ip addr
fornecerão o endereço MAC do hardware.
Se você não confiar na máquina local, nem o ethtool, o ifconfig nem o ip fornecerão as informações necessárias. Como há razões muito legítimas para falsificação de MAC (por exemplo, hot-fail em ethercards), todos os drivers informam apenas o endereço MAC "virtual" porque, se você precisar falsificar o endereço, ele não funcionará bem com algumas das ferramentas para relatar o endereço do firmware e outros para relatar o endereço flexível. Nenhum ioctl pode ou deve dar-lhe o endereço físico.
Para obter o endereço físico, é necessário ler os registros do dispositivo diretamente e, portanto, é totalmente específico do dispositivo.
Uma rápida olhada no ucc_geth.c O driver parece mostrar que a redesignação do endereço MAC é suportada pelo próprio chip (o que faz sentido, já que ele precisa ser capaz de arrancar os pacotes enviados para o seu endereço fora do ether). Isso significa que você precisa ser muito deliberado para garantir que esteja obtendo o endereço físico para o qual o motorista diz:
/* For more details see the hardware spec. */