diff options
author | Andre Guedes <andre.guedes@intel.com> | 2020-07-07 16:48:00 -0700 |
---|---|---|
committer | Michal Kubecek <mkubecek@suse.cz> | 2020-07-19 15:31:32 +0200 |
commit | 169ceca05103f74a456934392a5ad03c2b0b992c (patch) | |
tree | f53c052d0ca0aecfcb9918d0cd25e538e7fe918a | |
parent | 981dee38573c411f8519437240bd82738ad12e8c (diff) | |
download | ethtool-169ceca05103f74a456934392a5ad03c2b0b992c.tar.gz |
igc: Parse ETQF registers
This patch adds support for parsing the EType Queue Filter (ETQF)
registers fields.
Signed-off-by: Andre Guedes <andre.guedes@intel.com>
Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
-rw-r--r-- | igc.c | 34 |
1 files changed, 34 insertions, 0 deletions
@@ -59,6 +59,14 @@ #define VLANPQF_VP7QSEL 0x30000000 #define VLANPQF_VP7PBSEL 0x40000000 #define VLANPQF_VLANP7V 0x80000000 +#define ETQF_ETYPE 0x0000FFFF +#define ETQF_QUEUE 0x00070000 +#define ETQF_ETYPE_LEN 0x01F00000 +#define ETQF_ETYPE_LEN_EN 0x02000000 +#define ETQF_FILTER_EN 0x04000000 +#define ETQF_IMMEDIATE_INTR 0x20000000 +#define ETQF_1588_TIMESTAMP 0x40000000 +#define ETQF_QUEUE_EN 0x80000000 #define RAH_QSEL_SHIFT 18 #define VLANPQF_VP1QSEL_SHIFT 4 @@ -68,6 +76,8 @@ #define VLANPQF_VP5QSEL_SHIFT 20 #define VLANPQF_VP6QSEL_SHIFT 24 #define VLANPQF_VP7QSEL_SHIFT 28 +#define ETQF_QUEUE_SHIFT 16 +#define ETQF_ETYPE_LEN_SHIFT 20 static const char *bit_to_boolean(u32 val) { @@ -245,5 +255,29 @@ int igc_dump_regs(struct ethtool_drvinfo *info, struct ethtool_regs *regs) bit_to_prio(reg & VLANPQF_VP7PBSEL), bit_to_boolean(reg & VLANPQF_VLANP7V)); + offset = 205; + + for (i = 0; i < 8; i++) { + reg = regs_buff[offset + i]; + printf("%04d: ETQF (EType Queue Filter %d) \n" + " EType: %04X\n" + " EType Length: %d\n" + " EType Length Enable: %s\n" + " Queue: %d\n" + " Queue Enable: %s\n" + " Immediate Interrupt: %s\n" + " 1588 Time Stamp: %s\n" + " Filter Enable: %s\n", + offset + i, i, + reg & ETQF_ETYPE, + (reg & ETQF_ETYPE_LEN) >> ETQF_ETYPE_LEN_SHIFT, + bit_to_boolean(reg & ETQF_ETYPE_LEN_EN), + (reg & ETQF_QUEUE) >> ETQF_QUEUE_SHIFT, + bit_to_boolean(reg & ETQF_QUEUE_EN), + bit_to_enable(reg & ETQF_IMMEDIATE_INTR), + bit_to_enable(reg & ETQF_1588_TIMESTAMP), + bit_to_boolean(reg & ETQF_FILTER_EN)); + } + return 0; } |