diff options
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | ethtool-util.h | 2 | ||||
-rw-r--r-- | ethtool.c | 1 | ||||
-rw-r--r-- | vioc.c | 35 |
4 files changed, 39 insertions, 1 deletions
diff --git a/Makefile.am b/Makefile.am index 97ad512..240979e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -7,7 +7,7 @@ sbin_PROGRAMS = ethtool ethtool_SOURCES = ethtool.c ethtool-copy.h ethtool-util.h \ amd8111e.c de2104x.c e100.c e1000.c \ fec_8xx.c ibm_emac.c ixgb.c natsemi.c \ - pcnet32.c realtek.c tg3.c marvell.c + pcnet32.c realtek.c tg3.c marvell.c vioc.c dist-hook: cp $(top_srcdir)/ethtool.spec $(distdir) diff --git a/ethtool-util.h b/ethtool-util.h index 0909a5a..dcb0c1c 100644 --- a/ethtool-util.h +++ b/ethtool-util.h @@ -54,4 +54,6 @@ int skge_dump_regs(struct ethtool_drvinfo *info, struct ethtool_regs *regs); /* SysKonnect Gigabit (Yukon2) */ int sky2_dump_regs(struct ethtool_drvinfo *info, struct ethtool_regs *regs); +/* Fabric7 VIOC */ +int vioc_dump_regs(struct ethtool_drvinfo *info, struct ethtool_regs *regs); #endif @@ -958,6 +958,7 @@ static struct { { "tg3", tg3_dump_regs }, { "skge", skge_dump_regs }, { "sky2", sky2_dump_regs }, + { "vioc", vioc_dump_regs }, }; static int dump_regs(struct ethtool_drvinfo *info, struct ethtool_regs *regs) @@ -0,0 +1,35 @@ +/* Copyright 2006 Fabric7 Systems, Inc */ + +#include <stdio.h> +#include <stdlib.h> +#include "ethtool-util.h" + +struct regs_line { + u32 addr; + u32 data; +}; + +#define VIOC_REGS_LINE_SIZE sizeof(struct regs_line) + +int vioc_dump_regs(struct ethtool_drvinfo *info, struct ethtool_regs *regs) +{ + unsigned int i; + unsigned int num_regs; + struct regs_line *reg_info = (struct regs_line *) regs->data; + + printf("%s: Enter\n", __FUNCTION__); + + printf("ethtool_regs\n" + "%-20s = %04x\n" + "%-20s = %04x\n", + "cmd", regs->cmd, + "version", regs->version); + + num_regs = regs->len/VIOC_REGS_LINE_SIZE; + + for (i = 0; i < num_regs; i++){ + printf("%08x = %08x\n", reg_info[i].addr, reg_info[i].data); + } + + return 0; +} |