diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-09-17 00:35:15 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-09-17 00:35:15 -0400 |
commit | 35e4ddfc86df84d32fbd2b9ae3b0b0408afb7e3f (patch) | |
tree | 91a9a27ca6aabd7f1ba57112029b662a9ee3d109 | |
parent | 27bea3275515e5bd748ed7a492d0df605f5e824a (diff) | |
parent | d5bb75999cb5733ad936ff000023221fe7a13c59 (diff) |
Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband
* 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband:
RDMA/cma: Increase the IB CM retry count in CMA
IPoIB: Retry failed send-only multicast group joins
IB/srp: Don't schedule reconnect from srp
-rw-r--r-- | drivers/infiniband/core/cma.c | 2 | ||||
-rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 1 | ||||
-rw-r--r-- | drivers/infiniband/ulp/srp/ib_srp.c | 14 |
3 files changed, 2 insertions, 15 deletions
diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c index d6f99d5720fc..5d625a81193f 100644 --- a/drivers/infiniband/core/cma.c +++ b/drivers/infiniband/core/cma.c | |||
@@ -49,7 +49,7 @@ MODULE_DESCRIPTION("Generic RDMA CM Agent"); | |||
49 | MODULE_LICENSE("Dual BSD/GPL"); | 49 | MODULE_LICENSE("Dual BSD/GPL"); |
50 | 50 | ||
51 | #define CMA_CM_RESPONSE_TIMEOUT 20 | 51 | #define CMA_CM_RESPONSE_TIMEOUT 20 |
52 | #define CMA_MAX_CM_RETRIES 3 | 52 | #define CMA_MAX_CM_RETRIES 15 |
53 | 53 | ||
54 | static void cma_add_one(struct ib_device *device); | 54 | static void cma_add_one(struct ib_device *device); |
55 | static void cma_remove_one(struct ib_device *device); | 55 | static void cma_remove_one(struct ib_device *device); |
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c index b5e6a7be603d..ec356ce7cdcd 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c | |||
@@ -326,6 +326,7 @@ ipoib_mcast_sendonly_join_complete(int status, | |||
326 | 326 | ||
327 | /* Clear the busy flag so we try again */ | 327 | /* Clear the busy flag so we try again */ |
328 | clear_bit(IPOIB_MCAST_FLAG_BUSY, &mcast->flags); | 328 | clear_bit(IPOIB_MCAST_FLAG_BUSY, &mcast->flags); |
329 | mcast->query = NULL; | ||
329 | } | 330 | } |
330 | 331 | ||
331 | complete(&mcast->done); | 332 | complete(&mcast->done); |
diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c index 8257d5a2c8f8..fd8344cdc0db 100644 --- a/drivers/infiniband/ulp/srp/ib_srp.c +++ b/drivers/infiniband/ulp/srp/ib_srp.c | |||
@@ -799,13 +799,6 @@ static void srp_process_rsp(struct srp_target_port *target, struct srp_rsp *rsp) | |||
799 | spin_unlock_irqrestore(target->scsi_host->host_lock, flags); | 799 | spin_unlock_irqrestore(target->scsi_host->host_lock, flags); |
800 | } | 800 | } |
801 | 801 | ||
802 | static void srp_reconnect_work(void *target_ptr) | ||
803 | { | ||
804 | struct srp_target_port *target = target_ptr; | ||
805 | |||
806 | srp_reconnect_target(target); | ||
807 | } | ||
808 | |||
809 | static void srp_handle_recv(struct srp_target_port *target, struct ib_wc *wc) | 802 | static void srp_handle_recv(struct srp_target_port *target, struct ib_wc *wc) |
810 | { | 803 | { |
811 | struct srp_iu *iu; | 804 | struct srp_iu *iu; |
@@ -858,7 +851,6 @@ static void srp_completion(struct ib_cq *cq, void *target_ptr) | |||
858 | { | 851 | { |
859 | struct srp_target_port *target = target_ptr; | 852 | struct srp_target_port *target = target_ptr; |
860 | struct ib_wc wc; | 853 | struct ib_wc wc; |
861 | unsigned long flags; | ||
862 | 854 | ||
863 | ib_req_notify_cq(cq, IB_CQ_NEXT_COMP); | 855 | ib_req_notify_cq(cq, IB_CQ_NEXT_COMP); |
864 | while (ib_poll_cq(cq, 1, &wc) > 0) { | 856 | while (ib_poll_cq(cq, 1, &wc) > 0) { |
@@ -866,10 +858,6 @@ static void srp_completion(struct ib_cq *cq, void *target_ptr) | |||
866 | printk(KERN_ERR PFX "failed %s status %d\n", | 858 | printk(KERN_ERR PFX "failed %s status %d\n", |
867 | wc.wr_id & SRP_OP_RECV ? "receive" : "send", | 859 | wc.wr_id & SRP_OP_RECV ? "receive" : "send", |
868 | wc.status); | 860 | wc.status); |
869 | spin_lock_irqsave(target->scsi_host->host_lock, flags); | ||
870 | if (target->state == SRP_TARGET_LIVE) | ||
871 | schedule_work(&target->work); | ||
872 | spin_unlock_irqrestore(target->scsi_host->host_lock, flags); | ||
873 | break; | 861 | break; |
874 | } | 862 | } |
875 | 863 | ||
@@ -1705,8 +1693,6 @@ static ssize_t srp_create_target(struct class_device *class_dev, | |||
1705 | target->scsi_host = target_host; | 1693 | target->scsi_host = target_host; |
1706 | target->srp_host = host; | 1694 | target->srp_host = host; |
1707 | 1695 | ||
1708 | INIT_WORK(&target->work, srp_reconnect_work, target); | ||
1709 | |||
1710 | INIT_LIST_HEAD(&target->free_reqs); | 1696 | INIT_LIST_HEAD(&target->free_reqs); |
1711 | INIT_LIST_HEAD(&target->req_queue); | 1697 | INIT_LIST_HEAD(&target->req_queue); |
1712 | for (i = 0; i < SRP_SQ_SIZE; ++i) { | 1698 | for (i = 0; i < SRP_SQ_SIZE; ++i) { |