]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/dev/qlnx/qlnxe/ecore_iscsi.h
ql*_def.h: fix QL_ALIGN parenthesization
[FreeBSD/FreeBSD.git] / sys / dev / qlnx / qlnxe / ecore_iscsi.h
1 /*
2  * Copyright (c) 2017-2018 Cavium, Inc. 
3  * All rights reserved.
4  *
5  *  Redistribution and use in source and binary forms, with or without
6  *  modification, are permitted provided that the following conditions
7  *  are met:
8  *
9  *  1. Redistributions of source code must retain the above copyright
10  *     notice, this list of conditions and the following disclaimer.
11  *  2. Redistributions in binary form must reproduce the above copyright
12  *     notice, this list of conditions and the following disclaimer in the
13  *     documentation and/or other materials provided with the distribution.
14  *
15  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16  *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17  *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18  *  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19  *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20  *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21  *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22  *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23  *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24  *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25  *  POSSIBILITY OF SUCH DAMAGE.
26  *
27  * $FreeBSD$
28  *
29  */
30
31 #ifndef __ECORE_ISCSI_H__
32 #define __ECORE_ISCSI_H__
33
34 #include "ecore.h"
35 #include "ecore_chain.h"
36 #include "ecore_hsi_common.h"
37 #include "tcp_common.h"
38 #include "ecore_hsi_iscsi.h"
39 #include "ecore_sp_commands.h"
40 #include "ecore_iscsi_api.h"
41
42 struct ecore_iscsi_info {
43         osal_spinlock_t  lock;
44         osal_list_t      free_list;
45         u16              max_num_outstanding_tasks;
46         void             *event_context;
47         iscsi_event_cb_t event_cb;
48 };
49
50 enum _ecore_status_t ecore_iscsi_alloc(struct ecore_hwfn *p_hwfn);
51
52 void ecore_iscsi_setup(struct ecore_hwfn *p_hwfn);
53
54 void ecore_iscsi_free(struct ecore_hwfn *p_hwfn);
55
56 void ecore_iscsi_free_connection(struct ecore_hwfn *p_hwfn,
57                                  struct ecore_iscsi_conn *p_conn);
58
59 /**
60  * @brief ecore_sp_iscsi_conn_offload - iSCSI connection offload
61  *
62  * This ramrod offloads iSCSI connection to FW
63  *
64  * @param p_path
65  * @param p_conn
66  * @param comp_mode
67  * @param comp_addr
68  *
69  * @return enum _ecore_status_t
70  */
71 enum _ecore_status_t
72 ecore_sp_iscsi_conn_offload(struct ecore_hwfn *p_hwfn,
73                             struct ecore_iscsi_conn *p_conn,
74                             enum spq_mode comp_mode,
75                             struct ecore_spq_comp_cb *p_comp_addr);
76
77 /**
78  * @brief ecore_sp_iscsi_conn_update - iSCSI connection update
79  *
80  * This ramrod updatess iSCSI ofloadedconnection in FW
81  *
82  * @param p_path
83  * @param p_conn
84  * @param comp_mode
85  * @param comp_addr
86  *
87  * @return enum _ecore_status_t
88  */
89 enum _ecore_status_t
90 ecore_sp_iscsi_conn_update(struct ecore_hwfn *p_hwfn,
91                            struct ecore_iscsi_conn *p_conn,
92                            enum spq_mode comp_mode,
93                            struct ecore_spq_comp_cb *p_comp_addr);
94
95 /**
96  * @brief ecore_sp_iscsi_mac_update - iSCSI connection's MAC update
97  *
98  * This ramrod updates remote MAC for iSCSI offloaded connection in FW
99  *
100  * @param p_path
101  * @param p_conn
102  * @param comp_mode
103  * @param comp_addr
104  *
105  * @return enum _ecore_status_t
106  */
107 enum _ecore_status_t
108 ecore_sp_iscsi_mac_update(struct ecore_hwfn *p_hwfn,
109                           struct ecore_iscsi_conn *p_conn,
110                           enum spq_mode comp_mode,
111                           struct ecore_spq_comp_cb *p_comp_addr);
112
113 /**
114  * @brief ecore_sp_iscsi_conn_terminate - iSCSI connection
115  *        terminate
116  *
117  * This ramrod deletes iSCSI offloaded connection in FW
118  *
119  * @param p_path
120  * @param p_conn
121  * @param comp_mode
122  * @param comp_addr
123  *
124  * @return enum _ecore_status_t
125  */
126 enum _ecore_status_t
127 ecore_sp_iscsi_conn_terminate(struct ecore_hwfn *p_hwfn,
128                               struct ecore_iscsi_conn *p_conn,
129                               enum spq_mode comp_mode,
130                               struct ecore_spq_comp_cb *p_comp_addr);
131
132 /**
133  * @brief ecore_sp_iscsi_conn_clear_sq - iSCSI connection
134  *        clear SQ
135  *
136  * This ramrod clears connection's SQ in FW
137  *
138  * @param p_path
139  * @param p_conn
140  * @param comp_mode
141  * @param comp_addr
142  *
143  * @return enum _ecore_status_t
144  */
145 enum _ecore_status_t
146 ecore_sp_iscsi_conn_clear_sq(struct ecore_hwfn *p_hwfn,
147                              struct ecore_iscsi_conn *p_conn,
148                              enum spq_mode comp_mode,
149                              struct ecore_spq_comp_cb *p_comp_addr);
150
151 #endif  /*__ECORE_ISCSI_H__*/
152