// SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2010 Cisco Systems, Inc. * * Portions based on tcm_loop_fabric_scsi.c and libfc/fc_fcp.c * * Copyright (c) 2007 Intel Corporation. All rights reserved. * Copyright (c) 2008 Red Hat, Inc. All rights reserved. * Copyright (c) 2008 Mike Christie * Copyright (c) 2009 Rising Tide, Inc. * Copyright (c) 2009 Linux-iSCSI.org * Copyright (c) 2009 Nicholas A. Bellinger <[email protected]> */ /* XXX TBD some includes may be extraneous */ #include <linux/module.h> #include <linux/moduleparam.h> #include <linux/utsname.h> #include <linux/init.h> #include <linux/slab.h> #include <linux/kthread.h> #include <linux/types.h> #include <linux/string.h> #include <linux/configfs.h> #include <linux/ctype.h> #include <linux/hash.h> #include <linux/ratelimit.h> #include <linux/unaligned.h> #include <scsi/libfc.h> #include <target/target_core_base.h> #include <target/target_core_fabric.h> #include "tcm_fc.h" /* * Deliver read data back to initiator. * XXX TBD handle resource problems later. */ int ft_queue_data_in(struct se_cmd *se_cmd) { … } static void ft_execute_work(struct work_struct *work) { … } /* * Receive write data frame. */ void ft_recv_write_data(struct ft_cmd *cmd, struct fc_frame *fp) { … } /* * Handle and cleanup any HW specific resources if * received ABORTS, errors, timeouts. */ void ft_invl_hw_context(struct ft_cmd *cmd) { … }