Commit 7e300bc8 authored by Ben Hutchings's avatar Ben Hutchings Committed by David S. Miller

sfc: Store MAC address from NVRAM in net_device::perm_addr

For some reason we failed to make this change when perm_addr was
introduced.
Signed-off-by: default avatarBen Hutchings <bhutchings@solarflare.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 02ebc268
...@@ -909,6 +909,7 @@ static void efx_mac_work(struct work_struct *data) ...@@ -909,6 +909,7 @@ static void efx_mac_work(struct work_struct *data)
static int efx_probe_port(struct efx_nic *efx) static int efx_probe_port(struct efx_nic *efx)
{ {
unsigned char *perm_addr;
int rc; int rc;
netif_dbg(efx, probe, efx->net_dev, "create port\n"); netif_dbg(efx, probe, efx->net_dev, "create port\n");
...@@ -922,11 +923,12 @@ static int efx_probe_port(struct efx_nic *efx) ...@@ -922,11 +923,12 @@ static int efx_probe_port(struct efx_nic *efx)
return rc; return rc;
/* Sanity check MAC address */ /* Sanity check MAC address */
if (is_valid_ether_addr(efx->mac_address)) { perm_addr = efx->net_dev->perm_addr;
memcpy(efx->net_dev->dev_addr, efx->mac_address, ETH_ALEN); if (is_valid_ether_addr(perm_addr)) {
memcpy(efx->net_dev->dev_addr, perm_addr, ETH_ALEN);
} else { } else {
netif_err(efx, probe, efx->net_dev, "invalid MAC address %pM\n", netif_err(efx, probe, efx->net_dev, "invalid MAC address %pM\n",
efx->mac_address); perm_addr);
if (!allow_bad_hwaddr) { if (!allow_bad_hwaddr) {
rc = -EINVAL; rc = -EINVAL;
goto err; goto err;
......
...@@ -1297,7 +1297,7 @@ static int falcon_probe_nvconfig(struct efx_nic *efx) ...@@ -1297,7 +1297,7 @@ static int falcon_probe_nvconfig(struct efx_nic *efx)
} }
/* Read the MAC addresses */ /* Read the MAC addresses */
memcpy(efx->mac_address, nvconfig->mac_address[0], ETH_ALEN); memcpy(efx->net_dev->perm_addr, nvconfig->mac_address[0], ETH_ALEN);
netif_dbg(efx, probe, efx->net_dev, "PHY is %d phy_id %d\n", netif_dbg(efx, probe, efx->net_dev, "PHY is %d phy_id %d\n",
efx->phy_type, efx->mdio.prtad); efx->phy_type, efx->mdio.prtad);
......
...@@ -678,7 +678,6 @@ struct efx_filter_state; ...@@ -678,7 +678,6 @@ struct efx_filter_state;
* @stats_buffer: DMA buffer for statistics * @stats_buffer: DMA buffer for statistics
* @stats_lock: Statistics update lock. Serialises statistics fetches * @stats_lock: Statistics update lock. Serialises statistics fetches
* @mac_op: MAC interface * @mac_op: MAC interface
* @mac_address: Permanent MAC address
* @phy_type: PHY type * @phy_type: PHY type
* @phy_op: PHY interface * @phy_op: PHY interface
* @phy_data: PHY private data (including PHY-specific stats) * @phy_data: PHY private data (including PHY-specific stats)
...@@ -762,7 +761,6 @@ struct efx_nic { ...@@ -762,7 +761,6 @@ struct efx_nic {
spinlock_t stats_lock; spinlock_t stats_lock;
struct efx_mac_operations *mac_op; struct efx_mac_operations *mac_op;
unsigned char mac_address[ETH_ALEN];
unsigned int phy_type; unsigned int phy_type;
struct efx_phy_operations *phy_op; struct efx_phy_operations *phy_op;
......
...@@ -194,13 +194,7 @@ static int siena_reset_hw(struct efx_nic *efx, enum reset_type method) ...@@ -194,13 +194,7 @@ static int siena_reset_hw(struct efx_nic *efx, enum reset_type method)
static int siena_probe_nvconfig(struct efx_nic *efx) static int siena_probe_nvconfig(struct efx_nic *efx)
{ {
int rc; return efx_mcdi_get_board_cfg(efx, efx->net_dev->perm_addr, NULL);
rc = efx_mcdi_get_board_cfg(efx, efx->mac_address, NULL);
if (rc)
return rc;
return 0;
} }
static int siena_probe_nic(struct efx_nic *efx) static int siena_probe_nic(struct efx_nic *efx)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment