From 26141db1a28e95c1763ccff7036e56f83ca16d99 Mon Sep 17 00:00:00 2001 From: Faisal Latif Date: Mon, 27 Apr 2009 13:39:36 -0700 Subject: [PATCH] --- yaml --- r: 144296 b: refs/heads/master c: 4e9c390036196f89208cf9574dfd19daae146776 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/infiniband/hw/nes/nes_cm.c | 6 +++++- trunk/drivers/infiniband/hw/nes/nes_cm.h | 1 + 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 56b0e1db900d..5268c1b07706 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c11470f9f4d4490cd7e9563f604c4c7868caf6de +refs/heads/master: 4e9c390036196f89208cf9574dfd19daae146776 diff --git a/trunk/drivers/infiniband/hw/nes/nes_cm.c b/trunk/drivers/infiniband/hw/nes/nes_cm.c index 1f7a659e6e9a..4969c386785e 100644 --- a/trunk/drivers/infiniband/hw/nes/nes_cm.c +++ b/trunk/drivers/infiniband/hw/nes/nes_cm.c @@ -541,6 +541,7 @@ static void nes_cm_timer_tick(unsigned long pass) struct list_head *list_node; struct nes_cm_core *cm_core = g_cm_core; u32 settimer = 0; + unsigned long timetosend; int ret = NETDEV_TX_OK; struct list_head timer_list; @@ -645,8 +646,11 @@ static void nes_cm_timer_tick(unsigned long pass) send_entry->retrycount); if (send_entry->send_retrans) { send_entry->retranscount--; + timetosend = (NES_RETRY_TIMEOUT << + (NES_DEFAULT_RETRANS - send_entry->retranscount)); + send_entry->timetosend = jiffies + - NES_RETRY_TIMEOUT; + min(timetosend, NES_MAX_TIMEOUT); if (nexttimeout > send_entry->timetosend || !settimer) { nexttimeout = send_entry->timetosend; diff --git a/trunk/drivers/infiniband/hw/nes/nes_cm.h b/trunk/drivers/infiniband/hw/nes/nes_cm.h index 80bba1892571..8b7e7c0e496e 100644 --- a/trunk/drivers/infiniband/hw/nes/nes_cm.h +++ b/trunk/drivers/infiniband/hw/nes/nes_cm.h @@ -149,6 +149,7 @@ struct nes_timer_entry { #endif #define NES_SHORT_TIME (10) #define NES_LONG_TIME (2000*HZ/1000) +#define NES_MAX_TIMEOUT ((unsigned long) (12*HZ)) #define NES_CM_HASHTABLE_SIZE 1024 #define NES_CM_TCP_TIMER_INTERVAL 3000