aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/infiniband/hw/cxgb3/iwch_qp.c40
1 files changed, 20 insertions, 20 deletions
diff --git a/drivers/infiniband/hw/cxgb3/iwch_qp.c b/drivers/infiniband/hw/cxgb3/iwch_qp.c
index bea5839d89ee..6de8463f453b 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_qp.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_qp.c
@@ -803,7 +803,7 @@ int iwch_post_terminate(struct iwch_qp *qhp, struct respQ_msg_t *rsp_msg)
803 * Assumes qhp lock is held. 803 * Assumes qhp lock is held.
804 */ 804 */
805static void __flush_qp(struct iwch_qp *qhp, struct iwch_cq *rchp, 805static void __flush_qp(struct iwch_qp *qhp, struct iwch_cq *rchp,
806 struct iwch_cq *schp, unsigned long *flag) 806 struct iwch_cq *schp)
807{ 807{
808 int count; 808 int count;
809 int flushed; 809 int flushed;
@@ -812,44 +812,44 @@ static void __flush_qp(struct iwch_qp *qhp, struct iwch_cq *rchp,
812 PDBG("%s qhp %p rchp %p schp %p\n", __func__, qhp, rchp, schp); 812 PDBG("%s qhp %p rchp %p schp %p\n", __func__, qhp, rchp, schp);
813 /* take a ref on the qhp since we must release the lock */ 813 /* take a ref on the qhp since we must release the lock */
814 atomic_inc(&qhp->refcnt); 814 atomic_inc(&qhp->refcnt);
815 spin_unlock_irqrestore(&qhp->lock, *flag); 815 spin_unlock(&qhp->lock);
816 816
817 /* locking hierarchy: cq lock first, then qp lock. */ 817 /* locking hierarchy: cq lock first, then qp lock. */
818 spin_lock_irqsave(&rchp->lock, *flag); 818 spin_lock(&rchp->lock);
819 spin_lock(&qhp->lock); 819 spin_lock(&qhp->lock);
820 cxio_flush_hw_cq(&rchp->cq); 820 cxio_flush_hw_cq(&rchp->cq);
821 cxio_count_rcqes(&rchp->cq, &qhp->wq, &count); 821 cxio_count_rcqes(&rchp->cq, &qhp->wq, &count);
822 flushed = cxio_flush_rq(&qhp->wq, &rchp->cq, count); 822 flushed = cxio_flush_rq(&qhp->wq, &rchp->cq, count);
823 spin_unlock(&qhp->lock); 823 spin_unlock(&qhp->lock);
824 spin_unlock_irqrestore(&rchp->lock, *flag); 824 spin_unlock(&rchp->lock);
825 if (flushed) { 825 if (flushed) {
826 spin_lock_irqsave(&rchp->comp_handler_lock, *flag); 826 spin_lock(&rchp->comp_handler_lock);
827 (*rchp->ibcq.comp_handler)(&rchp->ibcq, rchp->ibcq.cq_context); 827 (*rchp->ibcq.comp_handler)(&rchp->ibcq, rchp->ibcq.cq_context);
828 spin_unlock_irqrestore(&rchp->comp_handler_lock, *flag); 828 spin_unlock(&rchp->comp_handler_lock);
829 } 829 }
830 830
831 /* locking hierarchy: cq lock first, then qp lock. */ 831 /* locking hierarchy: cq lock first, then qp lock. */
832 spin_lock_irqsave(&schp->lock, *flag); 832 spin_lock(&schp->lock);
833 spin_lock(&qhp->lock); 833 spin_lock(&qhp->lock);
834 cxio_flush_hw_cq(&schp->cq); 834 cxio_flush_hw_cq(&schp->cq);
835 cxio_count_scqes(&schp->cq, &qhp->wq, &count); 835 cxio_count_scqes(&schp->cq, &qhp->wq, &count);
836 flushed = cxio_flush_sq(&qhp->wq, &schp->cq, count); 836 flushed = cxio_flush_sq(&qhp->wq, &schp->cq, count);
837 spin_unlock(&qhp->lock); 837 spin_unlock(&qhp->lock);
838 spin_unlock_irqrestore(&schp->lock, *flag); 838 spin_unlock(&schp->lock);
839 if (flushed) { 839 if (flushed) {
840 spin_lock_irqsave(&schp->comp_handler_lock, *flag); 840 spin_lock(&schp->comp_handler_lock);
841 (*schp->ibcq.comp_handler)(&schp->ibcq, schp->ibcq.cq_context); 841 (*schp->ibcq.comp_handler)(&schp->ibcq, schp->ibcq.cq_context);
842 spin_unlock_irqrestore(&schp->comp_handler_lock, *flag); 842 spin_unlock(&schp->comp_handler_lock);
843 } 843 }
844 844
845 /* deref */ 845 /* deref */
846 if (atomic_dec_and_test(&qhp->refcnt)) 846 if (atomic_dec_and_test(&qhp->refcnt))
847 wake_up(&qhp->wait); 847 wake_up(&qhp->wait);
848 848
849 spin_lock_irqsave(&qhp->lock, *flag); 849 spin_lock(&qhp->lock);
850} 850}
851 851
852static void flush_qp(struct iwch_qp *qhp, unsigned long *flag) 852static void flush_qp(struct iwch_qp *qhp)
853{ 853{
854 struct iwch_cq *rchp, *schp; 854 struct iwch_cq *rchp, *schp;
855 855
@@ -859,19 +859,19 @@ static void flush_qp(struct iwch_qp *qhp, unsigned long *flag)
859 if (qhp->ibqp.uobject) { 859 if (qhp->ibqp.uobject) {
860 cxio_set_wq_in_error(&qhp->wq); 860 cxio_set_wq_in_error(&qhp->wq);
861 cxio_set_cq_in_error(&rchp->cq); 861 cxio_set_cq_in_error(&rchp->cq);
862 spin_lock_irqsave(&rchp->comp_handler_lock, *flag); 862 spin_lock(&rchp->comp_handler_lock);
863 (*rchp->ibcq.comp_handler)(&rchp->ibcq, rchp->ibcq.cq_context); 863 (*rchp->ibcq.comp_handler)(&rchp->ibcq, rchp->ibcq.cq_context);
864 spin_unlock_irqrestore(&rchp->comp_handler_lock, *flag); 864 spin_unlock(&rchp->comp_handler_lock);
865 if (schp != rchp) { 865 if (schp != rchp) {
866 cxio_set_cq_in_error(&schp->cq); 866 cxio_set_cq_in_error(&schp->cq);
867 spin_lock_irqsave(&schp->comp_handler_lock, *flag); 867 spin_lock(&schp->comp_handler_lock);
868 (*schp->ibcq.comp_handler)(&schp->ibcq, 868 (*schp->ibcq.comp_handler)(&schp->ibcq,
869 schp->ibcq.cq_context); 869 schp->ibcq.cq_context);
870 spin_unlock_irqrestore(&schp->comp_handler_lock, *flag); 870 spin_unlock(&schp->comp_handler_lock);
871 } 871 }
872 return; 872 return;
873 } 873 }
874 __flush_qp(qhp, rchp, schp, flag); 874 __flush_qp(qhp, rchp, schp);
875} 875}
876 876
877 877
@@ -1030,7 +1030,7 @@ int iwch_modify_qp(struct iwch_dev *rhp, struct iwch_qp *qhp,
1030 break; 1030 break;
1031 case IWCH_QP_STATE_ERROR: 1031 case IWCH_QP_STATE_ERROR:
1032 qhp->attr.state = IWCH_QP_STATE_ERROR; 1032 qhp->attr.state = IWCH_QP_STATE_ERROR;
1033 flush_qp(qhp, &flag); 1033 flush_qp(qhp);
1034 break; 1034 break;
1035 default: 1035 default:
1036 ret = -EINVAL; 1036 ret = -EINVAL;
@@ -1078,7 +1078,7 @@ int iwch_modify_qp(struct iwch_dev *rhp, struct iwch_qp *qhp,
1078 } 1078 }
1079 switch (attrs->next_state) { 1079 switch (attrs->next_state) {
1080 case IWCH_QP_STATE_IDLE: 1080 case IWCH_QP_STATE_IDLE:
1081 flush_qp(qhp, &flag); 1081 flush_qp(qhp);
1082 qhp->attr.state = IWCH_QP_STATE_IDLE; 1082 qhp->attr.state = IWCH_QP_STATE_IDLE;
1083 qhp->attr.llp_stream_handle = NULL; 1083 qhp->attr.llp_stream_handle = NULL;
1084 put_ep(&qhp->ep->com); 1084 put_ep(&qhp->ep->com);
@@ -1132,7 +1132,7 @@ err:
1132 free=1; 1132 free=1;
1133 wake_up(&qhp->wait); 1133 wake_up(&qhp->wait);
1134 BUG_ON(!ep); 1134 BUG_ON(!ep);
1135 flush_qp(qhp, &flag); 1135 flush_qp(qhp);
1136out: 1136out:
1137 spin_unlock_irqrestore(&qhp->lock, flag); 1137 spin_unlock_irqrestore(&qhp->lock, flag);
1138 1138