Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 172072
b: refs/heads/master
c: 0dffc83
h: refs/heads/master
v: v3
  • Loading branch information
Ajit Khaparde authored and David S. Miller committed Dec 2, 2009
1 parent 588b416 commit 0842309
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 22 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: b7b83ac39a177741a378d728d82e87de9b0a01a5
refs/heads/master: 0dffc83e5b831df1df83dfe32a0c267347f9950b
2 changes: 2 additions & 0 deletions trunk/drivers/net/benet/be.h
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,8 @@ struct be_adapter {
u32 cap;
u32 rx_fc; /* Rx flow control */
u32 tx_fc; /* Tx flow control */
int link_speed;
u8 port_type;
};

extern const struct ethtool_ops be_ethtool_ops;
Expand Down
54 changes: 33 additions & 21 deletions trunk/drivers/net/benet/be_ethtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -297,36 +297,48 @@ static int be_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
u8 mac_speed = 0, connector = 0;
u16 link_speed = 0;
bool link_up = false;
int status;

be_cmd_link_status_query(adapter, &link_up, &mac_speed, &link_speed);
if (adapter->link_speed < 0) {
status = be_cmd_link_status_query(adapter, &link_up,
&mac_speed, &link_speed);

/* link_speed is in units of 10 Mbps */
if (link_speed) {
ecmd->speed = link_speed*10;
} else {
switch (mac_speed) {
case PHY_LINK_SPEED_1GBPS:
ecmd->speed = SPEED_1000;
break;
case PHY_LINK_SPEED_10GBPS:
ecmd->speed = SPEED_10000;
break;
}
}

/* link_speed is in units of 10 Mbps */
if (link_speed) {
ecmd->speed = link_speed*10;
} else {
switch (mac_speed) {
case PHY_LINK_SPEED_1GBPS:
ecmd->speed = SPEED_1000;
status = be_cmd_read_port_type(adapter, adapter->port_num,
&connector);
switch (connector) {
case 7:
ecmd->port = PORT_FIBRE;
break;
case PHY_LINK_SPEED_10GBPS:
ecmd->speed = SPEED_10000;
default:
ecmd->port = PORT_TP;
break;
}

/* Save for future use */
adapter->link_speed = ecmd->speed;
adapter->port_type = ecmd->port;
} else {
ecmd->speed = adapter->link_speed;
ecmd->port = adapter->port_type;
}

ecmd->duplex = DUPLEX_FULL;
ecmd->autoneg = AUTONEG_DISABLE;
ecmd->supported = (SUPPORTED_10000baseT_Full | SUPPORTED_TP);

be_cmd_read_port_type(adapter, adapter->port_num, &connector);
switch (connector) {
case 7:
ecmd->port = PORT_FIBRE;
break;
default:
ecmd->port = PORT_TP;
break;
}

ecmd->phy_address = adapter->port_num;
ecmd->transceiver = XCVR_INTERNAL;

Expand Down
3 changes: 3 additions & 0 deletions trunk/drivers/net/benet/be_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,7 @@ void be_link_status_update(struct be_adapter *adapter, bool link_up)

/* If link came up or went down */
if (adapter->link_up != link_up) {
adapter->link_speed = -1;
if (link_up) {
netif_start_queue(netdev);
netif_carrier_on(netdev);
Expand Down Expand Up @@ -1674,6 +1675,8 @@ static int be_setup(struct be_adapter *adapter)
if (status != 0)
goto rx_qs_destroy;

adapter->link_speed = -1;

return 0;

rx_qs_destroy:
Expand Down

0 comments on commit 0842309

Please sign in to comment.