Lines Matching full:transfer

752  * cxl_mem_abort_fw_xfer - Abort an in-progress FW transfer
755 * Abort an in-progress firmware transfer for the device specified.
759 * See CXL-3.0 8.2.9.3.2 Transfer FW
763 struct cxl_mbox_transfer_fw *transfer; in cxl_mem_abort_fw_xfer() local
767 transfer = kzalloc(struct_size(transfer, data, 0), GFP_KERNEL); in cxl_mem_abort_fw_xfer()
768 if (!transfer) in cxl_mem_abort_fw_xfer()
774 .size_in = sizeof(*transfer), in cxl_mem_abort_fw_xfer()
775 .payload_in = transfer, in cxl_mem_abort_fw_xfer()
780 transfer->action = CXL_FW_TRANSFER_ACTION_ABORT; in cxl_mem_abort_fw_xfer()
783 kfree(transfer); in cxl_mem_abort_fw_xfer()
803 dev_err(&cxlmd->dev, "Error aborting FW transfer: %d\n", rc); in cxl_fw_do_cancel()
812 struct cxl_mbox_transfer_fw *transfer; in cxl_fw_prepare() local
817 mds->fw.oneshot = struct_size(transfer, data, size) < in cxl_fw_prepare()
839 struct cxl_mbox_transfer_fw *transfer; in cxl_fw_write() local
850 "misaligned offset for FW transfer slice (%u)\n", in cxl_fw_write()
856 * Pick transfer size based on mds->payload_size @size must bw 128-byte in cxl_fw_write()
858 * sizeof(*transfer) is 128. These constraints imply that @cur_size in cxl_fw_write()
861 cur_size = min_t(size_t, size, mds->payload_size - sizeof(*transfer)); in cxl_fw_write()
864 size_in = struct_size(transfer, data, cur_size); in cxl_fw_write()
876 /* Do the transfer via mailbox cmd */ in cxl_fw_write()
877 transfer = kzalloc(size_in, GFP_KERNEL); in cxl_fw_write()
878 if (!transfer) in cxl_fw_write()
881 transfer->offset = cpu_to_le32(offset / CXL_FW_TRANSFER_ALIGNMENT); in cxl_fw_write()
882 memcpy(transfer->data, data + offset, cur_size); in cxl_fw_write()
884 transfer->action = CXL_FW_TRANSFER_ACTION_FULL; in cxl_fw_write()
885 transfer->slot = mds->fw.next_slot; in cxl_fw_write()
888 transfer->action = CXL_FW_TRANSFER_ACTION_INITIATE; in cxl_fw_write()
890 transfer->action = CXL_FW_TRANSFER_ACTION_END; in cxl_fw_write()
891 transfer->slot = mds->fw.next_slot; in cxl_fw_write()
893 transfer->action = CXL_FW_TRANSFER_ACTION_CONTINUE; in cxl_fw_write()
900 .payload_in = transfer, in cxl_fw_write()
929 kfree(transfer); in cxl_fw_write()