Commit 24b46a0f authored by Stephen Hemminger's avatar Stephen Hemminger Committed by Jeff Garzik
Browse files

[PATCH] sk98lin: ethtool register dump



Add support for dumping the registers in the deprecated
sk98lin driver. This is allows for easier comparison with
settings in new skge driver.

Signed-off-by: default avatarStephen Hemminger <shemminger@osdl.org>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 83717cf0
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -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,
};