Lines Matching full:qp
12 /* check that QP matches packet opcode type and is in a valid state */
14 struct rxe_qp *qp) in check_type_state() argument
19 if (unlikely(!qp->valid)) in check_type_state()
24 switch (qp_type(qp)) { in check_type_state()
42 spin_lock_irqsave(&qp->state_lock, flags); in check_type_state()
44 if (unlikely(qp_state(qp) < IB_QPS_RTR)) { in check_type_state()
45 spin_unlock_irqrestore(&qp->state_lock, flags); in check_type_state()
49 if (unlikely(qp_state(qp) < IB_QPS_RTS)) { in check_type_state()
50 spin_unlock_irqrestore(&qp->state_lock, flags); in check_type_state()
54 spin_unlock_irqrestore(&qp->state_lock, flags); in check_type_state()
76 u32 qpn, struct rxe_qp *qp) in check_keys() argument
88 if (qp_type(qp) == IB_QPT_UD || qp_type(qp) == IB_QPT_GSI) { in check_keys()
89 u32 qkey = (qpn == 1) ? GSI_QKEY : qp->attr.qkey; in check_keys()
101 struct rxe_qp *qp) in check_addr() argument
105 if (qp_type(qp) != IB_QPT_RC && qp_type(qp) != IB_QPT_UC) in check_addr()
108 if (unlikely(pkt->port_num != qp->attr.port_num)) in check_addr()
113 &qp->pri_av.sgid_addr._sockaddr_in.sin_addr; in check_addr()
115 &qp->pri_av.dgid_addr._sockaddr_in.sin_addr; in check_addr()
123 &qp->pri_av.sgid_addr._sockaddr_in6.sin6_addr; in check_addr()
125 &qp->pri_av.dgid_addr._sockaddr_in6.sin6_addr; in check_addr()
139 struct rxe_qp *qp = NULL; in hdr_check() local
153 qp = rxe_pool_get_index(&rxe->qp_pool, index); in hdr_check()
154 if (unlikely(!qp)) in hdr_check()
157 err = check_type_state(rxe, pkt, qp); in hdr_check()
161 err = check_addr(rxe, pkt, qp); in hdr_check()
165 err = check_keys(rxe, pkt, qpn, qp); in hdr_check()
173 pkt->qp = qp; in hdr_check()
177 rxe_put(qp); in hdr_check()
185 rxe_resp_queue_pkt(pkt->qp, skb); in rxe_rcv_pkt()
187 rxe_comp_queue_pkt(pkt->qp, skb); in rxe_rcv_pkt()
195 struct rxe_qp *qp; in rxe_rcv_mcast_pkt() local
214 * single QP happen and just move on and try in rxe_rcv_mcast_pkt()
218 qp = mca->qp; in rxe_rcv_mcast_pkt()
220 /* validate qp for incoming packet */ in rxe_rcv_mcast_pkt()
221 err = check_type_state(rxe, pkt, qp); in rxe_rcv_mcast_pkt()
225 err = check_keys(rxe, pkt, bth_qpn(pkt), qp); in rxe_rcv_mcast_pkt()
229 /* for all but the last QP create a new clone of the in rxe_rcv_mcast_pkt()
230 * skb and pass to the QP. Pass the original skb to in rxe_rcv_mcast_pkt()
231 * the last QP in the list. in rxe_rcv_mcast_pkt()
247 cpkt->qp = qp; in rxe_rcv_mcast_pkt()
248 rxe_get(qp); in rxe_rcv_mcast_pkt()
251 pkt->qp = qp; in rxe_rcv_mcast_pkt()
252 rxe_get(qp); in rxe_rcv_mcast_pkt()
266 * QP in the list above in rxe_rcv_mcast_pkt()
330 pkt->qp = NULL; in rxe_rcv()
354 if (pkt->qp) in rxe_rcv()
355 rxe_put(pkt->qp); in rxe_rcv()