Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 247035
b: refs/heads/master
c: 7e610ca
h: refs/heads/master
i:
  247033: bbf4a1a
  247031: 3a79ab6
v: v3
  • Loading branch information
Sony Chacko authored and David S. Miller committed Apr 29, 2011
1 parent 4889e1e commit 03cba29
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 64 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: f94bc1e70281c5a587049015af8f3e024d45ad66
refs/heads/master: 7e610caaa5b32d3be9216f040f178e4a23b678b2
9 changes: 5 additions & 4 deletions trunk/drivers/net/qlcnic/qlcnic.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@

#define _QLCNIC_LINUX_MAJOR 5
#define _QLCNIC_LINUX_MINOR 0
#define _QLCNIC_LINUX_SUBVERSION 16
#define QLCNIC_LINUX_VERSIONID "5.0.16"
#define _QLCNIC_LINUX_SUBVERSION 17
#define QLCNIC_LINUX_VERSIONID "5.0.17"
#define QLCNIC_DRV_IDC_VER 0x01
#define QLCNIC_DRIVER_VERSION ((_QLCNIC_LINUX_MAJOR << 16) |\
(_QLCNIC_LINUX_MINOR << 8) | (_QLCNIC_LINUX_SUBVERSION))
Expand Down Expand Up @@ -573,8 +573,10 @@ struct qlcnic_recv_context {
#define QLCNIC_CDRP_CMD_CONFIGURE_ESWITCH 0x00000028
#define QLCNIC_CDRP_CMD_GET_ESWITCH_PORT_CONFIG 0x00000029
#define QLCNIC_CDRP_CMD_GET_ESWITCH_STATS 0x0000002a
#define QLCNIC_CDRP_CMD_CONFIG_PORT 0x0000002E

#define QLCNIC_RCODE_SUCCESS 0
#define QLCNIC_RCODE_NOT_SUPPORTED 9
#define QLCNIC_RCODE_TIMEOUT 17
#define QLCNIC_DESTROY_CTX_RESET 0

Expand Down Expand Up @@ -1155,8 +1157,7 @@ struct qlcnic_esw_statistics {
struct __qlcnic_esw_statistics tx;
};

int qlcnic_fw_cmd_query_phy(struct qlcnic_adapter *adapter, u32 reg, u32 *val);
int qlcnic_fw_cmd_set_phy(struct qlcnic_adapter *adapter, u32 reg, u32 val);
int qlcnic_fw_cmd_set_port(struct qlcnic_adapter *adapter, u32 config);

u32 qlcnic_hw_read_wx_2M(struct qlcnic_adapter *adapter, ulong off);
int qlcnic_hw_write_wx_2M(struct qlcnic_adapter *, ulong off, u32 data);
Expand Down
26 changes: 4 additions & 22 deletions trunk/drivers/net/qlcnic/qlcnic_ctx.c
Original file line number Diff line number Diff line change
Expand Up @@ -359,33 +359,15 @@ qlcnic_fw_cmd_destroy_tx_ctx(struct qlcnic_adapter *adapter)
}

int
qlcnic_fw_cmd_query_phy(struct qlcnic_adapter *adapter, u32 reg, u32 *val)
{

if (qlcnic_issue_cmd(adapter,
adapter->ahw->pci_func,
adapter->fw_hal_version,
reg,
0,
0,
QLCNIC_CDRP_CMD_READ_PHY)) {

return -EIO;
}

return QLCRD32(adapter, QLCNIC_ARG1_CRB_OFFSET);
}

int
qlcnic_fw_cmd_set_phy(struct qlcnic_adapter *adapter, u32 reg, u32 val)
qlcnic_fw_cmd_set_port(struct qlcnic_adapter *adapter, u32 config)
{
return qlcnic_issue_cmd(adapter,
adapter->ahw->pci_func,
adapter->fw_hal_version,
reg,
val,
config,
0,
0,
QLCNIC_CDRP_CMD_WRITE_PHY);
QLCNIC_CDRP_CMD_CONFIG_PORT);
}

int qlcnic_alloc_hw_resources(struct qlcnic_adapter *adapter)
Expand Down
68 changes: 31 additions & 37 deletions trunk/drivers/net/qlcnic/qlcnic_ethtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -284,50 +284,44 @@ qlcnic_get_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
static int
qlcnic_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
{
u32 config = 0;
u32 ret = 0;
struct qlcnic_adapter *adapter = netdev_priv(dev);
__u32 status;

if (adapter->ahw->port_type != QLCNIC_GBE)
return -EOPNOTSUPP;

/* read which mode */
if (adapter->ahw->port_type == QLCNIC_GBE) {
/* autonegotiation */
if (qlcnic_fw_cmd_set_phy(adapter,
QLCNIC_NIU_GB_MII_MGMT_ADDR_AUTONEG,
ecmd->autoneg) != 0)
return -EIO;
else
adapter->link_autoneg = ecmd->autoneg;
if (ecmd->duplex)
config |= 0x1;

if (qlcnic_fw_cmd_query_phy(adapter,
QLCNIC_NIU_GB_MII_MGMT_ADDR_PHY_STATUS,
&status) != 0)
return -EIO;
if (ecmd->autoneg)
config |= 0x2;

switch (ecmd->speed) {
case SPEED_10:
qlcnic_set_phy_speed(status, 0);
break;
case SPEED_100:
qlcnic_set_phy_speed(status, 1);
break;
case SPEED_1000:
qlcnic_set_phy_speed(status, 2);
break;
}
switch (ethtool_cmd_speed(ecmd)) {
case SPEED_10:
config |= (0 << 8);
break;
case SPEED_100:
config |= (1 << 8);
break;
case SPEED_1000:
config |= (10 << 8);
break;
default:
return -EIO;
}

if (ecmd->duplex == DUPLEX_HALF)
qlcnic_clear_phy_duplex(status);
if (ecmd->duplex == DUPLEX_FULL)
qlcnic_set_phy_duplex(status);
if (qlcnic_fw_cmd_set_phy(adapter,
QLCNIC_NIU_GB_MII_MGMT_ADDR_PHY_STATUS,
*((int *)&status)) != 0)
return -EIO;
else {
adapter->link_speed = ecmd->speed;
adapter->link_duplex = ecmd->duplex;
}
} else
ret = qlcnic_fw_cmd_set_port(adapter, config);

if (ret == QLCNIC_RCODE_NOT_SUPPORTED)
return -EOPNOTSUPP;
else if (ret)
return -EIO;

adapter->link_speed = ethtool_cmd_speed(ecmd);
adapter->link_duplex = ecmd->duplex;
adapter->link_autoneg = ecmd->autoneg;

if (!netif_running(dev))
return 0;
Expand Down

0 comments on commit 03cba29

Please sign in to comment.