diff options
Diffstat (limited to 'drivers/infiniband/hw/cxgb4')
-rw-r--r-- | drivers/infiniband/hw/cxgb4/cm.c | 16 | ||||
-rw-r--r-- | drivers/infiniband/hw/cxgb4/iw_cxgb4.h | 4 | ||||
-rw-r--r-- | drivers/infiniband/hw/cxgb4/qp.c | 1 |
3 files changed, 9 insertions, 12 deletions
diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c index 9d8dcfab2b38..d235810e52df 100644 --- a/drivers/infiniband/hw/cxgb4/cm.c +++ b/drivers/infiniband/hw/cxgb4/cm.c | |||
@@ -1466,7 +1466,7 @@ static int peer_close(struct c4iw_dev *dev, struct sk_buff *skb) | |||
1466 | struct c4iw_qp_attributes attrs; | 1466 | struct c4iw_qp_attributes attrs; |
1467 | int disconnect = 1; | 1467 | int disconnect = 1; |
1468 | int release = 0; | 1468 | int release = 0; |
1469 | int closing = 0; | 1469 | int abort = 0; |
1470 | struct tid_info *t = dev->rdev.lldi.tids; | 1470 | struct tid_info *t = dev->rdev.lldi.tids; |
1471 | unsigned int tid = GET_TID(hdr); | 1471 | unsigned int tid = GET_TID(hdr); |
1472 | 1472 | ||
@@ -1507,8 +1507,11 @@ static int peer_close(struct c4iw_dev *dev, struct sk_buff *skb) | |||
1507 | case FPDU_MODE: | 1507 | case FPDU_MODE: |
1508 | start_ep_timer(ep); | 1508 | start_ep_timer(ep); |
1509 | __state_set(&ep->com, CLOSING); | 1509 | __state_set(&ep->com, CLOSING); |
1510 | closing = 1; | 1510 | attrs.next_state = C4IW_QP_STATE_CLOSING; |
1511 | abort = c4iw_modify_qp(ep->com.qp->rhp, ep->com.qp, | ||
1512 | C4IW_QP_ATTR_NEXT_STATE, &attrs, 1); | ||
1511 | peer_close_upcall(ep); | 1513 | peer_close_upcall(ep); |
1514 | disconnect = 1; | ||
1512 | break; | 1515 | break; |
1513 | case ABORTING: | 1516 | case ABORTING: |
1514 | disconnect = 0; | 1517 | disconnect = 0; |
@@ -1536,11 +1539,6 @@ static int peer_close(struct c4iw_dev *dev, struct sk_buff *skb) | |||
1536 | BUG_ON(1); | 1539 | BUG_ON(1); |
1537 | } | 1540 | } |
1538 | mutex_unlock(&ep->com.mutex); | 1541 | mutex_unlock(&ep->com.mutex); |
1539 | if (closing) { | ||
1540 | attrs.next_state = C4IW_QP_STATE_CLOSING; | ||
1541 | c4iw_modify_qp(ep->com.qp->rhp, ep->com.qp, | ||
1542 | C4IW_QP_ATTR_NEXT_STATE, &attrs, 1); | ||
1543 | } | ||
1544 | if (disconnect) | 1542 | if (disconnect) |
1545 | c4iw_ep_disconnect(ep, 0, GFP_KERNEL); | 1543 | c4iw_ep_disconnect(ep, 0, GFP_KERNEL); |
1546 | if (release) | 1544 | if (release) |
@@ -1710,14 +1708,14 @@ static int terminate(struct c4iw_dev *dev, struct sk_buff *skb) | |||
1710 | ep = lookup_tid(t, tid); | 1708 | ep = lookup_tid(t, tid); |
1711 | BUG_ON(!ep); | 1709 | BUG_ON(!ep); |
1712 | 1710 | ||
1713 | if (ep->com.qp) { | 1711 | if (ep && ep->com.qp) { |
1714 | printk(KERN_WARNING MOD "TERM received tid %u qpid %u\n", tid, | 1712 | printk(KERN_WARNING MOD "TERM received tid %u qpid %u\n", tid, |
1715 | ep->com.qp->wq.sq.qid); | 1713 | ep->com.qp->wq.sq.qid); |
1716 | attrs.next_state = C4IW_QP_STATE_TERMINATE; | 1714 | attrs.next_state = C4IW_QP_STATE_TERMINATE; |
1717 | c4iw_modify_qp(ep->com.qp->rhp, ep->com.qp, | 1715 | c4iw_modify_qp(ep->com.qp->rhp, ep->com.qp, |
1718 | C4IW_QP_ATTR_NEXT_STATE, &attrs, 1); | 1716 | C4IW_QP_ATTR_NEXT_STATE, &attrs, 1); |
1719 | } else | 1717 | } else |
1720 | printk(KERN_WARNING MOD "TERM received tid %u no qp\n", tid); | 1718 | printk(KERN_WARNING MOD "TERM received tid %u no ep/qp\n", tid); |
1721 | 1719 | ||
1722 | return 0; | 1720 | return 0; |
1723 | } | 1721 | } |
diff --git a/drivers/infiniband/hw/cxgb4/iw_cxgb4.h b/drivers/infiniband/hw/cxgb4/iw_cxgb4.h index 9f6166f59268..8e16eb2de91f 100644 --- a/drivers/infiniband/hw/cxgb4/iw_cxgb4.h +++ b/drivers/infiniband/hw/cxgb4/iw_cxgb4.h | |||
@@ -161,8 +161,8 @@ static inline int c4iw_wait_for_reply(struct c4iw_rdev *rdev, | |||
161 | } | 161 | } |
162 | } while (!wr_waitp->done); | 162 | } while (!wr_waitp->done); |
163 | if (wr_waitp->ret) | 163 | if (wr_waitp->ret) |
164 | printk(KERN_WARNING MOD "%s: FW reply %d tid %u qpid %u\n", | 164 | PDBG("%s: FW reply %d tid %u qpid %u\n", |
165 | pci_name(rdev->lldi.pdev), wr_waitp->ret, hwtid, qpid); | 165 | pci_name(rdev->lldi.pdev), wr_waitp->ret, hwtid, qpid); |
166 | return wr_waitp->ret; | 166 | return wr_waitp->ret; |
167 | } | 167 | } |
168 | 168 | ||
diff --git a/drivers/infiniband/hw/cxgb4/qp.c b/drivers/infiniband/hw/cxgb4/qp.c index 70a5a3c646da..a1824a5f3d76 100644 --- a/drivers/infiniband/hw/cxgb4/qp.c +++ b/drivers/infiniband/hw/cxgb4/qp.c | |||
@@ -1210,7 +1210,6 @@ int c4iw_modify_qp(struct c4iw_dev *rhp, struct c4iw_qp *qhp, | |||
1210 | if (ret) { | 1210 | if (ret) { |
1211 | if (internal) | 1211 | if (internal) |
1212 | c4iw_get_ep(&qhp->ep->com); | 1212 | c4iw_get_ep(&qhp->ep->com); |
1213 | disconnect = abort = 1; | ||
1214 | goto err; | 1213 | goto err; |
1215 | } | 1214 | } |
1216 | break; | 1215 | break; |