xref: /linux/drivers/scsi/qedf/drv_fcoe_fw_funcs.h (revision 03ab8e6297acd1bc0eedaa050e2a1635c576fd11)
1  /* SPDX-License-Identifier: GPL-2.0-only */
2  /* QLogic FCoE Offload Driver
3   * Copyright (c) 2016-2018 Cavium Inc.
4   */
5  #ifndef _FCOE_FW_FUNCS_H
6  #define _FCOE_FW_FUNCS_H
7  #include "drv_scsi_fw_funcs.h"
8  #include "qedf_hsi.h"
9  #include <linux/qed/qed_if.h>
10  
11  struct fcoe_task_params {
12  	/* Output parameter [set/filled by the HSI function] */
13  	struct fcoe_task_context *context;
14  
15  	/* Output parameter [set/filled by the HSI function] */
16  	struct fcoe_wqe *sqe;
17  	enum fcoe_task_type task_type;
18  	u32 tx_io_size; /* in bytes */
19  	u32 rx_io_size; /* in bytes */
20  	u32 conn_cid;
21  	u16 itid;
22  	u8 cq_rss_number;
23  
24  	 /* Whether it's Tape device or not (0=Disk, 1=Tape) */
25  	u8 is_tape_device;
26  };
27  
28  /**
29   * @brief init_initiator_rw_fcoe_task - Initializes FCoE task context for
30   * read/write task types and init fcoe_sqe
31   *
32   * @param task_params - Pointer to task parameters struct
33   * @param sgl_task_params - Pointer to SGL task params
34   * @param sense_data_buffer_phys_addr - Pointer to sense data buffer
35   * @param task_retry_id - retry identification - Used only for Tape device
36   * @param fcp_cmnd_payload - FCP CMD Payload
37   */
38  int init_initiator_rw_fcoe_task(struct fcoe_task_params *task_params,
39  	struct scsi_sgl_task_params *sgl_task_params,
40  	struct regpair sense_data_buffer_phys_addr,
41  	u32 task_retry_id,
42  	u8 fcp_cmd_payload[32]);
43  
44  /**
45   * @brief init_initiator_midpath_fcoe_task - Initializes FCoE task context for
46   * midpath/unsolicited task types and init fcoe_sqe
47   *
48   * @param task_params - Pointer to task parameters struct
49   * @param mid_path_fc_header - FC header
50   * @param tx_sgl_task_params - Pointer to Tx SGL task params
51   * @param rx_sgl_task_params - Pointer to Rx SGL task params
52   * @param fw_to_place_fc_header	- Indication if the FW will place the FC header
53   * in addition to the data arrives.
54   */
55  int init_initiator_midpath_unsolicited_fcoe_task(
56  	struct fcoe_task_params *task_params,
57  	struct fcoe_tx_mid_path_params *mid_path_fc_header,
58  	struct scsi_sgl_task_params *tx_sgl_task_params,
59  	struct scsi_sgl_task_params *rx_sgl_task_params,
60  	u8 fw_to_place_fc_header);
61  
62  /**
63   * @brief init_initiator_abort_fcoe_task - Initializes FCoE task context for
64   * abort task types and init fcoe_sqe
65   *
66   * @param task_params - Pointer to task parameters struct
67   */
68  int init_initiator_abort_fcoe_task(struct fcoe_task_params *task_params);
69  
70  /**
71   * @brief init_initiator_cleanup_fcoe_task - Initializes FCoE task context for
72   * cleanup task types and init fcoe_sqe
73   *
74   *
75   * @param task_params - Pointer to task parameters struct
76   */
77  int init_initiator_cleanup_fcoe_task(struct fcoe_task_params *task_params);
78  
79  /**
80   * @brief init_initiator_cleanup_fcoe_task - Initializes FCoE task context for
81   * sequence recovery task types and init fcoe_sqe
82   *
83   *
84   * @param task_params - Pointer to task parameters struct
85   * @param desired_offset - The desired offest the task will be re-sent from
86   */
87  int init_initiator_sequence_recovery_fcoe_task(
88  	struct fcoe_task_params *task_params,
89  	u32 desired_offset);
90  #endif
91