Lines Matching refs:transfer
815 * cxl_mem_abort_fw_xfer - Abort an in-progress FW transfer
818 * Abort an in-progress firmware transfer for the device specified.
826 struct cxl_mbox_transfer_fw *transfer;
830 transfer = kzalloc(struct_size(transfer, data, 0), GFP_KERNEL);
831 if (!transfer)
837 .size_in = sizeof(*transfer),
838 .payload_in = transfer,
843 transfer->action = CXL_FW_TRANSFER_ACTION_ABORT;
846 kfree(transfer);
866 dev_err(&cxlmd->dev, "Error aborting FW transfer: %d\n", rc);
875 struct cxl_mbox_transfer_fw *transfer;
880 mds->fw.oneshot = struct_size(transfer, data, size) <
902 struct cxl_mbox_transfer_fw *transfer;
913 "misaligned offset for FW transfer slice (%u)\n",
919 * Pick transfer size based on mds->payload_size @size must bw 128-byte
921 * sizeof(*transfer) is 128. These constraints imply that @cur_size
924 cur_size = min_t(size_t, size, mds->payload_size - sizeof(*transfer));
927 size_in = struct_size(transfer, data, cur_size);
939 /* Do the transfer via mailbox cmd */
940 transfer = kzalloc(size_in, GFP_KERNEL);
941 if (!transfer)
944 transfer->offset = cpu_to_le32(offset / CXL_FW_TRANSFER_ALIGNMENT);
945 memcpy(transfer->data, data + offset, cur_size);
947 transfer->action = CXL_FW_TRANSFER_ACTION_FULL;
948 transfer->slot = mds->fw.next_slot;
951 transfer->action = CXL_FW_TRANSFER_ACTION_INITIATE;
953 transfer->action = CXL_FW_TRANSFER_ACTION_END;
954 transfer->slot = mds->fw.next_slot;
956 transfer->action = CXL_FW_TRANSFER_ACTION_CONTINUE;
963 .payload_in = transfer,
992 kfree(transfer);