From 72e4e11071c47792f603cd2c4c6d7a5d607b0d55 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Thu, 5 Oct 2006 10:16:23 -0700 Subject: [PATCH] --- yaml --- r: 41455 b: refs/heads/master c: 24b46a0f0a9a736f125141f271102f70c2612a9f h: refs/heads/master i: 41453: 79cc29902989e301307cf0aa1d1fdcc4b895b5b5 41451: 03fc3a09675f441da0aa0c5416a9bc689dbf5044 41447: 9be948a9f98daf49c1717dfd70e00c93513a7fa1 41439: 4bb82238e57289683642a7450aa75cf3ee00974c v: v3 --- [refs] | 2 +- trunk/drivers/net/sk98lin/skethtool.c | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 4f7cc8273f70..d607b3f27e5a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 83717cf054214d144165c576cba6362d07fc6656 +refs/heads/master: 24b46a0f0a9a736f125141f271102f70c2612a9f diff --git a/trunk/drivers/net/sk98lin/skethtool.c b/trunk/drivers/net/sk98lin/skethtool.c index e5cb5b548b88..36460694eb82 100644 --- a/trunk/drivers/net/sk98lin/skethtool.c +++ b/trunk/drivers/net/sk98lin/skethtool.c @@ -581,6 +581,30 @@ static int setRxCsum(struct net_device *dev, u32 data) return 0; } +static int getRegsLen(struct net_device *dev) +{ + return 0x4000; +} + +/* + * Returns copy of whole control register region + * Note: skip RAM address register because accessing it will + * cause bus hangs! + */ +static void getRegs(struct net_device *dev, struct ethtool_regs *regs, + void *p) +{ + DEV_NET *pNet = netdev_priv(dev); + const void __iomem *io = pNet->pAC->IoBase; + + regs->version = 1; + memset(p, 0, regs->len); + memcpy_fromio(p, io, B3_RAM_ADDR); + + memcpy_fromio(p + B3_RI_WTO_R1, io + B3_RI_WTO_R1, + regs->len - B3_RI_WTO_R1); +} + const struct ethtool_ops SkGeEthtoolOps = { .get_settings = getSettings, .set_settings = setSettings, @@ -599,4 +623,6 @@ const struct ethtool_ops SkGeEthtoolOps = { .set_tx_csum = setTxCsum, .get_rx_csum = getRxCsum, .set_rx_csum = setRxCsum, + .get_regs = getRegs, + .get_regs_len = getRegsLen, };