From patchwork Mon Feb 16 08:55:01 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steve Glendinning X-Patchwork-Id: 23212 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id 181C1DDDA1 for ; Mon, 16 Feb 2009 19:54:48 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754880AbZBPIym (ORCPT ); Mon, 16 Feb 2009 03:54:42 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754896AbZBPIym (ORCPT ); Mon, 16 Feb 2009 03:54:42 -0500 Received: from drevil.shawell.net ([86.54.240.115]:58647 "EHLO drevil2.shawell.net" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754872AbZBPIyl (ORCPT ); Mon, 16 Feb 2009 03:54:41 -0500 Received: from localhost.localdomain (kensington.shawell.net [10.0.20.15]) by drevil2.shawell.net (Postfix) with ESMTP id 33D1237820; Mon, 16 Feb 2009 08:54:39 +0000 (GMT) From: Steve Glendinning To: netdev@vger.kernel.org Cc: Vlad Lyalikov , Ian Saturley , David Miller , Steve Glendinning Subject: [PATCH] smsc9420: handle magic field of ethtool_eeprom Date: Mon, 16 Feb 2009 08:55:01 +0000 Message-Id: <1234774501-31978-1-git-send-email-steve.glendinning@smsc.com> X-Mailer: git-send-email 1.6.0.6 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org 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 --- drivers/net/smsc9420.c | 4 ++++ drivers/net/smsc9420.h | 1 + 2 files changed, 5 insertions(+), 0 deletions(-) diff --git a/drivers/net/smsc9420.c b/drivers/net/smsc9420.c index a1e4b38..8c74d3d 100644 --- a/drivers/net/smsc9420.c +++ b/drivers/net/smsc9420.c @@ -413,6 +413,7 @@ static int smsc9420_ethtool_get_eeprom(struct net_device *dev, } memcpy(data, &eeprom_data[eeprom->offset], len); + eeprom->magic = SMSC9420_EEPROM_MAGIC; eeprom->len = len; return 0; } @@ -423,6 +424,9 @@ static int smsc9420_ethtool_set_eeprom(struct net_device *dev, struct smsc9420_pdata *pd = netdev_priv(dev); int ret; + if (eeprom->magic != SMSC9420_EEPROM_MAGIC) + return -EINVAL; + smsc9420_eeprom_enable_access(pd); smsc9420_eeprom_send_cmd(pd, E2P_CMD_EPC_CMD_EWEN_); ret = smsc9420_eeprom_write_location(pd, eeprom->offset, *data); diff --git a/drivers/net/smsc9420.h b/drivers/net/smsc9420.h index 69c351f..e441402 100644 --- a/drivers/net/smsc9420.h +++ b/drivers/net/smsc9420.h @@ -44,6 +44,7 @@ #define LAN_REGISTER_EXTENT (0x400) #define SMSC9420_EEPROM_SIZE ((u32)11) +#define SMSC9420_EEPROM_MAGIC (0x9420) #define PKT_BUF_SZ (VLAN_ETH_FRAME_LEN + NET_IP_ALIGN + 4)