lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 18 May 2015 19:46:48 -0700 From: Ed Swierk <eswierk@...portsystems.com> To: Ben Hutchings <bwh@...nel.org>, netdev@...r.kernel.org Cc: Ed Swierk <eswierk@...portsystems.com> Subject: [PATCH v2 RESEND] ethtool: Include SFP serial number and date in EEPROM dump ethtool -m currently omits the serial number, date code, and other useful EEPROM fields defined in INF-8074, which is part of the SFF-8079 standard. This patch adds them. It also trims space characters from the end of ASCII text fields. $ ethtool -m eth0 ... Option values : 0x00 0x10 Option : TX_DISABLE implemented BR margin, max : 0% BR margin, min : 0% Vendor SN : AGC143953079 Date code : 140926 Signed-off-by: Ed Swierk <eswierk@...portsystems.com> --- sfpid.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/sfpid.c b/sfpid.c index 4f88aa2..b1a5044 100644 --- a/sfpid.c +++ b/sfpid.c @@ -355,6 +355,8 @@ static void sff8079_show_ascii(const __u8 *id, unsigned int first_reg, unsigned int reg, val; printf("\t%-41s : ", name); + while (first_reg <= last_reg && id[last_reg] == ' ') + last_reg--; for (reg = first_reg; reg <= last_reg; reg++) { val = id[reg]; putchar(((val >= 32) && (val <= 126)) ? val : '_'); @@ -362,6 +364,40 @@ static void sff8079_show_ascii(const __u8 *id, unsigned int first_reg, printf("\n"); } +static void sff8079_show_options(const __u8 *id) +{ + static const char *pfx = + "\tOption :"; + + printf("\t%-41s : 0x%02x 0x%02x\n", "Option values", id[64], id[65]); + if (id[65] & (1 << 1)) + printf("%s RX_LOS implemented\n", pfx); + if (id[65] & (1 << 2)) + printf("%s RX_LOS implemented, inverted\n", pfx); + if (id[65] & (1 << 3)) + printf("%s TX_FAULT implemented\n", pfx); + if (id[65] & (1 << 4)) + printf("%s TX_DISABLE implemented\n", pfx); + if (id[65] & (1 << 5)) + printf("%s RATE_SELECT implemented\n", pfx); + if (id[65] & (1 << 6)) + printf("%s Tunable transmitter technology\n", pfx); + if (id[65] & (1 << 7)) + printf("%s Receiver decision threshold implemented\n", pfx); + if (id[64] & (1 << 0)) + printf("%s Linear receiver output implemented\n", pfx); + if (id[64] & (1 << 1)) + printf("%s Power level 2 requirement\n", pfx); + if (id[64] & (1 << 2)) + printf("%s Cooled transceiver implemented\n", pfx); + if (id[64] & (1 << 3)) + printf("%s Retimer or CDR implemented\n", pfx); + if (id[64] & (1 << 4)) + printf("%s Paging implemented\n", pfx); + if (id[64] & (1 << 5)) + printf("%s Power level 3 requirement\n", pfx); +} + void sff8079_show_all(const __u8 *id) { sff8079_show_identifier(id); @@ -385,5 +421,10 @@ void sff8079_show_all(const __u8 *id) sff8079_show_oui(id); sff8079_show_ascii(id, 40, 55, "Vendor PN"); sff8079_show_ascii(id, 56, 59, "Vendor rev"); + sff8079_show_options(id); + sff8079_show_value_with_unit(id, 66, "BR margin, max", 1, "%"); + sff8079_show_value_with_unit(id, 67, "BR margin, min", 1, "%"); + sff8079_show_ascii(id, 68, 83, "Vendor SN"); + sff8079_show_ascii(id, 84, 91, "Date code"); } } -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists