ecore_iscsi.h revision 337519
1169689Skan/*
2169689Skan * Copyright (c) 2017-2018 Cavium, Inc.
3169689Skan * All rights reserved.
4169689Skan *
5169689Skan *  Redistribution and use in source and binary forms, with or without
6169689Skan *  modification, are permitted provided that the following conditions
7169689Skan *  are met:
8169689Skan *
9169689Skan *  1. Redistributions of source code must retain the above copyright
10169689Skan *     notice, this list of conditions and the following disclaimer.
11169689Skan *  2. Redistributions in binary form must reproduce the above copyright
12169689Skan *     notice, this list of conditions and the following disclaimer in the
13169689Skan *     documentation and/or other materials provided with the distribution.
14169689Skan *
15169689Skan *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16169689Skan *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17169689Skan *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18169689Skan *  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19169689Skan *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20169689Skan *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21169689Skan *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22169689Skan *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23169689Skan *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24169689Skan *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25169689Skan *  POSSIBILITY OF SUCH DAMAGE.
26169689Skan *
27169689Skan * $FreeBSD: stable/10/sys/dev/qlnx/qlnxe/ecore_iscsi.h 337519 2018-08-09 01:39:47Z davidcs $
28169689Skan *
29169689Skan */
30169689Skan
31169689Skan#ifndef __ECORE_ISCSI_H__
32169689Skan#define __ECORE_ISCSI_H__
33169689Skan
34169689Skan#include "ecore.h"
35169689Skan#include "ecore_chain.h"
36169689Skan#include "ecore_hsi_common.h"
37169689Skan#include "tcp_common.h"
38169689Skan#include "ecore_hsi_iscsi.h"
39169689Skan#include "ecore_sp_commands.h"
40169689Skan#include "ecore_iscsi_api.h"
41169689Skan
42169689Skan#ifndef __EXTRACT__LINUX__H__
43169689Skanstruct ecore_iscsi_info {
44169689Skan	osal_spinlock_t	 lock;
45169689Skan	osal_list_t	 free_list;
46169689Skan	u16		 max_num_outstanding_tasks;
47169689Skan	void		 *event_context;
48169689Skan	iscsi_event_cb_t event_cb;
49169689Skan};
50169689Skan
51169689Skan#ifdef CONFIG_ECORE_ISCSI
52169689Skanenum _ecore_status_t ecore_iscsi_alloc(struct ecore_hwfn *p_hwfn);
53169689Skan
54169689Skanvoid ecore_iscsi_setup(struct ecore_hwfn *p_hwfn);
55169689Skan
56169689Skanvoid ecore_iscsi_free(struct ecore_hwfn *p_hwfn);
57169689Skan#else
58169689Skanstatic inline enum _ecore_status_t
59169689Skanecore_iscsi_alloc(struct ecore_hwfn OSAL_UNUSED *p_hwfn)
60169689Skan{
61169689Skan	return ECORE_INVAL;
62169689Skan}
63169689Skan
64169689Skanstatic inline void
65169689Skanecore_iscsi_setup(struct ecore_hwfn OSAL_UNUSED *p_hwfn) {}
66169689Skan
67169689Skanstatic inline void
68169689Skanecore_iscsi_free(struct ecore_hwfn OSAL_UNUSED *p_hwfn) {}
69169689Skan#endif
70169689Skan#endif
71169689Skan
72169689Skanvoid ecore_iscsi_free_connection(struct ecore_hwfn *p_hwfn,
73169689Skan				 struct ecore_iscsi_conn *p_conn);
74169689Skan
75169689Skan/**
76169689Skan * @brief ecore_sp_iscsi_conn_offload - iSCSI connection offload
77169689Skan *
78169689Skan * This ramrod offloads iSCSI connection to FW
79169689Skan *
80169689Skan * @param p_path
81169689Skan * @param p_conn
82169689Skan * @param comp_mode
83169689Skan * @param comp_addr
84169689Skan *
85169689Skan * @return enum _ecore_status_t
86169689Skan */
87169689Skanenum _ecore_status_t
88169689Skanecore_sp_iscsi_conn_offload(struct ecore_hwfn *p_hwfn,
89169689Skan			    struct ecore_iscsi_conn *p_conn,
90169689Skan			    enum spq_mode comp_mode,
91169689Skan			    struct ecore_spq_comp_cb *p_comp_addr);
92169689Skan
93169689Skan/**
94169689Skan * @brief ecore_sp_iscsi_conn_update - iSCSI connection update
95169689Skan *
96169689Skan * This ramrod updatess iSCSI ofloadedconnection in FW
97169689Skan *
98169689Skan * @param p_path
99169689Skan * @param p_conn
100169689Skan * @param comp_mode
101169689Skan * @param comp_addr
102169689Skan *
103169689Skan * @return enum _ecore_status_t
104169689Skan */
105169689Skanenum _ecore_status_t
106169689Skanecore_sp_iscsi_conn_update(struct ecore_hwfn *p_hwfn,
107169689Skan			   struct ecore_iscsi_conn *p_conn,
108169689Skan			   enum spq_mode comp_mode,
109169689Skan			   struct ecore_spq_comp_cb *p_comp_addr);
110169689Skan
111169689Skan/**
112169689Skan * @brief ecore_sp_iscsi_mac_update - iSCSI connection's MAC update
113169689Skan *
114169689Skan * This ramrod updates remote MAC for iSCSI offloaded connection in FW
115169689Skan *
116169689Skan * @param p_path
117169689Skan * @param p_conn
118169689Skan * @param comp_mode
119169689Skan * @param comp_addr
120169689Skan *
121169689Skan * @return enum _ecore_status_t
122169689Skan */
123169689Skanenum _ecore_status_t
124169689Skanecore_sp_iscsi_mac_update(struct ecore_hwfn *p_hwfn,
125169689Skan			  struct ecore_iscsi_conn *p_conn,
126169689Skan			  enum spq_mode comp_mode,
127169689Skan			  struct ecore_spq_comp_cb *p_comp_addr);
128169689Skan
129169689Skan  /**
130169689Skan * @brief ecore_sp_iscsi_mac_update - iSCSI connection's MAC update
131169689Skan *
132169689Skan * This ramrod updates remote MAC for iSCSI offloaded connection in FW
133169689Skan *
134169689Skan * @param p_path
135169689Skan * @param p_conn
136169689Skan * @param reset
137169689Skan * @param comp_mode
138169689Skan * @param comp_addr
139169689Skan *
140169689Skan * @return enum _ecore_status_t
141169689Skan */
142169689Skanenum _ecore_status_t
143169689Skanecore_sp_iscsi_stats_tcp_update(struct ecore_hwfn *p_hwfn,
144169689Skan				struct ecore_iscsi_conn *p_conn,
145169689Skan				bool reset,
146169689Skan				enum spq_mode comp_mode,
147169689Skan				struct ecore_spq_comp_cb *p_comp_addr);
148169689Skan
149169689Skan/**
150169689Skan * @brief ecore_sp_iscsi_conn_terminate - iSCSI connection
151169689Skan *        terminate
152169689Skan *
153169689Skan * This ramrod deletes iSCSI offloaded connection in FW
154169689Skan *
155169689Skan * @param p_path
156169689Skan * @param p_conn
157169689Skan * @param comp_mode
158169689Skan * @param comp_addr
159169689Skan *
160169689Skan * @return enum _ecore_status_t
161169689Skan */
162169689Skanenum _ecore_status_t
163169689Skanecore_sp_iscsi_conn_terminate(struct ecore_hwfn *p_hwfn,
164169689Skan			      struct ecore_iscsi_conn *p_conn,
165169689Skan			      enum spq_mode comp_mode,
166169689Skan			      struct ecore_spq_comp_cb *p_comp_addr);
167169689Skan
168169689Skan/**
169169689Skan * @brief ecore_sp_iscsi_conn_clear_sq - iSCSI connection
170169689Skan *        clear SQ
171169689Skan *
172169689Skan * This ramrod clears connection's SQ in FW
173169689Skan *
174169689Skan * @param p_path
175169689Skan * @param p_conn
176169689Skan * @param comp_mode
177169689Skan * @param comp_addr
178169689Skan *
179169689Skan * @return enum _ecore_status_t
180169689Skan */
181169689Skanenum _ecore_status_t
182169689Skanecore_sp_iscsi_conn_clear_sq(struct ecore_hwfn *p_hwfn,
183169689Skan			     struct ecore_iscsi_conn *p_conn,
184169689Skan			     enum spq_mode comp_mode,
185169689Skan			     struct ecore_spq_comp_cb *p_comp_addr);
186169689Skan
187169689Skan#endif  /*__ECORE_ISCSI_H__*/
188169689Skan
189169689Skan