From 86cb5667b26c2a36d388de0cf2cd046d9e35eac0 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Mon, 4 Jun 2007 17:23:21 -0700 Subject: [PATCH] --- yaml --- r: 58379 b: refs/heads/master c: 3ead5db7bcd343917e567c083f5faf45f5301664 h: refs/heads/master i: 58377: 2f0dddde6811de758c8d412a0fd163f1272e47c8 58375: baad5d37495fe7b67b34aecf59ae43cd458ff790 v: v3 --- [refs] | 2 +- trunk/drivers/net/sky2.c | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index d2a5a112c647..28e7bb16eb8d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3213e3abc68c776589d574decf3e6aee0467d12c +refs/heads/master: 3ead5db7bcd343917e567c083f5faf45f5301664 diff --git a/trunk/drivers/net/sky2.c b/trunk/drivers/net/sky2.c index fe01b961b597..612257172b95 100644 --- a/trunk/drivers/net/sky2.c +++ b/trunk/drivers/net/sky2.c @@ -3330,7 +3330,7 @@ static int sky2_get_regs_len(struct net_device *dev) /* * Returns copy of control register region - * Note: access to the RAM address register set will cause timeouts. + * Note: ethtool_get_regs always provides full size (16k) buffer */ static void sky2_get_regs(struct net_device *dev, struct ethtool_regs *regs, void *p) @@ -3338,15 +3338,19 @@ static void sky2_get_regs(struct net_device *dev, struct ethtool_regs *regs, const struct sky2_port *sky2 = netdev_priv(dev); const void __iomem *io = sky2->hw->regs; - BUG_ON(regs->len < B3_RI_WTO_R1); 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); + /* skip diagnostic ram region */ + memcpy_fromio(p + B3_RI_WTO_R1, io + B3_RI_WTO_R1, 0x2000 - B3_RI_WTO_R1); + + /* copy GMAC registers */ + memcpy_fromio(p + BASE_GMAC_1, io + BASE_GMAC_1, 0x1000); + if (sky2->hw->ports > 1) + memcpy_fromio(p + BASE_GMAC_2, io + BASE_GMAC_2, 0x1000); + } /* In order to do Jumbo packets on these chips, need to turn off the