aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSritej Velaga <sritej.velaga@qlogic.com>2012-02-03 08:45:41 -0500
committerDavid S. Miller <davem@davemloft.net>2012-02-04 15:59:29 -0500
commit646779f1b4ade4acac6b49dbfa8be84a98ab85b4 (patch)
tree6bb851965d43cf8f4c597b5c0c8707d4acbf7c77
parent34d6fde187f169a1b155d091158f97ab34d93bab (diff)
qlcnic: Stop pause ctrl frames on fw hang.
When firmware hang is detected, fw should stop sending pause control frames. Signed-off-by: Sritej Velaga <sritej.velaga@qlogic.com> Signed-off-by: Sony Chacko <sony.chacko@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
index 7bfdf57f4b76..a47c70b09342 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
@@ -2999,8 +2999,18 @@ qlcnic_set_npar_non_operational(struct qlcnic_adapter *adapter)
2999void 2999void
3000qlcnic_dev_request_reset(struct qlcnic_adapter *adapter) 3000qlcnic_dev_request_reset(struct qlcnic_adapter *adapter)
3001{ 3001{
3002 u32 state; 3002 u32 state, xg_val = 0, gb_val = 0;
3003 3003
3004 qlcnic_xg_set_xg0_mask(xg_val);
3005 qlcnic_xg_set_xg1_mask(xg_val);
3006 QLCWR32(adapter, QLCNIC_NIU_XG_PAUSE_CTL, xg_val);
3007 qlcnic_gb_set_gb0_mask(gb_val);
3008 qlcnic_gb_set_gb1_mask(gb_val);
3009 qlcnic_gb_set_gb2_mask(gb_val);
3010 qlcnic_gb_set_gb3_mask(gb_val);
3011 QLCWR32(adapter, QLCNIC_NIU_GB_PAUSE_CTL, gb_val);
3012 dev_info(&adapter->pdev->dev, "Pause control frames disabled"
3013 " on all ports\n");
3004 adapter->need_fw_reset = 1; 3014 adapter->need_fw_reset = 1;
3005 if (qlcnic_api_lock(adapter)) 3015 if (qlcnic_api_lock(adapter))
3006 return; 3016 return;