mirror of https://github.com/ipxe/ipxe.git
[ecm] Use ACPI-provided system-specific MAC address if present
Use the "system MAC address" provided within the DSDT/SSDT if such an address is available and has not already been assigned to a network device. Tested-by: Andreas Hammarskjöld <junior@2PintSoftware.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/467/head
parent
91e147213c
commit
05a76acc6d
|
@ -30,6 +30,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
|||
#include <ipxe/if_ether.h>
|
||||
#include <ipxe/base16.h>
|
||||
#include <ipxe/profile.h>
|
||||
#include <ipxe/acpimac.h>
|
||||
#include <ipxe/usb.h>
|
||||
#include "ecm.h"
|
||||
|
||||
|
@ -93,6 +94,14 @@ int ecm_fetch_mac ( struct usb_function *func,
|
|||
int len;
|
||||
int rc;
|
||||
|
||||
/* Use system-specific MAC address, if present and not already used */
|
||||
if ( ( ( rc = acpi_mac ( hw_addr ) ) == 0 ) &&
|
||||
! find_netdev_by_ll_addr ( ðernet_protocol, hw_addr ) ) {
|
||||
DBGC ( usb, "USB %s using system-specific MAC %s\n",
|
||||
func->name, eth_ntoa ( hw_addr ) );
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Fetch MAC address string */
|
||||
len = usb_get_string_descriptor ( usb, desc->mac, 0, buf,
|
||||
sizeof ( buf ) );
|
||||
|
|
Loading…
Reference in New Issue