Lines Matching defs:pkt

53 	struct rxe_pkt_info *pkt = SKB_TO_PKT(skb);
57 must_sched = (pkt->opcode == IB_OPCODE_RC_RDMA_READ_REQUEST) ||
81 struct rxe_pkt_info *pkt)
83 int diff = psn_compare(pkt->psn, qp->resp.psn);
108 if (pkt->mask & RXE_START_MASK) {
125 struct rxe_pkt_info *pkt)
132 switch (pkt->opcode) {
144 switch (pkt->opcode) {
154 switch (pkt->opcode) {
173 switch (pkt->opcode) {
184 switch (pkt->opcode) {
194 switch (pkt->opcode) {
215 struct rxe_pkt_info *pkt)
217 if (((pkt->mask & RXE_READ_MASK) &&
219 ((pkt->mask & (RXE_WRITE_MASK | RXE_ATOMIC_WRITE_MASK)) &&
221 ((pkt->mask & RXE_ATOMIC_MASK) &&
225 if (pkt->mask & RXE_FLUSH_MASK) {
226 u32 flush_type = feth_plt(pkt);
239 struct rxe_pkt_info *pkt)
243 if (!check_qp_attr_access(qp, pkt))
249 if ((pkt->mask & RXE_WRITE_MASK) &&
321 struct rxe_pkt_info *pkt)
325 if (pkt->mask & (RXE_READ_OR_ATOMIC_MASK | RXE_ATOMIC_WRITE_MASK)) {
336 if (pkt->mask & RXE_RWR_MASK) {
349 struct rxe_pkt_info *pkt)
357 if (pkt->mask & RXE_PAYLOAD_MASK && ((qp_type(qp) == IB_QPT_RC) ||
360 unsigned int payload = payload_size(pkt);
362 if ((pkt->mask & RXE_START_MASK) &&
363 (pkt->mask & RXE_END_MASK)) {
368 } else if ((pkt->mask & RXE_START_MASK) ||
369 (pkt->mask & RXE_MIDDLE_MASK)) {
374 } else if (pkt->mask & RXE_END_MASK) {
383 if (pkt->mask & RXE_RETH_MASK) {
384 if (reth_len(pkt) > (1U << 31)) {
390 if (pkt->mask & RXE_RDMA_OP_MASK)
401 static void qp_resp_from_reth(struct rxe_qp *qp, struct rxe_pkt_info *pkt)
403 unsigned int length = reth_len(pkt);
405 qp->resp.va = reth_va(pkt);
409 if (pkt->mask & RXE_READ_OR_WRITE_MASK && length == 0)
412 qp->resp.rkey = reth_rkey(pkt);
415 static void qp_resp_from_atmeth(struct rxe_qp *qp, struct rxe_pkt_info *pkt)
417 qp->resp.va = atmeth_va(pkt);
419 qp->resp.rkey = atmeth_rkey(pkt);
428 struct rxe_pkt_info *pkt)
444 if (pkt->mask & (RXE_READ_OR_WRITE_MASK | RXE_ATOMIC_WRITE_MASK)) {
445 if (pkt->mask & RXE_RETH_MASK)
446 qp_resp_from_reth(qp, pkt);
448 access = (pkt->mask & RXE_READ_MASK) ? IB_ACCESS_REMOTE_READ
450 } else if (pkt->mask & RXE_FLUSH_MASK) {
451 u32 flush_type = feth_plt(pkt);
453 if (pkt->mask & RXE_RETH_MASK)
454 qp_resp_from_reth(qp, pkt);
460 } else if (pkt->mask & RXE_ATOMIC_MASK) {
461 qp_resp_from_atmeth(qp, pkt);
471 if ((pkt->mask & RXE_READ_OR_WRITE_MASK) &&
472 (pkt->mask & RXE_RETH_MASK) && reth_len(pkt) == 0) {
480 pktlen = payload_size(pkt);
512 if (pkt->mask & RXE_FLUSH_MASK) {
516 if (feth_sel(pkt) == IB_FLUSH_MR)
526 if (pkt->mask & (RXE_WRITE_MASK | RXE_ATOMIC_WRITE_MASK)) {
528 if (pktlen != mtu || bth_pad(pkt)) {
537 if ((bth_pad(pkt) != (0x3 & (-resid)))) {
577 struct rxe_pkt_info *pkt)
581 int data_len = payload_size(pkt);
584 payload_addr(pkt), data_len, RXE_TO_MR_OBJ);
598 struct rxe_pkt_info *pkt,
619 pkts = max_t(u32, (reth_len(pkt) + qp->mtu - 1)/qp->mtu, 1);
620 res->first_psn = pkt->psn;
621 res->cur_psn = pkt->psn;
622 res->last_psn = (pkt->psn + pkts - 1) & BTH_PSN_MASK;
628 res->first_psn = pkt->psn;
629 res->last_psn = pkt->psn;
630 res->cur_psn = pkt->psn;
635 res->flush.type = feth_plt(pkt);
636 res->flush.level = feth_sel(pkt);
643 struct rxe_pkt_info *pkt)
653 res = rxe_prepare_res(qp, pkt, RXE_FLUSH_MASK);
678 qp->resp.psn = (pkt->psn + 1) & BTH_PSN_MASK;
681 qp->resp.opcode = pkt->opcode;
688 struct rxe_pkt_info *pkt)
695 res = rxe_prepare_res(qp, pkt, RXE_ATOMIC_MASK);
702 err = rxe_mr_do_atomic_op(mr, iova, pkt->opcode,
703 atmeth_comp(pkt),
704 atmeth_swap_add(pkt),
712 qp->resp.psn = (pkt->psn + 1) & BTH_PSN_MASK;
715 qp->resp.opcode = pkt->opcode;
723 struct rxe_pkt_info *pkt)
732 res = rxe_prepare_res(qp, pkt, RXE_ATOMIC_WRITE_MASK);
740 value = *(u64 *)payload_addr(pkt);
751 qp->resp.psn = (pkt->psn + 1) & BTH_PSN_MASK;
754 qp->resp.opcode = pkt->opcode;
980 static enum resp_states execute(struct rxe_qp *qp, struct rxe_pkt_info *pkt)
983 struct sk_buff *skb = PKT_TO_SKB(pkt);
986 if (pkt->mask & RXE_SEND_MASK) {
1002 err = send_data_in(qp, payload_addr(pkt), payload_size(pkt));
1005 } else if (pkt->mask & RXE_WRITE_MASK) {
1006 err = write_data_in(qp, pkt);
1009 } else if (pkt->mask & RXE_READ_MASK) {
1013 } else if (pkt->mask & RXE_ATOMIC_MASK) {
1015 } else if (pkt->mask & RXE_ATOMIC_WRITE_MASK) {
1017 } else if (pkt->mask & RXE_FLUSH_MASK) {
1024 if (pkt->mask & RXE_IETH_MASK) {
1025 u32 rkey = ieth_rkey(pkt);
1032 if (pkt->mask & RXE_END_MASK)
1037 qp->resp.psn = (pkt->psn + 1) & BTH_PSN_MASK;
1040 qp->resp.opcode = pkt->opcode;
1043 if (pkt->mask & RXE_COMP_MASK)
1052 struct rxe_pkt_info *pkt)
1078 wc->opcode = (pkt->mask & RXE_IMMDT_MASK &&
1079 pkt->mask & RXE_WRITE_MASK) ?
1081 wc->byte_len = (pkt->mask & RXE_IMMDT_MASK &&
1082 pkt->mask & RXE_WRITE_MASK) ?
1091 if (pkt->mask & RXE_IMMDT_MASK) {
1093 uwc->ex.imm_data = immdt_imm(pkt);
1096 if (pkt->mask & RXE_IETH_MASK) {
1098 uwc->ex.invalidate_rkey = ieth_rkey(pkt);
1101 if (pkt->mask & RXE_DETH_MASK)
1102 uwc->src_qp = deth_sqp(pkt);
1106 struct sk_buff *skb = PKT_TO_SKB(pkt);
1119 if (pkt->mask & RXE_IMMDT_MASK) {
1121 wc->ex.imm_data = immdt_imm(pkt);
1124 if (pkt->mask & RXE_IETH_MASK) {
1126 wc->ex.invalidate_rkey = ieth_rkey(pkt);
1129 if (pkt->mask & RXE_DETH_MASK)
1130 wc->src_qp = deth_sqp(pkt);
1146 if (rxe_cq_post(qp->rcq, &cqe, pkt ? bth_se(pkt) : 1))
1157 if (unlikely(!pkt))
1216 struct rxe_pkt_info *pkt)
1222 send_ack(qp, qp->resp.aeth_syndrome, pkt->psn);
1223 else if (pkt->mask & RXE_ATOMIC_MASK)
1224 send_atomic_ack(qp, AETH_ACK_UNLIMITED, pkt->psn);
1225 else if (pkt->mask & (RXE_FLUSH_MASK | RXE_ATOMIC_WRITE_MASK))
1226 send_read_response_ack(qp, AETH_ACK_UNLIMITED, pkt->psn);
1227 else if (bth_ack(pkt))
1228 send_ack(qp, AETH_ACK_UNLIMITED, pkt->psn);
1234 struct rxe_pkt_info *pkt)
1238 if (pkt) {
1273 struct rxe_pkt_info *pkt)
1278 if (pkt->mask & RXE_SEND_MASK ||
1279 pkt->mask & RXE_WRITE_MASK) {
1283 } else if (pkt->mask & RXE_FLUSH_MASK) {
1287 res = find_resource(qp, pkt->psn);
1290 res->cur_psn = pkt->psn;
1299 } else if (pkt->mask & RXE_READ_MASK) {
1302 res = find_resource(qp, pkt->psn);
1313 u64 iova = reth_va(pkt);
1314 u32 resid = reth_len(pkt);
1324 if (reth_rkey(pkt) != res->read.rkey) {
1329 res->cur_psn = pkt->psn;
1330 res->state = (pkt->psn == res->first_psn) ?
1349 res = find_resource(qp, pkt->psn);
1352 res->cur_psn = pkt->psn;
1354 rc = pkt->mask & RXE_ATOMIC_MASK ?
1492 struct rxe_pkt_info *pkt = NULL;
1516 state = get_req(qp, &pkt);
1519 state = check_psn(qp, pkt);
1522 state = check_op_seq(qp, pkt);
1525 state = check_op_valid(qp, pkt);
1528 state = check_resource(qp, pkt);
1531 state = rxe_resp_check_length(qp, pkt);
1534 state = check_rkey(qp, pkt);
1537 state = execute(qp, pkt);
1540 state = do_complete(qp, pkt);
1543 state = read_reply(qp, pkt);
1546 state = atomic_reply(qp, pkt);
1549 state = atomic_write_reply(qp, pkt);
1552 state = process_flush(qp, pkt);
1555 state = acknowledge(qp, pkt);
1558 state = cleanup(qp, pkt);
1561 state = duplicate_request(qp, pkt);
1590 pkt->psn);