RDMA/cxgb3: Don't post TID_RELEASE message
The LLD does this for us in cxgb3_remove_tid(). Also fixed active open failure cases where we also shouldn't be releasing the TID. Signed-off-by: Steve Wise <swise@opengridcomputing.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
parent
6eda48d1e8
commit
96d0e4931e
|
@ -254,8 +254,6 @@ static void release_ep_resources(struct iwch_ep *ep)
|
||||||
cxgb3_remove_tid(ep->com.tdev, (void *)ep, ep->hwtid);
|
cxgb3_remove_tid(ep->com.tdev, (void *)ep, ep->hwtid);
|
||||||
dst_release(ep->dst);
|
dst_release(ep->dst);
|
||||||
l2t_release(L2DATA(ep->com.tdev), ep->l2t);
|
l2t_release(L2DATA(ep->com.tdev), ep->l2t);
|
||||||
if (ep->com.tdev->type == T3B)
|
|
||||||
release_tid(ep->com.tdev, ep->hwtid, NULL);
|
|
||||||
put_ep(&ep->com);
|
put_ep(&ep->com);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1103,6 +1101,15 @@ static int abort_rpl(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
|
||||||
return CPL_RET_BUF_DONE;
|
return CPL_RET_BUF_DONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return whether a failed active open has allocated a TID
|
||||||
|
*/
|
||||||
|
static inline int act_open_has_tid(int status)
|
||||||
|
{
|
||||||
|
return status != CPL_ERR_TCAM_FULL && status != CPL_ERR_CONN_EXIST &&
|
||||||
|
status != CPL_ERR_ARP_MISS;
|
||||||
|
}
|
||||||
|
|
||||||
static int act_open_rpl(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
|
static int act_open_rpl(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
|
||||||
{
|
{
|
||||||
struct iwch_ep *ep = ctx;
|
struct iwch_ep *ep = ctx;
|
||||||
|
@ -1112,7 +1119,7 @@ static int act_open_rpl(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
|
||||||
status2errno(rpl->status));
|
status2errno(rpl->status));
|
||||||
connect_reply_upcall(ep, status2errno(rpl->status));
|
connect_reply_upcall(ep, status2errno(rpl->status));
|
||||||
state_set(&ep->com, DEAD);
|
state_set(&ep->com, DEAD);
|
||||||
if (ep->com.tdev->type == T3B)
|
if (ep->com.tdev->type == T3B && act_open_has_tid(rpl->status))
|
||||||
release_tid(ep->com.tdev, GET_TID(rpl), NULL);
|
release_tid(ep->com.tdev, GET_TID(rpl), NULL);
|
||||||
cxgb3_free_atid(ep->com.tdev, ep->atid);
|
cxgb3_free_atid(ep->com.tdev, ep->atid);
|
||||||
dst_release(ep->dst);
|
dst_release(ep->dst);
|
||||||
|
|
Loading…
Reference in a new issue