Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 340418
b: refs/heads/master
c: db15dfa
h: refs/heads/master
v: v3
  • Loading branch information
Padmanabh Ratnakar authored and David S. Miller committed Oct 22, 2012
1 parent 06b1fa6 commit d80d88b
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 32 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: f25b119c6c19bbe70a27f7e439ef26ed8acd42ea
refs/heads/master: db15dfa957c6b904e88d70f2f3f1c0b95cafd6b9
73 changes: 42 additions & 31 deletions trunk/drivers/net/ethernet/emulex/benet/be_ethtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -528,6 +528,10 @@ static int be_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
u8 link_status;
u16 link_speed = 0;
int status;
u32 auto_speeds;
u32 fixed_speeds;
u32 dac_cable_len;
u16 interface_type;

if (adapter->phy.link_speed < 0) {
status = be_cmd_link_status_query(adapter, &link_speed,
Expand All @@ -537,39 +541,46 @@ static int be_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
ethtool_cmd_speed_set(ecmd, link_speed);

status = be_cmd_get_phy_info(adapter);
if (status)
return status;

ecmd->supported =
convert_to_et_setting(adapter->phy.interface_type,
adapter->phy.auto_speeds_supported |
adapter->phy.fixed_speeds_supported);
ecmd->advertising =
convert_to_et_setting(adapter->phy.interface_type,
adapter->phy.auto_speeds_supported);

ecmd->port = be_get_port_type(adapter->phy.interface_type,
adapter->phy.dac_cable_len);

if (adapter->phy.auto_speeds_supported) {
ecmd->supported |= SUPPORTED_Autoneg;
ecmd->autoneg = AUTONEG_ENABLE;
ecmd->advertising |= ADVERTISED_Autoneg;
}
if (!status) {
interface_type = adapter->phy.interface_type;
auto_speeds = adapter->phy.auto_speeds_supported;
fixed_speeds = adapter->phy.fixed_speeds_supported;
dac_cable_len = adapter->phy.dac_cable_len;

ecmd->supported =
convert_to_et_setting(interface_type,
auto_speeds |
fixed_speeds);
ecmd->advertising =
convert_to_et_setting(interface_type,
auto_speeds);

ecmd->port = be_get_port_type(interface_type,
dac_cable_len);

if (adapter->phy.auto_speeds_supported) {
ecmd->supported |= SUPPORTED_Autoneg;
ecmd->autoneg = AUTONEG_ENABLE;
ecmd->advertising |= ADVERTISED_Autoneg;
}

if (be_pause_supported(adapter)) {
ecmd->supported |= SUPPORTED_Pause;
ecmd->advertising |= ADVERTISED_Pause;
}

switch (adapter->phy.interface_type) {
case PHY_TYPE_KR_10GB:
case PHY_TYPE_KX4_10GB:
ecmd->transceiver = XCVR_INTERNAL;
break;
default:
ecmd->transceiver = XCVR_EXTERNAL;
break;
if (be_pause_supported(adapter))
ecmd->advertising |= ADVERTISED_Pause;

switch (adapter->phy.interface_type) {
case PHY_TYPE_KR_10GB:
case PHY_TYPE_KX4_10GB:
ecmd->transceiver = XCVR_INTERNAL;
break;
default:
ecmd->transceiver = XCVR_EXTERNAL;
break;
}
} else {
ecmd->port = PORT_OTHER;
ecmd->autoneg = AUTONEG_DISABLE;
ecmd->transceiver = XCVR_DUMMY1;
}

/* Save for future use */
Expand Down

0 comments on commit d80d88b

Please sign in to comment.