smsc9420: handle magic field of ethtool_eeprom

ethtool.h says the driver should set the magic field in get_eeprom and
verify it in set_eeprom. This patch adds this functionality using an
arbitary driver-specific magic value constant (0x9420).

Signed-off-by: Steve Glendinning <steve.glendinning@smsc.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by Steve Glendinning and committed by David S. Miller 196b7e1b 62660e28

+5
+4
drivers/net/smsc9420.c
··· 413 } 414 415 memcpy(data, &eeprom_data[eeprom->offset], len); 416 eeprom->len = len; 417 return 0; 418 } ··· 423 { 424 struct smsc9420_pdata *pd = netdev_priv(dev); 425 int ret; 426 427 smsc9420_eeprom_enable_access(pd); 428 smsc9420_eeprom_send_cmd(pd, E2P_CMD_EPC_CMD_EWEN_);
··· 413 } 414 415 memcpy(data, &eeprom_data[eeprom->offset], len); 416 + eeprom->magic = SMSC9420_EEPROM_MAGIC; 417 eeprom->len = len; 418 return 0; 419 } ··· 422 { 423 struct smsc9420_pdata *pd = netdev_priv(dev); 424 int ret; 425 + 426 + if (eeprom->magic != SMSC9420_EEPROM_MAGIC) 427 + return -EINVAL; 428 429 smsc9420_eeprom_enable_access(pd); 430 smsc9420_eeprom_send_cmd(pd, E2P_CMD_EPC_CMD_EWEN_);
+1
drivers/net/smsc9420.h
··· 44 #define LAN_REGISTER_EXTENT (0x400) 45 46 #define SMSC9420_EEPROM_SIZE ((u32)11) 47 48 #define PKT_BUF_SZ (VLAN_ETH_FRAME_LEN + NET_IP_ALIGN + 4) 49
··· 44 #define LAN_REGISTER_EXTENT (0x400) 45 46 #define SMSC9420_EEPROM_SIZE ((u32)11) 47 + #define SMSC9420_EEPROM_MAGIC (0x9420) 48 49 #define PKT_BUF_SZ (VLAN_ETH_FRAME_LEN + NET_IP_ALIGN + 4) 50