diff options
author | Faisal Latif <faisal.latif@intel.com> | 2009-04-27 16:39:36 -0400 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2009-04-27 16:39:36 -0400 |
commit | 4e9c390036196f89208cf9574dfd19daae146776 (patch) | |
tree | c6f80bd2fdebbbfe87ba6f1addf84ed0e6d1af58 /drivers/infiniband | |
parent | c11470f9f4d4490cd7e9563f604c4c7868caf6de (diff) |
RDMA/nes: Increase rexmit timeout interval
Under heavy load with large cluster testing, it may take longer to
receive a response to MPA requests. Change the driver to wait longer
after each rexmit to max time value.
Signed-off-by: Faisal Latif <faisal.latif@intel.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r-- | drivers/infiniband/hw/nes/nes_cm.c | 6 | ||||
-rw-r--r-- | drivers/infiniband/hw/nes/nes_cm.h | 1 |
2 files changed, 6 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c index 1f7a659e6e9a..4969c386785e 100644 --- a/drivers/infiniband/hw/nes/nes_cm.c +++ b/drivers/infiniband/hw/nes/nes_cm.c | |||
@@ -541,6 +541,7 @@ static void nes_cm_timer_tick(unsigned long pass) | |||
541 | struct list_head *list_node; | 541 | struct list_head *list_node; |
542 | struct nes_cm_core *cm_core = g_cm_core; | 542 | struct nes_cm_core *cm_core = g_cm_core; |
543 | u32 settimer = 0; | 543 | u32 settimer = 0; |
544 | unsigned long timetosend; | ||
544 | int ret = NETDEV_TX_OK; | 545 | int ret = NETDEV_TX_OK; |
545 | 546 | ||
546 | struct list_head timer_list; | 547 | struct list_head timer_list; |
@@ -645,8 +646,11 @@ static void nes_cm_timer_tick(unsigned long pass) | |||
645 | send_entry->retrycount); | 646 | send_entry->retrycount); |
646 | if (send_entry->send_retrans) { | 647 | if (send_entry->send_retrans) { |
647 | send_entry->retranscount--; | 648 | send_entry->retranscount--; |
649 | timetosend = (NES_RETRY_TIMEOUT << | ||
650 | (NES_DEFAULT_RETRANS - send_entry->retranscount)); | ||
651 | |||
648 | send_entry->timetosend = jiffies + | 652 | send_entry->timetosend = jiffies + |
649 | NES_RETRY_TIMEOUT; | 653 | min(timetosend, NES_MAX_TIMEOUT); |
650 | if (nexttimeout > send_entry->timetosend || | 654 | if (nexttimeout > send_entry->timetosend || |
651 | !settimer) { | 655 | !settimer) { |
652 | nexttimeout = send_entry->timetosend; | 656 | nexttimeout = send_entry->timetosend; |
diff --git a/drivers/infiniband/hw/nes/nes_cm.h b/drivers/infiniband/hw/nes/nes_cm.h index 80bba1892571..8b7e7c0e496e 100644 --- a/drivers/infiniband/hw/nes/nes_cm.h +++ b/drivers/infiniband/hw/nes/nes_cm.h | |||
@@ -149,6 +149,7 @@ struct nes_timer_entry { | |||
149 | #endif | 149 | #endif |
150 | #define NES_SHORT_TIME (10) | 150 | #define NES_SHORT_TIME (10) |
151 | #define NES_LONG_TIME (2000*HZ/1000) | 151 | #define NES_LONG_TIME (2000*HZ/1000) |
152 | #define NES_MAX_TIMEOUT ((unsigned long) (12*HZ)) | ||
152 | 153 | ||
153 | #define NES_CM_HASHTABLE_SIZE 1024 | 154 | #define NES_CM_HASHTABLE_SIZE 1024 |
154 | #define NES_CM_TCP_TIMER_INTERVAL 3000 | 155 | #define NES_CM_TCP_TIMER_INTERVAL 3000 |