[PATCH 1/1] ethtool: Expose MDI-X status

Chaitanya Lala
2009-05-27T23:12:56Z

The MDI-X status is a useful tool for diagnosing network
connectivity issues. We expose MDI-X status as a tri-state value
status which drivers can optionally implement.

Signed-off-by: Chaitanya Lala <clala@riverbed.com>
Signed-off-by: Arthur Jones <ajones@riverbed.com>
---
ethtool-copy.h | 8 +++++++-
ethtool.c | 13 +++++++++++++
2 files changed, 20 insertions(+), 1 deletions(-)

diff --git a/ethtool-copy.h b/ethtool-copy.h
index 3ca4e2c..48fb1d3 100644
--- a/ethtool-copy.h
+++ b/ethtool-copy.h
@@ -26,7 +26,8 @@ struct ethtool_cmd {
__u32 maxtxpkt; /* Tx pkts before generating tx int */
__u32 maxrxpkt; /* Rx pkts before generating rx int */
__u16 speed_hi;
- __u16 reserved2;
+ __u8 is_mdix;
+ __u8 reserved2;
__u32 reserved[3];
};

@@ -416,6 +417,11 @@ struct ethtool_rxnfc {
#define AUTONEG_DISABLE 0x00
#define AUTONEG_ENABLE 0x01

+/* Mode MDI or MDI-X */
+#define MDI_INVALID 0x00
+#define MDI 0x01
+#define MDI_X 0x02
+
/* Wake-On-Lan options. */
#define WAKE_PHY (1 << 0)
#define WAKE_UCAST (1 << 1)
diff --git a/ethtool.c b/ethtool.c
index 0110682..bf12168 100644
--- a/ethtool.c
+++ b/ethtool.c
@@ -964,6 +964,19 @@ static int dump_ecmd(struct ethtool_cmd *ep)
fprintf(stdout, " Auto-negotiation: %s\n",
(ep->autoneg == AUTONEG_DISABLE) ?
"off" : "on");
+
+ switch (ep->is_mdix) {
+ case MDI:
+ fprintf(stdout, " MDI-X: off\n");
+ break;
+ case MDI_X:
+ fprintf(stdout, " MDI-X: on\n");
+ break;
+ default:
+ fprintf(stdout, " MDI-X: Unknown\n");
+ break;
+ }
+
return 0;
}

--
1.6.0.4