cxgbe/t4_tom: Mark the socket's receive as done before calling
handle_ddp_close. This eliminates a bad race where an aio_ddp_requeue that happened to run after handle_ddp_close could bump up the active count. Discussed with: jhb@ MFC after: 3 days Sponsored by: Chelsio Communications
This commit is contained in:
parent
b7acf27c2e
commit
d49be2a696
@ -1253,6 +1253,7 @@ do_peer_close(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m)
|
||||
tp->rcv_nxt++; /* FIN */
|
||||
|
||||
so = inp->inp_socket;
|
||||
socantrcvmore(so);
|
||||
if (toep->ulp_mode == ULP_MODE_TCPDDP) {
|
||||
DDP_LOCK(toep);
|
||||
if (__predict_false(toep->ddp.flags &
|
||||
@ -1260,7 +1261,6 @@ do_peer_close(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m)
|
||||
handle_ddp_close(toep, tp, cpl->rcv_nxt);
|
||||
DDP_UNLOCK(toep);
|
||||
}
|
||||
socantrcvmore(so);
|
||||
|
||||
if (toep->ulp_mode != ULP_MODE_RDMA) {
|
||||
KASSERT(tp->rcv_nxt == be32toh(cpl->rcv_nxt),
|
||||
|
Loading…
x
Reference in New Issue
Block a user