Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /* QLogic FCoE Offload Driver
0003  * Copyright (c) 2016-2018 Cavium Inc.
0004  */
0005 #ifndef _FCOE_FW_FUNCS_H
0006 #define _FCOE_FW_FUNCS_H
0007 #include "drv_scsi_fw_funcs.h"
0008 #include "qedf_hsi.h"
0009 #include <linux/qed/qed_if.h>
0010 
0011 struct fcoe_task_params {
0012     /* Output parameter [set/filled by the HSI function] */
0013     struct fcoe_task_context *context;
0014 
0015     /* Output parameter [set/filled by the HSI function] */
0016     struct fcoe_wqe *sqe;
0017     enum fcoe_task_type task_type;
0018     u32 tx_io_size; /* in bytes */
0019     u32 rx_io_size; /* in bytes */
0020     u32 conn_cid;
0021     u16 itid;
0022     u8 cq_rss_number;
0023 
0024      /* Whether it's Tape device or not (0=Disk, 1=Tape) */
0025     u8 is_tape_device;
0026 };
0027 
0028 /**
0029  * @brief init_initiator_rw_fcoe_task - Initializes FCoE task context for
0030  * read/write task types and init fcoe_sqe
0031  *
0032  * @param task_params - Pointer to task parameters struct
0033  * @param sgl_task_params - Pointer to SGL task params
0034  * @param sense_data_buffer_phys_addr - Pointer to sense data buffer
0035  * @param task_retry_id - retry identification - Used only for Tape device
0036  * @param fcp_cmnd_payload - FCP CMD Payload
0037  */
0038 int init_initiator_rw_fcoe_task(struct fcoe_task_params *task_params,
0039     struct scsi_sgl_task_params *sgl_task_params,
0040     struct regpair sense_data_buffer_phys_addr,
0041     u32 task_retry_id,
0042     u8 fcp_cmd_payload[32]);
0043 
0044 /**
0045  * @brief init_initiator_midpath_fcoe_task - Initializes FCoE task context for
0046  * midpath/unsolicited task types and init fcoe_sqe
0047  *
0048  * @param task_params - Pointer to task parameters struct
0049  * @param mid_path_fc_header - FC header
0050  * @param tx_sgl_task_params - Pointer to Tx SGL task params
0051  * @param rx_sgl_task_params - Pointer to Rx SGL task params
0052  * @param fw_to_place_fc_header - Indication if the FW will place the FC header
0053  * in addition to the data arrives.
0054  */
0055 int init_initiator_midpath_unsolicited_fcoe_task(
0056     struct fcoe_task_params *task_params,
0057     struct fcoe_tx_mid_path_params *mid_path_fc_header,
0058     struct scsi_sgl_task_params *tx_sgl_task_params,
0059     struct scsi_sgl_task_params *rx_sgl_task_params,
0060     u8 fw_to_place_fc_header);
0061 
0062 /**
0063  * @brief init_initiator_abort_fcoe_task - Initializes FCoE task context for
0064  * abort task types and init fcoe_sqe
0065  *
0066  * @param task_params - Pointer to task parameters struct
0067  */
0068 int init_initiator_abort_fcoe_task(struct fcoe_task_params *task_params);
0069 
0070 /**
0071  * @brief init_initiator_cleanup_fcoe_task - Initializes FCoE task context for
0072  * cleanup task types and init fcoe_sqe
0073  *
0074  *
0075  * @param task_params - Pointer to task parameters struct
0076  */
0077 int init_initiator_cleanup_fcoe_task(struct fcoe_task_params *task_params);
0078 
0079 /**
0080  * @brief init_initiator_cleanup_fcoe_task - Initializes FCoE task context for
0081  * sequence recovery task types and init fcoe_sqe
0082  *
0083  *
0084  * @param task_params - Pointer to task parameters struct
0085  * @param desired_offset - The desired offest the task will be re-sent from
0086  */
0087 int init_initiator_sequence_recovery_fcoe_task(
0088     struct fcoe_task_params *task_params,
0089     u32 desired_offset);
0090 #endif