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 153