Lines Matching full:transfer
781 * cxl_mem_abort_fw_xfer - Abort an in-progress FW transfer
784 * Abort an in-progress firmware transfer for the device specified.
788 * See CXL-3.0 8.2.9.3.2 Transfer FW
793 struct cxl_mbox_transfer_fw *transfer;
797 transfer = kzalloc(struct_size(transfer, data, 0), GFP_KERNEL);
798 if (!transfer)
804 .size_in = sizeof(*transfer),
805 .payload_in = transfer,
810 transfer->action = CXL_FW_TRANSFER_ACTION_ABORT;
813 kfree(transfer);
833 dev_err(&cxlmd->dev, "Error aborting FW transfer: %d\n", rc);
842 struct cxl_mbox_transfer_fw *transfer;
848 mds->fw.oneshot = struct_size(transfer, data, size) <
871 struct cxl_mbox_transfer_fw *transfer;
882 "misaligned offset for FW transfer slice (%u)\n",
888 * Pick transfer size based on mds->payload_size @size must bw 128-byte
890 * sizeof(*transfer) is 128. These constraints imply that @cur_size
893 cur_size = min_t(size_t, size, cxl_mbox->payload_size - sizeof(*transfer));
896 size_in = struct_size(transfer, data, cur_size);
908 /* Do the transfer via mailbox cmd */
909 transfer = kzalloc(size_in, GFP_KERNEL);
910 if (!transfer)
913 transfer->offset = cpu_to_le32(offset / CXL_FW_TRANSFER_ALIGNMENT);
914 memcpy(transfer->data, data + offset, cur_size);
916 transfer->action = CXL_FW_TRANSFER_ACTION_FULL;
917 transfer->slot = mds->fw.next_slot;
920 transfer->action = CXL_FW_TRANSFER_ACTION_INITIATE;
922 transfer->action = CXL_FW_TRANSFER_ACTION_END;
923 transfer->slot = mds->fw.next_slot;
925 transfer->action = CXL_FW_TRANSFER_ACTION_CONTINUE;
932 .payload_in = transfer,
961 kfree(transfer);