diff options
Diffstat (limited to 'drivers/net/myri10ge/myri10ge.c')
-rw-r--r-- | drivers/net/myri10ge/myri10ge.c | 29 |
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 | ||
76 | MODULE_DESCRIPTION("Myricom 10G driver (10GbE)"); | 76 | MODULE_DESCRIPTION("Myricom 10G driver (10GbE)"); |
77 | MODULE_AUTHOR("Maintainer: help@myri.com"); | 77 | MODULE_AUTHOR("Maintainer: help@myri.com"); |
@@ -279,6 +279,8 @@ static int myri10ge_fill_thresh = 256; | |||
279 | module_param(myri10ge_fill_thresh, int, S_IRUGO | S_IWUSR); | 279 | module_param(myri10ge_fill_thresh, int, S_IRUGO | S_IWUSR); |
280 | MODULE_PARM_DESC(myri10ge_fill_thresh, "Number of empty rx slots allowed\n"); | 280 | MODULE_PARM_DESC(myri10ge_fill_thresh, "Number of empty rx slots allowed\n"); |
281 | 281 | ||
282 | static int myri10ge_reset_recover = 1; | ||
283 | |||
282 | static int myri10ge_wcfifo = 0; | 284 | static int myri10ge_wcfifo = 0; |
283 | module_param(myri10ge_wcfifo, int, S_IRUGO); | 285 | module_param(myri10ge_wcfifo, int, S_IRUGO); |
284 | MODULE_PARM_DESC(myri10ge_wcfifo, "Enable WC Fifo when WC is enabled\n"); | 286 | MODULE_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. |