aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChaitanya Lala <clala@riverbed.com>2009-06-08 10:28:54 -0400
committerDavid S. Miller <davem@davemloft.net>2009-06-09 08:25:36 -0400
commit18760f1e74e8dfe8f30d4891e66163d1e6feb893 (patch)
tree052017e6553c6dfec92734030be1d64bec930945
parentedfea6e641edee07bc69c70dd978088fc1cecd74 (diff)
e1000e: Expose MDI-X status via ethtool change
Ethtool is a standard way of getting information about ethernet interfaces. We enhance ethtool kernel interface & e1000e to make the MDI-X status readable via ethtool in userspace. Signed-off-by: Chaitanya Lala <clala@riverbed.com> Signed-off-by: Arthur Jones <ajones@riverbed.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/e1000e/ethtool.c9
-rw-r--r--include/linux/ethtool.h8
2 files changed, 16 insertions, 1 deletions
diff --git a/drivers/net/e1000e/ethtool.c b/drivers/net/e1000e/ethtool.c
index 3d6435617527..1bf4d2a5d34f 100644
--- a/drivers/net/e1000e/ethtool.c
+++ b/drivers/net/e1000e/ethtool.c
@@ -167,6 +167,15 @@ static int e1000_get_settings(struct net_device *netdev,
167 167
168 ecmd->autoneg = ((hw->phy.media_type == e1000_media_type_fiber) || 168 ecmd->autoneg = ((hw->phy.media_type == e1000_media_type_fiber) ||
169 hw->mac.autoneg) ? AUTONEG_ENABLE : AUTONEG_DISABLE; 169 hw->mac.autoneg) ? AUTONEG_ENABLE : AUTONEG_DISABLE;
170
171 /* MDI-X => 2; MDI =>1; Invalid =>0 */
172 if ((hw->phy.media_type == e1000_media_type_copper) &&
173 !hw->mac.get_link_status)
174 ecmd->eth_tp_mdix = hw->phy.is_mdix ? ETH_TP_MDI_X :
175 ETH_TP_MDI;
176 else
177 ecmd->eth_tp_mdix = ETH_TP_MDI_INVALID;
178
170 return 0; 179 return 0;
171} 180}
172 181
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
index 380b04272bf1..9b660bd2e2b3 100644
--- a/include/linux/ethtool.h
+++ b/include/linux/ethtool.h
@@ -30,7 +30,8 @@ struct ethtool_cmd {
30 __u32 maxtxpkt; /* Tx pkts before generating tx int */ 30 __u32 maxtxpkt; /* Tx pkts before generating tx int */
31 __u32 maxrxpkt; /* Rx pkts before generating rx int */ 31 __u32 maxrxpkt; /* Rx pkts before generating rx int */
32 __u16 speed_hi; 32 __u16 speed_hi;
33 __u16 reserved2; 33 __u8 eth_tp_mdix;
34 __u8 reserved2;
34 __u32 lp_advertising; /* Features the link partner advertises */ 35 __u32 lp_advertising; /* Features the link partner advertises */
35 __u32 reserved[2]; 36 __u32 reserved[2];
36}; 37};
@@ -632,6 +633,11 @@ struct ethtool_ops {
632#define AUTONEG_DISABLE 0x00 633#define AUTONEG_DISABLE 0x00
633#define AUTONEG_ENABLE 0x01 634#define AUTONEG_ENABLE 0x01
634 635
636/* Mode MDI or MDI-X */
637#define ETH_TP_MDI_INVALID 0x00
638#define ETH_TP_MDI 0x01
639#define ETH_TP_MDI_X 0x02
640
635/* Wake-On-Lan options. */ 641/* Wake-On-Lan options. */
636#define WAKE_PHY (1 << 0) 642#define WAKE_PHY (1 << 0)
637#define WAKE_UCAST (1 << 1) 643#define WAKE_UCAST (1 << 1)