aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/myri10ge/myri10ge.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/myri10ge/myri10ge.c')
-rw-r--r--drivers/net/myri10ge/myri10ge.c29
1 files changed, 21 insertions, 8 deletions
diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c
index b53b7ad999bc..0f9904fe3a5a 100644
--- a/drivers/net/myri10ge/myri10ge.c
+++ b/drivers/net/myri10ge/myri10ge.c
@@ -71,7 +71,7 @@
71#include "myri10ge_mcp.h" 71#include "myri10ge_mcp.h"
72#include "myri10ge_mcp_gen_header.h" 72#include "myri10ge_mcp_gen_header.h"
73 73
74#define MYRI10GE_VERSION_STR "1.3.0-1.233" 74#define MYRI10GE_VERSION_STR "1.3.1-1.248"
75 75
76MODULE_DESCRIPTION("Myricom 10G driver (10GbE)"); 76MODULE_DESCRIPTION("Myricom 10G driver (10GbE)");
77MODULE_AUTHOR("Maintainer: help@myri.com"); 77MODULE_AUTHOR("Maintainer: help@myri.com");
@@ -279,6 +279,8 @@ static int myri10ge_fill_thresh = 256;
279module_param(myri10ge_fill_thresh, int, S_IRUGO | S_IWUSR); 279module_param(myri10ge_fill_thresh, int, S_IRUGO | S_IWUSR);
280MODULE_PARM_DESC(myri10ge_fill_thresh, "Number of empty rx slots allowed\n"); 280MODULE_PARM_DESC(myri10ge_fill_thresh, "Number of empty rx slots allowed\n");
281 281
282static int myri10ge_reset_recover = 1;
283
282static int myri10ge_wcfifo = 0; 284static int myri10ge_wcfifo = 0;
283module_param(myri10ge_wcfifo, int, S_IRUGO); 285module_param(myri10ge_wcfifo, int, S_IRUGO);
284MODULE_PARM_DESC(myri10ge_wcfifo, "Enable WC Fifo when WC is enabled\n"); 286MODULE_PARM_DESC(myri10ge_wcfifo, "Enable WC Fifo when WC is enabled\n");
@@ -1154,9 +1156,11 @@ static inline void myri10ge_check_statblock(struct myri10ge_priv *mgp)
1154 struct mcp_irq_data *stats = mgp->fw_stats; 1156 struct mcp_irq_data *stats = mgp->fw_stats;
1155 1157
1156 if (unlikely(stats->stats_updated)) { 1158 if (unlikely(stats->stats_updated)) {
1157 if (mgp->link_state != stats->link_up) { 1159 unsigned link_up = ntohl(stats->link_up);
1158 mgp->link_state = stats->link_up; 1160 if (mgp->link_state != link_up) {
1159 if (mgp->link_state) { 1161 mgp->link_state = link_up;
1162
1163 if (mgp->link_state == MXGEFW_LINK_UP) {
1160 if (netif_msg_link(mgp)) 1164 if (netif_msg_link(mgp))
1161 printk(KERN_INFO 1165 printk(KERN_INFO
1162 "myri10ge: %s: link up\n", 1166 "myri10ge: %s: link up\n",
@@ -1166,8 +1170,11 @@ static inline void myri10ge_check_statblock(struct myri10ge_priv *mgp)
1166 } else { 1170 } else {
1167 if (netif_msg_link(mgp)) 1171 if (netif_msg_link(mgp))
1168 printk(KERN_INFO 1172 printk(KERN_INFO
1169 "myri10ge: %s: link down\n", 1173 "myri10ge: %s: link %s\n",
1170 mgp->dev->name); 1174 mgp->dev->name,
1175 (link_up == MXGEFW_LINK_MYRINET ?
1176 "mismatch (Myrinet detected)" :
1177 "down"));
1171 netif_carrier_off(mgp->dev); 1178 netif_carrier_off(mgp->dev);
1172 mgp->link_changes++; 1179 mgp->link_changes++;
1173 } 1180 }
@@ -2730,8 +2737,14 @@ static void myri10ge_watchdog(struct work_struct *work)
2730 * For now, just report it */ 2737 * For now, just report it */
2731 reboot = myri10ge_read_reboot(mgp); 2738 reboot = myri10ge_read_reboot(mgp);
2732 printk(KERN_ERR 2739 printk(KERN_ERR
2733 "myri10ge: %s: NIC rebooted (0x%x), resetting\n", 2740 "myri10ge: %s: NIC rebooted (0x%x),%s resetting\n",
2734 mgp->dev->name, reboot); 2741 mgp->dev->name, reboot,
2742 myri10ge_reset_recover ? " " : " not");
2743 if (myri10ge_reset_recover == 0)
2744 return;
2745
2746 myri10ge_reset_recover--;
2747
2735 /* 2748 /*
2736 * A rebooted nic will come back with config space as 2749 * A rebooted nic will come back with config space as
2737 * it was after power was applied to PCIe bus. 2750 * it was after power was applied to PCIe bus.