Minor cleanup: use bitwise ops instead of pointless wrappers around
setbit/clrbit.
This commit is contained in:
parent
5d15267e31
commit
c91bcaaab5
@ -358,7 +358,7 @@ t4_connect(struct toedev *tod, struct socket *so, struct rtentry *rt,
|
|||||||
|
|
||||||
rc = t4_l2t_send(sc, wr, e);
|
rc = t4_l2t_send(sc, wr, e);
|
||||||
if (rc == 0) {
|
if (rc == 0) {
|
||||||
toepcb_set_flag(toep, TPF_CPL_PENDING);
|
toep->flags |= TPF_CPL_PENDING;
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ send_flowc_wr(struct toepcb *toep, struct flowc_tx_params *ftxp)
|
|||||||
unsigned int pfvf = G_FW_VIID_PFN(pi->viid) << S_FW_VIID_PFN;
|
unsigned int pfvf = G_FW_VIID_PFN(pi->viid) << S_FW_VIID_PFN;
|
||||||
struct ofld_tx_sdesc *txsd = &toep->txsd[toep->txsd_pidx];
|
struct ofld_tx_sdesc *txsd = &toep->txsd[toep->txsd_pidx];
|
||||||
|
|
||||||
KASSERT(!toepcb_flag(toep, TPF_FLOWC_WR_SENT),
|
KASSERT(!(toep->flags & TPF_FLOWC_WR_SENT),
|
||||||
("%s: flowc for tid %u sent already", __func__, toep->tid));
|
("%s: flowc for tid %u sent already", __func__, toep->tid));
|
||||||
|
|
||||||
CTR2(KTR_CXGBE, "%s: tid %u", __func__, toep->tid);
|
CTR2(KTR_CXGBE, "%s: tid %u", __func__, toep->tid);
|
||||||
@ -131,7 +131,7 @@ send_flowc_wr(struct toepcb *toep, struct flowc_tx_params *ftxp)
|
|||||||
toep->txsd_pidx = 0;
|
toep->txsd_pidx = 0;
|
||||||
toep->txsd_avail--;
|
toep->txsd_avail--;
|
||||||
|
|
||||||
toepcb_set_flag(toep, TPF_FLOWC_WR_SENT);
|
toep->flags |= TPF_FLOWC_WR_SENT;
|
||||||
t4_wrq_tx(sc, wr);
|
t4_wrq_tx(sc, wr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,15 +151,15 @@ send_reset(struct adapter *sc, struct toepcb *toep, uint32_t snd_nxt)
|
|||||||
inp->inp_flags & INP_DROPPED ? "inp dropped" :
|
inp->inp_flags & INP_DROPPED ? "inp dropped" :
|
||||||
tcpstates[tp->t_state],
|
tcpstates[tp->t_state],
|
||||||
toep->flags, inp->inp_flags,
|
toep->flags, inp->inp_flags,
|
||||||
toepcb_flag(toep, TPF_ABORT_SHUTDOWN) ?
|
toep->flags & TPF_ABORT_SHUTDOWN ?
|
||||||
" (abort already in progress)" : "");
|
" (abort already in progress)" : "");
|
||||||
|
|
||||||
if (toepcb_flag(toep, TPF_ABORT_SHUTDOWN))
|
if (toep->flags & TPF_ABORT_SHUTDOWN)
|
||||||
return; /* abort already in progress */
|
return; /* abort already in progress */
|
||||||
|
|
||||||
toepcb_set_flag(toep, TPF_ABORT_SHUTDOWN);
|
toep->flags |= TPF_ABORT_SHUTDOWN;
|
||||||
|
|
||||||
KASSERT(toepcb_flag(toep, TPF_FLOWC_WR_SENT),
|
KASSERT(toep->flags & TPF_FLOWC_WR_SENT,
|
||||||
("%s: flowc_wr not sent for tid %d.", __func__, tid));
|
("%s: flowc_wr not sent for tid %d.", __func__, tid));
|
||||||
|
|
||||||
wr = alloc_wrqe(sizeof(*req), toep->ofld_txq);
|
wr = alloc_wrqe(sizeof(*req), toep->ofld_txq);
|
||||||
@ -174,7 +174,7 @@ send_reset(struct adapter *sc, struct toepcb *toep, uint32_t snd_nxt)
|
|||||||
req->rsvd0 = htobe32(snd_nxt);
|
req->rsvd0 = htobe32(snd_nxt);
|
||||||
else
|
else
|
||||||
req->rsvd0 = htobe32(tp->snd_nxt);
|
req->rsvd0 = htobe32(tp->snd_nxt);
|
||||||
req->rsvd1 = !toepcb_flag(toep, TPF_TX_DATA_SENT);
|
req->rsvd1 = !(toep->flags & TPF_TX_DATA_SENT);
|
||||||
req->cmd = CPL_ABORT_SEND_RST;
|
req->cmd = CPL_ABORT_SEND_RST;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -364,12 +364,12 @@ close_conn(struct adapter *sc, struct toepcb *toep)
|
|||||||
unsigned int tid = toep->tid;
|
unsigned int tid = toep->tid;
|
||||||
|
|
||||||
CTR3(KTR_CXGBE, "%s: tid %u%s", __func__, toep->tid,
|
CTR3(KTR_CXGBE, "%s: tid %u%s", __func__, toep->tid,
|
||||||
toepcb_flag(toep, TPF_FIN_SENT) ? ", IGNORED" : "");
|
toep->flags & TPF_FIN_SENT ? ", IGNORED" : "");
|
||||||
|
|
||||||
if (toepcb_flag(toep, TPF_FIN_SENT))
|
if (toep->flags & TPF_FIN_SENT)
|
||||||
return (0);
|
return (0);
|
||||||
|
|
||||||
KASSERT(toepcb_flag(toep, TPF_FLOWC_WR_SENT),
|
KASSERT(toep->flags & TPF_FLOWC_WR_SENT,
|
||||||
("%s: flowc_wr not sent for tid %u.", __func__, tid));
|
("%s: flowc_wr not sent for tid %u.", __func__, tid));
|
||||||
|
|
||||||
wr = alloc_wrqe(sizeof(*req), toep->ofld_txq);
|
wr = alloc_wrqe(sizeof(*req), toep->ofld_txq);
|
||||||
@ -387,8 +387,8 @@ close_conn(struct adapter *sc, struct toepcb *toep)
|
|||||||
OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_CLOSE_CON_REQ, tid));
|
OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_CLOSE_CON_REQ, tid));
|
||||||
req->rsvd = 0;
|
req->rsvd = 0;
|
||||||
|
|
||||||
toepcb_set_flag(toep, TPF_FIN_SENT);
|
toep->flags |= TPF_FIN_SENT;
|
||||||
toepcb_clr_flag(toep, TPF_SEND_FIN);
|
toep->flags &= ~TPF_SEND_FIN;
|
||||||
t4_l2t_send(sc, wr, toep->l2te);
|
t4_l2t_send(sc, wr, toep->l2te);
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
@ -540,7 +540,7 @@ t4_push_frames(struct adapter *sc, struct toepcb *toep)
|
|||||||
struct ofld_tx_sdesc *txsd = &toep->txsd[toep->txsd_pidx];
|
struct ofld_tx_sdesc *txsd = &toep->txsd[toep->txsd_pidx];
|
||||||
|
|
||||||
INP_WLOCK_ASSERT(inp);
|
INP_WLOCK_ASSERT(inp);
|
||||||
KASSERT(toepcb_flag(toep, TPF_FLOWC_WR_SENT),
|
KASSERT(toep->flags & TPF_FLOWC_WR_SENT,
|
||||||
("%s: flowc_wr not sent for tid %u.", __func__, toep->tid));
|
("%s: flowc_wr not sent for tid %u.", __func__, toep->tid));
|
||||||
|
|
||||||
if (__predict_false(toep->ulp_mode != ULP_MODE_NONE &&
|
if (__predict_false(toep->ulp_mode != ULP_MODE_NONE &&
|
||||||
@ -551,7 +551,7 @@ t4_push_frames(struct adapter *sc, struct toepcb *toep)
|
|||||||
* This function doesn't resume by itself. Someone else must clear the
|
* This function doesn't resume by itself. Someone else must clear the
|
||||||
* flag and call this function.
|
* flag and call this function.
|
||||||
*/
|
*/
|
||||||
if (__predict_false(toepcb_flag(toep, TPF_TX_SUSPENDED)))
|
if (__predict_false(toep->flags & TPF_TX_SUSPENDED))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
@ -577,7 +577,7 @@ t4_push_frames(struct adapter *sc, struct toepcb *toep)
|
|||||||
plen -= m->m_len;
|
plen -= m->m_len;
|
||||||
if (plen == 0) {
|
if (plen == 0) {
|
||||||
/* Too few credits */
|
/* Too few credits */
|
||||||
toepcb_set_flag(toep, TPF_TX_SUSPENDED);
|
toep->flags |= TPF_TX_SUSPENDED;
|
||||||
SOCKBUF_UNLOCK(sb);
|
SOCKBUF_UNLOCK(sb);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -620,7 +620,7 @@ unlocked:
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (__predict_false(toepcb_flag(toep, TPF_FIN_SENT)))
|
if (__predict_false(toep->flags & TPF_FIN_SENT))
|
||||||
panic("%s: excess tx.", __func__);
|
panic("%s: excess tx.", __func__);
|
||||||
|
|
||||||
if (plen <= max_imm) {
|
if (plen <= max_imm) {
|
||||||
@ -631,7 +631,7 @@ unlocked:
|
|||||||
toep->ofld_txq);
|
toep->ofld_txq);
|
||||||
if (wr == NULL) {
|
if (wr == NULL) {
|
||||||
/* XXX: how will we recover from this? */
|
/* XXX: how will we recover from this? */
|
||||||
toepcb_set_flag(toep, TPF_TX_SUSPENDED);
|
toep->flags |= TPF_TX_SUSPENDED;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
txwr = wrtod(wr);
|
txwr = wrtod(wr);
|
||||||
@ -649,7 +649,7 @@ unlocked:
|
|||||||
wr = alloc_wrqe(roundup(wr_len, 16), toep->ofld_txq);
|
wr = alloc_wrqe(roundup(wr_len, 16), toep->ofld_txq);
|
||||||
if (wr == NULL) {
|
if (wr == NULL) {
|
||||||
/* XXX: how will we recover from this? */
|
/* XXX: how will we recover from this? */
|
||||||
toepcb_set_flag(toep, TPF_TX_SUSPENDED);
|
toep->flags |= TPF_TX_SUSPENDED;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
txwr = wrtod(wr);
|
txwr = wrtod(wr);
|
||||||
@ -678,7 +678,7 @@ unlocked:
|
|||||||
sb->sb_sndptr = sb_sndptr;
|
sb->sb_sndptr = sb_sndptr;
|
||||||
SOCKBUF_UNLOCK(sb);
|
SOCKBUF_UNLOCK(sb);
|
||||||
|
|
||||||
toepcb_set_flag(toep, TPF_TX_DATA_SENT);
|
toep->flags |= TPF_TX_DATA_SENT;
|
||||||
|
|
||||||
KASSERT(toep->txsd_avail > 0, ("%s: no txsd", __func__));
|
KASSERT(toep->txsd_avail > 0, ("%s: no txsd", __func__));
|
||||||
txsd->plen = plen;
|
txsd->plen = plen;
|
||||||
@ -694,7 +694,7 @@ unlocked:
|
|||||||
} while (m != NULL);
|
} while (m != NULL);
|
||||||
|
|
||||||
/* Send a FIN if requested, but only if there's no more data to send */
|
/* Send a FIN if requested, but only if there's no more data to send */
|
||||||
if (m == NULL && toepcb_flag(toep, TPF_SEND_FIN))
|
if (m == NULL && toep->flags & TPF_SEND_FIN)
|
||||||
close_conn(sc, toep);
|
close_conn(sc, toep);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -731,7 +731,7 @@ t4_send_fin(struct toedev *tod, struct tcpcb *tp)
|
|||||||
("%s: inp %p dropped.", __func__, inp));
|
("%s: inp %p dropped.", __func__, inp));
|
||||||
KASSERT(toep != NULL, ("%s: toep is NULL", __func__));
|
KASSERT(toep != NULL, ("%s: toep is NULL", __func__));
|
||||||
|
|
||||||
toepcb_set_flag(toep, TPF_SEND_FIN);
|
toep->flags |= TPF_SEND_FIN;
|
||||||
t4_push_frames(sc, toep);
|
t4_push_frames(sc, toep);
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
@ -752,7 +752,7 @@ t4_send_rst(struct toedev *tod, struct tcpcb *tp)
|
|||||||
KASSERT(toep != NULL, ("%s: toep is NULL", __func__));
|
KASSERT(toep != NULL, ("%s: toep is NULL", __func__));
|
||||||
|
|
||||||
/* hmmmm */
|
/* hmmmm */
|
||||||
KASSERT(toepcb_flag(toep, TPF_FLOWC_WR_SENT),
|
KASSERT(toep->flags & TPF_FLOWC_WR_SENT,
|
||||||
("%s: flowc for tid %u [%s] not sent already",
|
("%s: flowc for tid %u [%s] not sent already",
|
||||||
__func__, toep->tid, tcpstates[tp->t_state]));
|
__func__, toep->tid, tcpstates[tp->t_state]));
|
||||||
|
|
||||||
@ -790,7 +790,7 @@ do_peer_close(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m)
|
|||||||
CTR5(KTR_CXGBE, "%s: tid %u (%s), toep_flags 0x%x, inp %p", __func__,
|
CTR5(KTR_CXGBE, "%s: tid %u (%s), toep_flags 0x%x, inp %p", __func__,
|
||||||
tid, tp ? tcpstates[tp->t_state] : "no tp", toep->flags, inp);
|
tid, tp ? tcpstates[tp->t_state] : "no tp", toep->flags, inp);
|
||||||
|
|
||||||
if (toepcb_flag(toep, TPF_ABORT_SHUTDOWN))
|
if (toep->flags & TPF_ABORT_SHUTDOWN)
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
tp->rcv_nxt++; /* FIN */
|
tp->rcv_nxt++; /* FIN */
|
||||||
@ -888,7 +888,7 @@ do_close_con_rpl(struct sge_iq *iq, const struct rss_header *rss,
|
|||||||
CTR4(KTR_CXGBE, "%s: tid %u (%s), toep_flags 0x%x",
|
CTR4(KTR_CXGBE, "%s: tid %u (%s), toep_flags 0x%x",
|
||||||
__func__, tid, tp ? tcpstates[tp->t_state] : "no tp", toep->flags);
|
__func__, tid, tp ? tcpstates[tp->t_state] : "no tp", toep->flags);
|
||||||
|
|
||||||
if (toepcb_flag(toep, TPF_ABORT_SHUTDOWN))
|
if (toep->flags & TPF_ABORT_SHUTDOWN)
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
so = inp->inp_socket;
|
so = inp->inp_socket;
|
||||||
@ -986,7 +986,7 @@ do_abort_req(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m)
|
|||||||
("%s: unexpected opcode 0x%x", __func__, opcode));
|
("%s: unexpected opcode 0x%x", __func__, opcode));
|
||||||
KASSERT(m == NULL, ("%s: wasn't expecting payload", __func__));
|
KASSERT(m == NULL, ("%s: wasn't expecting payload", __func__));
|
||||||
|
|
||||||
if (toepcb_flag(toep, TPF_SYNQE))
|
if (toep->flags & TPF_SYNQE)
|
||||||
return (do_abort_req_synqe(iq, rss, m));
|
return (do_abort_req_synqe(iq, rss, m));
|
||||||
|
|
||||||
KASSERT(toep->tid == tid, ("%s: toep tid mismatch", __func__));
|
KASSERT(toep->tid == tid, ("%s: toep tid mismatch", __func__));
|
||||||
@ -1015,11 +1015,11 @@ do_abort_req(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m)
|
|||||||
* cleaning up resources. Otherwise we tear everything down right here
|
* cleaning up resources. Otherwise we tear everything down right here
|
||||||
* right now. We owe the T4 a CPL_ABORT_RPL no matter what.
|
* right now. We owe the T4 a CPL_ABORT_RPL no matter what.
|
||||||
*/
|
*/
|
||||||
if (toepcb_flag(toep, TPF_ABORT_SHUTDOWN)) {
|
if (toep->flags & TPF_ABORT_SHUTDOWN) {
|
||||||
INP_WUNLOCK(inp);
|
INP_WUNLOCK(inp);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
toepcb_set_flag(toep, TPF_ABORT_SHUTDOWN);
|
toep->flags |= TPF_ABORT_SHUTDOWN;
|
||||||
|
|
||||||
so_error_set(so, abort_status_to_errno(tp, cpl->status));
|
so_error_set(so, abort_status_to_errno(tp, cpl->status));
|
||||||
tp = tcp_close(tp);
|
tp = tcp_close(tp);
|
||||||
@ -1052,7 +1052,7 @@ do_abort_rpl(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m)
|
|||||||
("%s: unexpected opcode 0x%x", __func__, opcode));
|
("%s: unexpected opcode 0x%x", __func__, opcode));
|
||||||
KASSERT(m == NULL, ("%s: wasn't expecting payload", __func__));
|
KASSERT(m == NULL, ("%s: wasn't expecting payload", __func__));
|
||||||
|
|
||||||
if (toepcb_flag(toep, TPF_SYNQE))
|
if (toep->flags & TPF_SYNQE)
|
||||||
return (do_abort_rpl_synqe(iq, rss, m));
|
return (do_abort_rpl_synqe(iq, rss, m));
|
||||||
|
|
||||||
KASSERT(toep->tid == tid, ("%s: toep tid mismatch", __func__));
|
KASSERT(toep->tid == tid, ("%s: toep tid mismatch", __func__));
|
||||||
@ -1060,7 +1060,7 @@ do_abort_rpl(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m)
|
|||||||
CTR5(KTR_CXGBE, "%s: tid %u, toep %p, inp %p, status %d",
|
CTR5(KTR_CXGBE, "%s: tid %u, toep %p, inp %p, status %d",
|
||||||
__func__, tid, toep, inp, cpl->status);
|
__func__, tid, toep, inp, cpl->status);
|
||||||
|
|
||||||
KASSERT(toepcb_flag(toep, TPF_ABORT_SHUTDOWN),
|
KASSERT(toep->flags & TPF_ABORT_SHUTDOWN,
|
||||||
("%s: wasn't expecting abort reply", __func__));
|
("%s: wasn't expecting abort reply", __func__));
|
||||||
|
|
||||||
INP_WLOCK(inp);
|
INP_WLOCK(inp);
|
||||||
@ -1082,13 +1082,13 @@ do_rx_data(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m)
|
|||||||
struct sockbuf *sb;
|
struct sockbuf *sb;
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
if (__predict_false(toepcb_flag(toep, TPF_SYNQE))) {
|
if (__predict_false(toep->flags & TPF_SYNQE)) {
|
||||||
/*
|
/*
|
||||||
* do_pass_establish failed and must be attempting to abort the
|
* do_pass_establish failed and must be attempting to abort the
|
||||||
* synqe's tid. Meanwhile, the T4 has sent us data for such a
|
* synqe's tid. Meanwhile, the T4 has sent us data for such a
|
||||||
* connection.
|
* connection.
|
||||||
*/
|
*/
|
||||||
KASSERT(toepcb_flag(toep, TPF_ABORT_SHUTDOWN),
|
KASSERT(toep->flags & TPF_ABORT_SHUTDOWN,
|
||||||
("%s: synqe and tid isn't being aborted.", __func__));
|
("%s: synqe and tid isn't being aborted.", __func__));
|
||||||
m_freem(m);
|
m_freem(m);
|
||||||
return (0);
|
return (0);
|
||||||
@ -1266,8 +1266,8 @@ do_fw4_ack(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m)
|
|||||||
* Very unusual case: we'd sent a flowc + abort_req for a synq entry and
|
* Very unusual case: we'd sent a flowc + abort_req for a synq entry and
|
||||||
* now this comes back carrying the credits for the flowc.
|
* now this comes back carrying the credits for the flowc.
|
||||||
*/
|
*/
|
||||||
if (__predict_false(toepcb_flag(toep, TPF_SYNQE))) {
|
if (__predict_false(toep->flags & TPF_SYNQE)) {
|
||||||
KASSERT(toepcb_flag(toep, TPF_ABORT_SHUTDOWN),
|
KASSERT(toep->flags & TPF_ABORT_SHUTDOWN,
|
||||||
("%s: credits for a synq entry %p", __func__, toep));
|
("%s: credits for a synq entry %p", __func__, toep));
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
@ -1281,7 +1281,7 @@ do_fw4_ack(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m)
|
|||||||
|
|
||||||
INP_WLOCK(inp);
|
INP_WLOCK(inp);
|
||||||
|
|
||||||
if (__predict_false(toepcb_flag(toep, TPF_ABORT_SHUTDOWN))) {
|
if (__predict_false(toep->flags & TPF_ABORT_SHUTDOWN)) {
|
||||||
INP_WUNLOCK(inp);
|
INP_WUNLOCK(inp);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
@ -1337,11 +1337,11 @@ do_fw4_ack(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* XXX */
|
/* XXX */
|
||||||
if ((toepcb_flag(toep, TPF_TX_SUSPENDED) &&
|
if ((toep->flags & TPF_TX_SUSPENDED &&
|
||||||
toep->tx_credits >= MIN_OFLD_TX_CREDITS) ||
|
toep->tx_credits >= MIN_OFLD_TX_CREDITS) ||
|
||||||
toep->tx_credits == toep->txsd_total *
|
toep->tx_credits == toep->txsd_total *
|
||||||
howmany((sizeof(struct fw_ofld_tx_data_wr) + 1), 16)) {
|
howmany((sizeof(struct fw_ofld_tx_data_wr) + 1), 16)) {
|
||||||
toepcb_clr_flag(toep, TPF_TX_SUSPENDED);
|
toep->flags &= ~TPF_TX_SUSPENDED;
|
||||||
t4_push_frames(sc, toep);
|
t4_push_frames(sc, toep);
|
||||||
}
|
}
|
||||||
INP_WUNLOCK(inp);
|
INP_WUNLOCK(inp);
|
||||||
|
@ -472,7 +472,7 @@ do_rx_data_ddp(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m)
|
|||||||
|
|
||||||
KASSERT(m == NULL, ("%s: wasn't expecting payload", __func__));
|
KASSERT(m == NULL, ("%s: wasn't expecting payload", __func__));
|
||||||
KASSERT(toep->tid == tid, ("%s: toep tid/atid mismatch", __func__));
|
KASSERT(toep->tid == tid, ("%s: toep tid/atid mismatch", __func__));
|
||||||
KASSERT(!toepcb_flag(toep, TPF_SYNQE),
|
KASSERT(!(toep->flags & TPF_SYNQE),
|
||||||
("%s: toep %p claims to be a synq entry", __func__, toep));
|
("%s: toep %p claims to be a synq entry", __func__, toep));
|
||||||
|
|
||||||
vld = be32toh(cpl->ddpvld);
|
vld = be32toh(cpl->ddpvld);
|
||||||
@ -497,7 +497,7 @@ do_rx_ddp_complete(struct sge_iq *iq, const struct rss_header *rss,
|
|||||||
|
|
||||||
KASSERT(m == NULL, ("%s: wasn't expecting payload", __func__));
|
KASSERT(m == NULL, ("%s: wasn't expecting payload", __func__));
|
||||||
KASSERT(toep->tid == tid, ("%s: toep tid/atid mismatch", __func__));
|
KASSERT(toep->tid == tid, ("%s: toep tid/atid mismatch", __func__));
|
||||||
KASSERT(!toepcb_flag(toep, TPF_SYNQE),
|
KASSERT(!(toep->flags & TPF_SYNQE),
|
||||||
("%s: toep %p claims to be a synq entry", __func__, toep));
|
("%s: toep %p claims to be a synq entry", __func__, toep));
|
||||||
|
|
||||||
handle_ddp_data(toep, cpl->ddp_report, cpl->rcv_nxt, 0);
|
handle_ddp_data(toep, cpl->ddp_report, cpl->rcv_nxt, 0);
|
||||||
|
@ -283,11 +283,11 @@ send_reset_synqe(struct toedev *tod, struct synq_entry *synqe)
|
|||||||
|
|
||||||
CTR4(KTR_CXGBE, "%s: synqe %p, tid %d%s",
|
CTR4(KTR_CXGBE, "%s: synqe %p, tid %d%s",
|
||||||
__func__, synqe, synqe->tid,
|
__func__, synqe, synqe->tid,
|
||||||
synqe_flag(synqe, TPF_ABORT_SHUTDOWN) ?
|
synqe->flags & TPF_ABORT_SHUTDOWN ?
|
||||||
" (abort already in progress)" : "");
|
" (abort already in progress)" : "");
|
||||||
if (synqe_flag(synqe, TPF_ABORT_SHUTDOWN))
|
if (synqe->flags & TPF_ABORT_SHUTDOWN)
|
||||||
return; /* abort already in progress */
|
return; /* abort already in progress */
|
||||||
synqe_set_flag(synqe, TPF_ABORT_SHUTDOWN);
|
synqe->flags |= TPF_ABORT_SHUTDOWN;
|
||||||
|
|
||||||
get_qids_from_mbuf(m, &txqid, &rxqid);
|
get_qids_from_mbuf(m, &txqid, &rxqid);
|
||||||
ofld_txq = &sc->sge.ofld_txq[txqid];
|
ofld_txq = &sc->sge.ofld_txq[txqid];
|
||||||
@ -318,7 +318,7 @@ send_reset_synqe(struct toedev *tod, struct synq_entry *synqe)
|
|||||||
flowc->mnemval[2].val = htobe32(pi->tx_chan);
|
flowc->mnemval[2].val = htobe32(pi->tx_chan);
|
||||||
flowc->mnemval[3].mnemonic = FW_FLOWC_MNEM_IQID;
|
flowc->mnemval[3].mnemonic = FW_FLOWC_MNEM_IQID;
|
||||||
flowc->mnemval[3].val = htobe32(ofld_rxq->iq.abs_id);
|
flowc->mnemval[3].val = htobe32(ofld_rxq->iq.abs_id);
|
||||||
synqe_set_flag(synqe, TPF_FLOWC_WR_SENT);
|
synqe->flags |= TPF_FLOWC_WR_SENT;
|
||||||
|
|
||||||
/* ... then ABORT request */
|
/* ... then ABORT request */
|
||||||
INIT_TP_WR_MIT_CPL(req, CPL_ABORT_REQ, synqe->tid);
|
INIT_TP_WR_MIT_CPL(req, CPL_ABORT_REQ, synqe->tid);
|
||||||
@ -515,7 +515,7 @@ release_synqe(struct synq_entry *synqe)
|
|||||||
{
|
{
|
||||||
|
|
||||||
if (refcount_release(&synqe->refcnt)) {
|
if (refcount_release(&synqe->refcnt)) {
|
||||||
int needfree = synqe_flag(synqe, TPF_SYNQE_NEEDFREE);
|
int needfree = synqe->flags & TPF_SYNQE_NEEDFREE;
|
||||||
|
|
||||||
m_freem(synqe->syn);
|
m_freem(synqe->syn);
|
||||||
if (needfree)
|
if (needfree)
|
||||||
@ -740,7 +740,7 @@ do_abort_req_synqe(struct sge_iq *iq, const struct rss_header *rss,
|
|||||||
* cleaning up resources. Otherwise we tear everything down right here
|
* cleaning up resources. Otherwise we tear everything down right here
|
||||||
* right now. We owe the T4 a CPL_ABORT_RPL no matter what.
|
* right now. We owe the T4 a CPL_ABORT_RPL no matter what.
|
||||||
*/
|
*/
|
||||||
if (synqe_flag(synqe, TPF_ABORT_SHUTDOWN)) {
|
if (synqe->flags & TPF_ABORT_SHUTDOWN) {
|
||||||
INP_WUNLOCK(inp);
|
INP_WUNLOCK(inp);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
@ -775,7 +775,7 @@ do_abort_rpl_synqe(struct sge_iq *iq, const struct rss_header *rss,
|
|||||||
__func__, tid, synqe, synqe->flags, synqe->lctx, cpl->status);
|
__func__, tid, synqe, synqe->flags, synqe->lctx, cpl->status);
|
||||||
|
|
||||||
INP_WLOCK(inp);
|
INP_WLOCK(inp);
|
||||||
KASSERT(synqe_flag(synqe, TPF_ABORT_SHUTDOWN),
|
KASSERT(synqe->flags & TPF_ABORT_SHUTDOWN,
|
||||||
("%s: wasn't expecting abort reply for synqe %p (0x%x)",
|
("%s: wasn't expecting abort reply for synqe %p (0x%x)",
|
||||||
__func__, synqe, synqe->flags));
|
__func__, synqe, synqe->flags));
|
||||||
|
|
||||||
@ -798,12 +798,12 @@ t4_offload_socket(struct toedev *tod, void *arg, struct socket *so)
|
|||||||
|
|
||||||
INP_INFO_LOCK_ASSERT(&V_tcbinfo); /* prevents bad race with accept() */
|
INP_INFO_LOCK_ASSERT(&V_tcbinfo); /* prevents bad race with accept() */
|
||||||
INP_WLOCK_ASSERT(inp);
|
INP_WLOCK_ASSERT(inp);
|
||||||
KASSERT(synqe_flag(synqe, TPF_SYNQE),
|
KASSERT(synqe->flags & TPF_SYNQE,
|
||||||
("%s: %p not a synq_entry?", __func__, arg));
|
("%s: %p not a synq_entry?", __func__, arg));
|
||||||
|
|
||||||
offload_socket(so, toep);
|
offload_socket(so, toep);
|
||||||
make_established(toep, cpl->snd_isn, cpl->rcv_isn, cpl->tcp_opt);
|
make_established(toep, cpl->snd_isn, cpl->rcv_isn, cpl->tcp_opt);
|
||||||
toepcb_set_flag(toep, TPF_CPL_PENDING);
|
toep->flags |= TPF_CPL_PENDING;
|
||||||
update_tid(sc, synqe->tid, toep);
|
update_tid(sc, synqe->tid, toep);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -843,13 +843,11 @@ mbuf_to_synqe(struct mbuf *m)
|
|||||||
synqe = malloc(sizeof(*synqe), M_CXGBE, M_NOWAIT);
|
synqe = malloc(sizeof(*synqe), M_CXGBE, M_NOWAIT);
|
||||||
if (synqe == NULL)
|
if (synqe == NULL)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
} else
|
synqe->flags = TPF_SYNQE | TPF_SYNQE_NEEDFREE;
|
||||||
|
} else {
|
||||||
synqe = (void *)(m->m_data + m->m_len + tspace - sizeof(*synqe));
|
synqe = (void *)(m->m_data + m->m_len + tspace - sizeof(*synqe));
|
||||||
|
synqe->flags = TPF_SYNQE;
|
||||||
synqe->flags = 0;
|
}
|
||||||
synqe_set_flag(synqe, TPF_SYNQE);
|
|
||||||
if (tspace < len)
|
|
||||||
synqe_set_flag(synqe, TPF_SYNQE_NEEDFREE);
|
|
||||||
|
|
||||||
return (synqe);
|
return (synqe);
|
||||||
}
|
}
|
||||||
@ -1115,7 +1113,7 @@ do_pass_accept_req(struct sge_iq *iq, const struct rss_header *rss,
|
|||||||
INIT_TP_WR_MIT_CPL(rpl, CPL_PASS_ACCEPT_RPL, tid);
|
INIT_TP_WR_MIT_CPL(rpl, CPL_PASS_ACCEPT_RPL, tid);
|
||||||
if (sc->tt.ddp && (so->so_options & SO_NO_DDP) == 0) {
|
if (sc->tt.ddp && (so->so_options & SO_NO_DDP) == 0) {
|
||||||
ulp_mode = ULP_MODE_TCPDDP;
|
ulp_mode = ULP_MODE_TCPDDP;
|
||||||
synqe_set_flag(synqe, TPF_SYNQE_TCPDDP);
|
synqe->flags |= TPF_SYNQE_TCPDDP;
|
||||||
} else
|
} else
|
||||||
ulp_mode = ULP_MODE_NONE;
|
ulp_mode = ULP_MODE_NONE;
|
||||||
rpl->opt0 = calc_opt0(so, pi, e, mtu_idx, rscale, rx_credits, ulp_mode);
|
rpl->opt0 = calc_opt0(so, pi, e, mtu_idx, rscale, rx_credits, ulp_mode);
|
||||||
@ -1160,7 +1158,7 @@ do_pass_accept_req(struct sge_iq *iq, const struct rss_header *rss,
|
|||||||
INP_WLOCK(inp);
|
INP_WLOCK(inp);
|
||||||
if (__predict_false(inp->inp_flags & INP_DROPPED)) {
|
if (__predict_false(inp->inp_flags & INP_DROPPED)) {
|
||||||
/* listener closed. synqe must have been aborted. */
|
/* listener closed. synqe must have been aborted. */
|
||||||
KASSERT(synqe_flag(synqe, TPF_ABORT_SHUTDOWN),
|
KASSERT(synqe->flags & TPF_ABORT_SHUTDOWN,
|
||||||
("%s: listener %p closed but synqe %p not aborted",
|
("%s: listener %p closed but synqe %p not aborted",
|
||||||
__func__, inp, synqe));
|
__func__, inp, synqe));
|
||||||
|
|
||||||
@ -1178,7 +1176,7 @@ do_pass_accept_req(struct sge_iq *iq, const struct rss_header *rss,
|
|||||||
* that can only happen if the listener was closed and we just
|
* that can only happen if the listener was closed and we just
|
||||||
* checked for that.
|
* checked for that.
|
||||||
*/
|
*/
|
||||||
KASSERT(!synqe_flag(synqe, TPF_ABORT_SHUTDOWN),
|
KASSERT(!(synqe->flags & TPF_ABORT_SHUTDOWN),
|
||||||
("%s: synqe %p aborted, but listener %p not dropped.",
|
("%s: synqe %p aborted, but listener %p not dropped.",
|
||||||
__func__, synqe, inp));
|
__func__, synqe, inp));
|
||||||
|
|
||||||
@ -1275,7 +1273,7 @@ do_pass_establish(struct sge_iq *iq, const struct rss_header *rss,
|
|||||||
("%s: unexpected opcode 0x%x", __func__, opcode));
|
("%s: unexpected opcode 0x%x", __func__, opcode));
|
||||||
KASSERT(m == NULL, ("%s: wasn't expecting payload", __func__));
|
KASSERT(m == NULL, ("%s: wasn't expecting payload", __func__));
|
||||||
KASSERT(lctx->stid == stid, ("%s: lctx stid mismatch", __func__));
|
KASSERT(lctx->stid == stid, ("%s: lctx stid mismatch", __func__));
|
||||||
KASSERT(synqe_flag(synqe, TPF_SYNQE),
|
KASSERT(synqe->flags & TPF_SYNQE,
|
||||||
("%s: tid %u (ctx %p) not a synqe", __func__, tid, synqe));
|
("%s: tid %u (ctx %p) not a synqe", __func__, tid, synqe));
|
||||||
|
|
||||||
INP_INFO_WLOCK(&V_tcbinfo); /* for syncache_expand */
|
INP_INFO_WLOCK(&V_tcbinfo); /* for syncache_expand */
|
||||||
@ -1292,7 +1290,7 @@ do_pass_establish(struct sge_iq *iq, const struct rss_header *rss,
|
|||||||
* on the lctx's synq. do_abort_rpl for the tid is responsible
|
* on the lctx's synq. do_abort_rpl for the tid is responsible
|
||||||
* for cleaning up.
|
* for cleaning up.
|
||||||
*/
|
*/
|
||||||
KASSERT(synqe_flag(synqe, TPF_ABORT_SHUTDOWN),
|
KASSERT(synqe->flags & TPF_ABORT_SHUTDOWN,
|
||||||
("%s: listen socket dropped but tid %u not aborted.",
|
("%s: listen socket dropped but tid %u not aborted.",
|
||||||
__func__, tid));
|
__func__, tid));
|
||||||
|
|
||||||
@ -1322,7 +1320,7 @@ reset:
|
|||||||
}
|
}
|
||||||
toep->tid = tid;
|
toep->tid = tid;
|
||||||
toep->l2te = &sc->l2t->l2tab[synqe->l2e_idx];
|
toep->l2te = &sc->l2t->l2tab[synqe->l2e_idx];
|
||||||
if (synqe_flag(synqe, TPF_SYNQE_TCPDDP))
|
if (synqe->flags & TPF_SYNQE_TCPDDP)
|
||||||
set_tcpddp_ulp_mode(toep);
|
set_tcpddp_ulp_mode(toep);
|
||||||
else
|
else
|
||||||
toep->ulp_mode = ULP_MODE_NONE;
|
toep->ulp_mode = ULP_MODE_NONE;
|
||||||
|
@ -141,9 +141,9 @@ void
|
|||||||
free_toepcb(struct toepcb *toep)
|
free_toepcb(struct toepcb *toep)
|
||||||
{
|
{
|
||||||
|
|
||||||
KASSERT(toepcb_flag(toep, TPF_ATTACHED) == 0,
|
KASSERT(!(toep->flags & TPF_ATTACHED),
|
||||||
("%s: attached to an inpcb", __func__));
|
("%s: attached to an inpcb", __func__));
|
||||||
KASSERT(toepcb_flag(toep, TPF_CPL_PENDING) == 0,
|
KASSERT(!(toep->flags & TPF_CPL_PENDING),
|
||||||
("%s: CPL pending", __func__));
|
("%s: CPL pending", __func__));
|
||||||
|
|
||||||
free(toep, M_CXGBE);
|
free(toep, M_CXGBE);
|
||||||
@ -181,7 +181,7 @@ offload_socket(struct socket *so, struct toepcb *toep)
|
|||||||
|
|
||||||
/* Install an extra hold on inp */
|
/* Install an extra hold on inp */
|
||||||
toep->inp = inp;
|
toep->inp = inp;
|
||||||
toepcb_set_flag(toep, TPF_ATTACHED);
|
toep->flags |= TPF_ATTACHED;
|
||||||
in_pcbref(inp);
|
in_pcbref(inp);
|
||||||
|
|
||||||
/* Add the TOE PCB to the active list */
|
/* Add the TOE PCB to the active list */
|
||||||
@ -216,7 +216,7 @@ undo_offload_socket(struct socket *so)
|
|||||||
tp->t_flags &= ~TF_TOE;
|
tp->t_flags &= ~TF_TOE;
|
||||||
|
|
||||||
toep->inp = NULL;
|
toep->inp = NULL;
|
||||||
toepcb_clr_flag(toep, TPF_ATTACHED);
|
toep->flags &= ~TPF_ATTACHED;
|
||||||
if (in_pcbrele_wlocked(inp))
|
if (in_pcbrele_wlocked(inp))
|
||||||
panic("%s: inp freed.", __func__);
|
panic("%s: inp freed.", __func__);
|
||||||
|
|
||||||
@ -232,9 +232,9 @@ release_offload_resources(struct toepcb *toep)
|
|||||||
struct adapter *sc = td_adapter(td);
|
struct adapter *sc = td_adapter(td);
|
||||||
int tid = toep->tid;
|
int tid = toep->tid;
|
||||||
|
|
||||||
KASSERT(toepcb_flag(toep, TPF_CPL_PENDING) == 0,
|
KASSERT(!(toep->flags & TPF_CPL_PENDING),
|
||||||
("%s: %p has CPL pending.", __func__, toep));
|
("%s: %p has CPL pending.", __func__, toep));
|
||||||
KASSERT(toepcb_flag(toep, TPF_ATTACHED) == 0,
|
KASSERT(!(toep->flags & TPF_ATTACHED),
|
||||||
("%s: %p is still attached.", __func__, toep));
|
("%s: %p is still attached.", __func__, toep));
|
||||||
|
|
||||||
CTR4(KTR_CXGBE, "%s: toep %p (tid %d, l2te %p)",
|
CTR4(KTR_CXGBE, "%s: toep %p (tid %d, l2te %p)",
|
||||||
@ -277,7 +277,7 @@ t4_pcb_detach(struct toedev *tod __unused, struct tcpcb *tp)
|
|||||||
INP_WLOCK_ASSERT(inp);
|
INP_WLOCK_ASSERT(inp);
|
||||||
|
|
||||||
KASSERT(toep != NULL, ("%s: toep is NULL", __func__));
|
KASSERT(toep != NULL, ("%s: toep is NULL", __func__));
|
||||||
KASSERT(toepcb_flag(toep, TPF_ATTACHED),
|
KASSERT(toep->flags & TPF_ATTACHED,
|
||||||
("%s: not attached", __func__));
|
("%s: not attached", __func__));
|
||||||
|
|
||||||
#ifdef KTR
|
#ifdef KTR
|
||||||
@ -295,9 +295,9 @@ t4_pcb_detach(struct toedev *tod __unused, struct tcpcb *tp)
|
|||||||
|
|
||||||
tp->t_toe = NULL;
|
tp->t_toe = NULL;
|
||||||
tp->t_flags &= ~TF_TOE;
|
tp->t_flags &= ~TF_TOE;
|
||||||
toepcb_clr_flag(toep, TPF_ATTACHED);
|
toep->flags &= ~TPF_ATTACHED;
|
||||||
|
|
||||||
if (toepcb_flag(toep, TPF_CPL_PENDING) == 0)
|
if (!(toep->flags & TPF_CPL_PENDING))
|
||||||
release_offload_resources(toep);
|
release_offload_resources(toep);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -312,16 +312,16 @@ final_cpl_received(struct toepcb *toep)
|
|||||||
|
|
||||||
KASSERT(inp != NULL, ("%s: inp is NULL", __func__));
|
KASSERT(inp != NULL, ("%s: inp is NULL", __func__));
|
||||||
INP_WLOCK_ASSERT(inp);
|
INP_WLOCK_ASSERT(inp);
|
||||||
KASSERT(toepcb_flag(toep, TPF_CPL_PENDING),
|
KASSERT(toep->flags & TPF_CPL_PENDING,
|
||||||
("%s: CPL not pending already?", __func__));
|
("%s: CPL not pending already?", __func__));
|
||||||
|
|
||||||
CTR6(KTR_CXGBE, "%s: tid %d, toep %p (0x%x), inp %p (0x%x)",
|
CTR6(KTR_CXGBE, "%s: tid %d, toep %p (0x%x), inp %p (0x%x)",
|
||||||
__func__, toep->tid, toep, toep->flags, inp, inp->inp_flags);
|
__func__, toep->tid, toep, toep->flags, inp, inp->inp_flags);
|
||||||
|
|
||||||
toep->inp = NULL;
|
toep->inp = NULL;
|
||||||
toepcb_clr_flag(toep, TPF_CPL_PENDING);
|
toep->flags &= ~TPF_CPL_PENDING;
|
||||||
|
|
||||||
if (toepcb_flag(toep, TPF_ATTACHED) == 0)
|
if (!(toep->flags & TPF_ATTACHED))
|
||||||
release_offload_resources(toep);
|
release_offload_resources(toep);
|
||||||
|
|
||||||
if (!in_pcbrele_wlocked(inp))
|
if (!in_pcbrele_wlocked(inp))
|
||||||
|
@ -55,17 +55,17 @@
|
|||||||
|
|
||||||
/* TOE PCB flags */
|
/* TOE PCB flags */
|
||||||
enum {
|
enum {
|
||||||
TPF_ATTACHED, /* a tcpcb refers to this toepcb */
|
TPF_ATTACHED = (1 << 0), /* a tcpcb refers to this toepcb */
|
||||||
TPF_FLOWC_WR_SENT, /* firmware flow context WR sent */
|
TPF_FLOWC_WR_SENT = (1 << 1), /* firmware flow context WR sent */
|
||||||
TPF_TX_DATA_SENT, /* some data sent */
|
TPF_TX_DATA_SENT = (1 << 2), /* some data sent */
|
||||||
TPF_TX_SUSPENDED, /* tx suspended for lack of resources */
|
TPF_TX_SUSPENDED = (1 << 3), /* tx suspended for lack of resources */
|
||||||
TPF_SEND_FIN, /* send FIN after sending all pending data */
|
TPF_SEND_FIN = (1 << 4), /* send FIN after all pending data */
|
||||||
TPF_FIN_SENT, /* FIN has been sent */
|
TPF_FIN_SENT = (1 << 5), /* FIN has been sent */
|
||||||
TPF_ABORT_SHUTDOWN, /* connection abort is in progress */
|
TPF_ABORT_SHUTDOWN = (1 << 6), /* connection abort is in progress */
|
||||||
TPF_CPL_PENDING, /* haven't received the last CPL */
|
TPF_CPL_PENDING = (1 << 7), /* haven't received the last CPL */
|
||||||
TPF_SYNQE, /* synq_entry, not really a toepcb */
|
TPF_SYNQE = (1 << 8), /* synq_entry, not really a toepcb */
|
||||||
TPF_SYNQE_NEEDFREE, /* synq_entry was allocated externally */
|
TPF_SYNQE_NEEDFREE = (1 << 9), /* synq_entry was malloc'd separately */
|
||||||
TPF_SYNQE_TCPDDP, /* ulp_mode TCPDDP when toepcb is allocated */
|
TPF_SYNQE_TCPDDP = (1 << 10), /* ulp_mode TCPDDP in toepcb */
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@ -134,27 +134,6 @@ struct flowc_tx_params {
|
|||||||
unsigned int mss;
|
unsigned int mss;
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline int
|
|
||||||
toepcb_flag(struct toepcb *toep, int flag)
|
|
||||||
{
|
|
||||||
|
|
||||||
return isset(&toep->flags, flag);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void
|
|
||||||
toepcb_set_flag(struct toepcb *toep, int flag)
|
|
||||||
{
|
|
||||||
|
|
||||||
setbit(&toep->flags, flag);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void
|
|
||||||
toepcb_clr_flag(struct toepcb *toep, int flag)
|
|
||||||
{
|
|
||||||
|
|
||||||
clrbit(&toep->flags, flag);
|
|
||||||
}
|
|
||||||
|
|
||||||
#define DDP_RETRY_WAIT 5 /* seconds to wait before re-enabling DDP */
|
#define DDP_RETRY_WAIT 5 /* seconds to wait before re-enabling DDP */
|
||||||
#define DDP_LOW_SCORE 1
|
#define DDP_LOW_SCORE 1
|
||||||
#define DDP_HIGH_SCORE 3
|
#define DDP_HIGH_SCORE 3
|
||||||
@ -186,27 +165,6 @@ struct synq_entry {
|
|||||||
uint16_t rcv_bufsize;
|
uint16_t rcv_bufsize;
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline int
|
|
||||||
synqe_flag(struct synq_entry *synqe, int flag)
|
|
||||||
{
|
|
||||||
|
|
||||||
return isset(&synqe->flags, flag);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void
|
|
||||||
synqe_set_flag(struct synq_entry *synqe, int flag)
|
|
||||||
{
|
|
||||||
|
|
||||||
setbit(&synqe->flags, flag);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void
|
|
||||||
synqe_clr_flag(struct synq_entry *synqe, int flag)
|
|
||||||
{
|
|
||||||
|
|
||||||
clrbit(&synqe->flags, flag);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* listen_ctx flags */
|
/* listen_ctx flags */
|
||||||
#define LCTX_RPL_PENDING 1 /* waiting for a CPL_PASS_OPEN_RPL */
|
#define LCTX_RPL_PENDING 1 /* waiting for a CPL_PASS_OPEN_RPL */
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user