[netdevice] Allow the hardware and link-layer addresses to differ in size

IPoIB has a 20-byte link-layer address, of which only eight bytes
represent anything relating to a "hardware address".

The PXE and EFI SNP APIs expect the permanent address to be the same
size as the link-layer address, so fill in the "permanent address"
field with the initial link layer address (as generated by
register_netdev() based upon the real hardware address).
This commit is contained in:
Michael Brown
2009-08-11 23:40:27 +01:00
parent 37a0aab4ff
commit 4eab5bc8ca
8 changed files with 66 additions and 17 deletions

View File

@@ -358,8 +358,7 @@ int register_netdev ( struct net_device *netdev ) {
ifindex++ );
/* Set initial link-layer address */
memcpy ( netdev->ll_addr, netdev->hw_addr,
netdev->ll_protocol->ll_addr_len );
netdev->ll_protocol->init_addr ( netdev->hw_addr, netdev->ll_addr );
/* Register per-netdev configuration settings */
if ( ( rc = register_settings ( netdev_settings ( netdev ),