Lines Matching defs:pdu
151 nvmf_tcp_write_pdu(struct nvmf_tcp_qpair *qp, const void *pdu, size_t len)
156 cp = pdu;
225 nvmf_tcp_validate_pdu(struct nvmf_tcp_qpair *qp, struct nvmf_tcp_rxpdu *pdu,
236 ch = pdu->hdr;
281 pdu->data_len = data_len;
309 nvmf_tcp_read_pdu(struct nvmf_tcp_qpair *qp, struct nvmf_tcp_rxpdu *pdu)
315 memset(pdu, 0, sizeof(*pdu));
327 pdu->hdr = &ch;
328 error = nvmf_tcp_validate_pdu(qp, pdu, sizeof(ch));
329 pdu->hdr = NULL;
335 pdu->hdr = malloc(plen);
336 memcpy(pdu->hdr, &ch, sizeof(ch));
337 error = nvmf_tcp_read_buffer(qp->s, pdu->hdr + 1, plen - sizeof(ch));
340 error = nvmf_tcp_validate_pdu(qp, pdu, plen);
342 free(pdu->hdr);
343 pdu->hdr = NULL;
349 nvmf_tcp_free_pdu(struct nvmf_tcp_rxpdu *pdu)
351 free(pdu->hdr);
352 pdu->hdr = NULL;
356 nvmf_tcp_handle_term_req(struct nvmf_tcp_rxpdu *pdu)
360 hdr = (void *)pdu->hdr;
364 nvmf_tcp_free_pdu(pdu);
370 struct nvmf_tcp_rxpdu *pdu)
376 cmd = (void *)pdu->hdr;
383 tc->rx_pdu = *pdu;
391 struct nvmf_tcp_rxpdu *pdu)
397 rsp = (void *)pdu->hdr;
405 tc->rx_pdu = *pdu;
496 nvmf_tcp_handle_h2c_data(struct nvmf_tcp_qpair *qp, struct nvmf_tcp_rxpdu *pdu)
503 h2c = (void *)pdu->hdr;
507 pdu->hdr, le32toh(pdu->hdr->plen), pdu->hdr->hlen);
508 nvmf_tcp_free_pdu(pdu);
516 offsetof(struct nvme_tcp_h2c_data_hdr, ttag), pdu->hdr,
517 le32toh(pdu->hdr->plen), pdu->hdr->hlen);
518 nvmf_tcp_free_pdu(pdu);
523 if (data_len != pdu->data_len) {
526 offsetof(struct nvme_tcp_h2c_data_hdr, datal), pdu->hdr,
527 le32toh(pdu->hdr->plen), pdu->hdr->hlen);
528 nvmf_tcp_free_pdu(pdu);
537 pdu->hdr, le32toh(pdu->hdr->plen), pdu->hdr->hlen);
538 nvmf_tcp_free_pdu(pdu);
544 NVME_TCP_TERM_REQ_FES_PDU_SEQUENCE_ERROR, 0, pdu->hdr,
545 le32toh(pdu->hdr->plen), pdu->hdr->hlen);
546 nvmf_tcp_free_pdu(pdu);
551 ((pdu->hdr->flags & NVME_TCP_H2C_DATA_FLAGS_LAST_PDU) != 0)) {
553 NVME_TCP_TERM_REQ_FES_PDU_SEQUENCE_ERROR, 0, pdu->hdr,
554 le32toh(pdu->hdr->plen), pdu->hdr->hlen);
555 nvmf_tcp_free_pdu(pdu);
561 icd = (const char *)pdu->hdr + pdu->hdr->pdo;
564 nvmf_tcp_free_pdu(pdu);
569 nvmf_tcp_handle_c2h_data(struct nvmf_tcp_qpair *qp, struct nvmf_tcp_rxpdu *pdu)
576 c2h = (void *)pdu->hdr;
586 offsetof(struct nvme_tcp_c2h_data_hdr, cccid), pdu->hdr,
587 le32toh(pdu->hdr->plen), pdu->hdr->hlen);
588 nvmf_tcp_free_pdu(pdu);
593 if (data_len != pdu->data_len) {
596 offsetof(struct nvme_tcp_c2h_data_hdr, datal), pdu->hdr,
597 le32toh(pdu->hdr->plen), pdu->hdr->hlen);
598 nvmf_tcp_free_pdu(pdu);
607 pdu->hdr, le32toh(pdu->hdr->plen), pdu->hdr->hlen);
608 nvmf_tcp_free_pdu(pdu);
614 NVME_TCP_TERM_REQ_FES_PDU_SEQUENCE_ERROR, 0, pdu->hdr,
615 le32toh(pdu->hdr->plen), pdu->hdr->hlen);
616 nvmf_tcp_free_pdu(pdu);
621 ((pdu->hdr->flags & NVME_TCP_C2H_DATA_FLAGS_LAST_PDU) != 0)) {
623 NVME_TCP_TERM_REQ_FES_PDU_SEQUENCE_ERROR, 0, pdu->hdr,
624 le32toh(pdu->hdr->plen), pdu->hdr->hlen);
625 nvmf_tcp_free_pdu(pdu);
631 icd = (const char *)pdu->hdr + pdu->hdr->pdo;
634 if ((pdu->hdr->flags & NVME_TCP_C2H_DATA_FLAGS_SUCCESS) != 0) {
644 nvmf_tcp_free_pdu(pdu);
653 nvmf_tcp_free_pdu(pdu);
702 nvmf_tcp_handle_r2t(struct nvmf_tcp_qpair *qp, struct nvmf_tcp_rxpdu *pdu)
709 r2t = (void *)pdu->hdr;
715 offsetof(struct nvme_tcp_r2t_hdr, cccid), pdu->hdr,
716 le32toh(pdu->hdr->plen), pdu->hdr->hlen);
717 nvmf_tcp_free_pdu(pdu);
724 NVME_TCP_TERM_REQ_FES_PDU_SEQUENCE_ERROR, 0, pdu->hdr,
725 le32toh(pdu->hdr->plen), pdu->hdr->hlen);
726 nvmf_tcp_free_pdu(pdu);
738 pdu->hdr, le32toh(pdu->hdr->plen), pdu->hdr->hlen);
739 nvmf_tcp_free_pdu(pdu);
752 nvmf_tcp_free_pdu(pdu);
759 struct nvmf_tcp_rxpdu pdu;
762 error = nvmf_tcp_read_pdu(qp, &pdu);
766 switch (pdu.hdr->pdu_type) {
772 return (nvmf_tcp_handle_term_req(&pdu));
774 return (nvmf_tcp_save_command_capsule(qp, &pdu));
776 return (nvmf_tcp_save_response_capsule(qp, &pdu));
778 return (nvmf_tcp_handle_h2c_data(qp, &pdu));
780 return (nvmf_tcp_handle_c2h_data(qp, &pdu));
782 return (nvmf_tcp_handle_r2t(qp, &pdu));
790 const struct nvme_tcp_ic_req *pdu;
867 pdu = (const struct nvme_tcp_ic_req *)ch;
868 if (le16toh(pdu->pfv) != 0) {
870 le16toh(pdu->pfv));
877 if (pdu->hpda > NVME_TCP_HPDA_MAX) {
878 na_error(na, "NVMe/TCP: Unsupported PDA %u", pdu->hpda);
885 if (pdu->dgst.bits.reserved != 0) {
898 struct nvme_tcp_ic_req *pdu)
902 error = nvmf_tcp_read_buffer(qp->s, pdu, sizeof(*pdu));
909 return (nvmf_tcp_validate_ic_pdu(na, qp, &pdu->common, sizeof(*pdu)));
914 struct nvme_tcp_ic_resp *pdu)
918 error = nvmf_tcp_read_buffer(qp->s, pdu, sizeof(*pdu));
925 return (nvmf_tcp_validate_ic_pdu(na, qp, &pdu->common, sizeof(*pdu)));