diff options
author | Michael Brown | 2009-08-11 21:19:53 +0200 |
---|---|---|
committer | Michael Brown | 2009-08-12 01:19:14 +0200 |
commit | 37a0aab4ff2c86f4d109d4cd479535be97d07a94 (patch) | |
tree | 5a2f06a22cf2c647b36d254fc1699072c3c88392 /src/net | |
parent | [doc] Expand scope of doxygen-generated documentation (diff) | |
download | ipxe-37a0aab4ff2c86f4d109d4cd479535be97d07a94.tar.gz ipxe-37a0aab4ff2c86f4d109d4cd479535be97d07a94.tar.xz ipxe-37a0aab4ff2c86f4d109d4cd479535be97d07a94.zip |
[netdevice] Separate out the concept of hardware and link-layer addresses
The hardware address is an intrinsic property of the hardware, while
the link-layer address can be changed at runtime. This separation is
exposed via APIs such as PXE and EFI, but is currently elided by gPXE.
Expose the hardware and link-layer addresses as separate properties
within a net device. Drivers should now fill in hw_addr, which will
be used to initialise ll_addr at the time of calling
register_netdev().
Diffstat (limited to 'src/net')
-rw-r--r-- | src/net/80211/net80211.c | 2 | ||||
-rw-r--r-- | src/net/netdevice.c | 6 |
2 files changed, 6 insertions, 2 deletions
diff --git a/src/net/80211/net80211.c b/src/net/80211/net80211.c index c46870c4..f3612853 100644 --- a/src/net/80211/net80211.c +++ b/src/net/80211/net80211.c @@ -792,7 +792,7 @@ int net80211_register ( struct net80211_device *dev, return -ENOMEM; memcpy ( dev->hw, hw, sizeof ( *hw ) ); - memcpy ( dev->netdev->ll_addr, hw->hwaddr, ETH_ALEN ); + memcpy ( dev->netdev->hw_addr, hw->hwaddr, ETH_ALEN ); /* Set some sensible channel defaults for driver's open() function */ memcpy ( dev->channels, dev->hw->channels, diff --git a/src/net/netdevice.c b/src/net/netdevice.c index f019eeb2..f43ca8a4 100644 --- a/src/net/netdevice.c +++ b/src/net/netdevice.c @@ -357,6 +357,10 @@ int register_netdev ( struct net_device *netdev ) { snprintf ( netdev->name, sizeof ( netdev->name ), "net%d", ifindex++ ); + /* Set initial link-layer address */ + memcpy ( netdev->ll_addr, netdev->hw_addr, + netdev->ll_protocol->ll_addr_len ); + /* Register per-netdev configuration settings */ if ( ( rc = register_settings ( netdev_settings ( netdev ), NULL ) ) != 0 ) { @@ -370,7 +374,7 @@ int register_netdev ( struct net_device *netdev ) { list_add_tail ( &netdev->list, &net_devices ); DBGC ( netdev, "NETDEV %p registered as %s (phys %s hwaddr %s)\n", netdev, netdev->name, netdev->dev->name, - netdev_hwaddr ( netdev ) ); + netdev_addr ( netdev ) ); return 0; } |