Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 256005
b: refs/heads/master
c: e1428d2
h: refs/heads/master
i:
  256003: 209e910
v: v3
  • Loading branch information
Amit Kumar Salecha authored and David S. Miller committed Jul 1, 2011
1 parent 4981f51 commit d738cf4
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 13 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: 0209bcd4d9ee66569d4ea76f9ab2de3a9c740c71
refs/heads/master: e1428d26b404133dcbcc8f758f0f4f6575afd7b7
5 changes: 3 additions & 2 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 19
#define QLCNIC_LINUX_VERSIONID "5.0.19"
#define _QLCNIC_LINUX_SUBVERSION 20
#define QLCNIC_LINUX_VERSIONID "5.0.20"
#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 @@ -782,6 +782,7 @@ struct qlcnic_mac_list_s {
#define QLCNIC_IP_DOWN 3

#define QLCNIC_ILB_MODE 0x1
#define QLCNIC_ELB_MODE 0x2

#define QLCNIC_LINKEVENT 0x1
#define QLCNIC_LB_RESPONSE 0x2
Expand Down
26 changes: 17 additions & 9 deletions trunk/drivers/net/qlcnic/qlcnic_ethtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,8 @@ static const char qlcnic_gstrings_test[][ETH_GSTRING_LEN] = {
"Register_Test_on_offline",
"Link_Test_on_offline",
"Interrupt_Test_offline",
"Loopback_Test_offline"
"Internal_Loopback_offline",
"External_Loopback_offline"
};

#define QLCNIC_TEST_LEN ARRAY_SIZE(qlcnic_gstrings_test)
Expand Down Expand Up @@ -709,7 +710,7 @@ int qlcnic_check_loopback_buff(unsigned char *data, u8 mac[])
return memcmp(data, buff, QLCNIC_ILB_PKT_SIZE);
}

static int qlcnic_do_ilb_test(struct qlcnic_adapter *adapter)
static int qlcnic_do_lb_test(struct qlcnic_adapter *adapter)
{
struct qlcnic_recv_context *recv_ctx = adapter->recv_ctx;
struct qlcnic_host_sds_ring *sds_ring = &recv_ctx->sds_rings[0];
Expand All @@ -735,27 +736,28 @@ static int qlcnic_do_ilb_test(struct qlcnic_adapter *adapter)
dev_kfree_skb_any(skb);

if (!adapter->diag_cnt)
dev_warn(&adapter->pdev->dev, "ILB Test: %dth packet"
dev_warn(&adapter->pdev->dev, "LB Test: %dth packet"
" not recevied\n", i + 1);
else
cnt++;
}
if (cnt != i) {
dev_warn(&adapter->pdev->dev, "ILB Test failed\n");
dev_warn(&adapter->pdev->dev, "LB Test failed\n");
return -1;
}
return 0;
}

static int qlcnic_iloopback_test(struct net_device *netdev)
static int qlcnic_loopback_test(struct net_device *netdev, u8 mode)
{
struct qlcnic_adapter *adapter = netdev_priv(netdev);
int max_sds_rings = adapter->max_sds_rings;
struct qlcnic_host_sds_ring *sds_ring;
int loop = 0;
int ret;

netdev_info(netdev, "%s: in progress\n", __func__);
netdev_info(netdev, "%s loopback test in progress\n",
mode == QLCNIC_ILB_MODE ? "internal" : "external");
if (adapter->op_mode == QLCNIC_NON_PRIV_FUNC) {
netdev_warn(netdev, "Loopback test not supported for non "
"privilege function\n");
Expand All @@ -772,7 +774,7 @@ static int qlcnic_iloopback_test(struct net_device *netdev)

sds_ring = &adapter->recv_ctx->sds_rings[0];

ret = qlcnic_set_lb_mode(adapter, QLCNIC_ILB_MODE);
ret = qlcnic_set_lb_mode(adapter, mode);
if (ret)
goto free_res;

Expand All @@ -790,7 +792,7 @@ static int qlcnic_iloopback_test(struct net_device *netdev)
goto free_res;
}

ret = qlcnic_do_ilb_test(adapter);
ret = qlcnic_do_lb_test(adapter);

qlcnic_clear_lb_mode(adapter);

Expand Down Expand Up @@ -822,10 +824,16 @@ qlcnic_diag_test(struct net_device *dev, struct ethtool_test *eth_test,
if (data[2])
eth_test->flags |= ETH_TEST_FL_FAILED;

data[3] = qlcnic_iloopback_test(dev);
data[3] = qlcnic_loopback_test(dev, QLCNIC_ILB_MODE);
if (data[3])
eth_test->flags |= ETH_TEST_FL_FAILED;

if (eth_test->flags & ETH_TEST_FL_EXTERNAL_LB) {
data[4] = qlcnic_loopback_test(dev, QLCNIC_ELB_MODE);
if (data[4])
eth_test->flags |= ETH_TEST_FL_FAILED;
eth_test->flags |= ETH_TEST_FL_EXTERNAL_LB_DONE;
}
}
}

Expand Down
3 changes: 2 additions & 1 deletion trunk/drivers/net/qlcnic/qlcnic_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -1303,7 +1303,8 @@ qlcnic_handle_linkevent(struct qlcnic_adapter *adapter,
dev_info(&netdev->dev, "unsupported cable length %d\n",
cable_len);

if (!link_status && (lb_status == 1))
if (!link_status && (lb_status == QLCNIC_ILB_MODE ||
lb_status == QLCNIC_ELB_MODE))
adapter->ahw->loopback_state |= QLCNIC_LINKEVENT;

qlcnic_advert_link_change(adapter, link_status);
Expand Down

0 comments on commit d738cf4

Please sign in to comment.