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: Ben Hutchings <bhutchings@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
02ebc26865
commit
7e300bc8e6
|
@ -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)
|
||||||
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 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;
|
||||||
* @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 {
|
||||||
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)
|
||||||
|
|
||||||
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)
|
||||||
|
|
Loading…
Reference in New Issue