|
@@ -413,6 +413,7 @@ static int smsc9420_ethtool_get_eeprom(struct net_device *dev,
|
|
}
|
|
}
|
|
|
|
|
|
memcpy(data, &eeprom_data[eeprom->offset], len);
|
|
memcpy(data, &eeprom_data[eeprom->offset], len);
|
|
|
|
+ eeprom->magic = SMSC9420_EEPROM_MAGIC;
|
|
eeprom->len = len;
|
|
eeprom->len = len;
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
@@ -423,6 +424,9 @@ static int smsc9420_ethtool_set_eeprom(struct net_device *dev,
|
|
struct smsc9420_pdata *pd = netdev_priv(dev);
|
|
struct smsc9420_pdata *pd = netdev_priv(dev);
|
|
int ret;
|
|
int ret;
|
|
|
|
|
|
|
|
+ if (eeprom->magic != SMSC9420_EEPROM_MAGIC)
|
|
|
|
+ return -EINVAL;
|
|
|
|
+
|
|
smsc9420_eeprom_enable_access(pd);
|
|
smsc9420_eeprom_enable_access(pd);
|
|
smsc9420_eeprom_send_cmd(pd, E2P_CMD_EPC_CMD_EWEN_);
|
|
smsc9420_eeprom_send_cmd(pd, E2P_CMD_EPC_CMD_EWEN_);
|
|
ret = smsc9420_eeprom_write_location(pd, eeprom->offset, *data);
|
|
ret = smsc9420_eeprom_write_location(pd, eeprom->offset, *data);
|