* [PATCH v2 RESEND] ethtool: Include SFP serial number and date in EEPROM dump
@ 2015-05-19 2:46 Ed Swierk
2015-05-31 20:09 ` Ben Hutchings
0 siblings, 1 reply; 2+ messages in thread
From: Ed Swierk @ 2015-05-19 2:46 UTC (permalink / raw)
To: Ben Hutchings, netdev; +Cc: Ed Swierk
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@skyportsystems.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
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH v2 RESEND] ethtool: Include SFP serial number and date in EEPROM dump
2015-05-19 2:46 [PATCH v2 RESEND] ethtool: Include SFP serial number and date in EEPROM dump Ed Swierk
@ 2015-05-31 20:09 ` Ben Hutchings
0 siblings, 0 replies; 2+ messages in thread
From: Ben Hutchings @ 2015-05-31 20:09 UTC (permalink / raw)
To: Ed Swierk; +Cc: Ben Hutchings, netdev
[-- Attachment #1: Type: text/plain, Size: 3433 bytes --]
On Mon, 2015-05-18 at 19:46 -0700, Ed Swierk wrote:
> 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@skyportsystems.com>
Applied, thanks.
Ben.
> ---
> 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");
> }
> }
--
Ben Hutchings
Reality is just a crutch for people who can't handle science fiction.
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 811 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-05-31 20:09 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-19 2:46 [PATCH v2 RESEND] ethtool: Include SFP serial number and date in EEPROM dump Ed Swierk
2015-05-31 20:09 ` Ben Hutchings
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).