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 32 #ifndef __ECORE_ISCSI_H__ 33 #define __ECORE_ISCSI_H__ 34 35 #include "ecore.h" 36 #include "ecore_chain.h" 37 #include "ecore_hsi_common.h" 38 #include "tcp_common.h" 39 #include "ecore_hsi_iscsi.h" 40 #include "ecore_sp_commands.h" 41 #include "ecore_iscsi_api.h" 42 43 struct ecore_iscsi_info { 44 osal_spinlock_t lock; 45 osal_list_t free_list; 46 u16 max_num_outstanding_tasks; 47 void *event_context; 48 iscsi_event_cb_t event_cb; 49 }; 50 51 enum _ecore_status_t ecore_iscsi_alloc(struct ecore_hwfn *p_hwfn); 52 53 void ecore_iscsi_setup(struct ecore_hwfn *p_hwfn); 54 55 void ecore_iscsi_free(struct ecore_hwfn *p_hwfn); 56 57 void ecore_iscsi_free_connection(struct ecore_hwfn *p_hwfn, 58 struct ecore_iscsi_conn *p_conn); 59 60 /** 61 * @brief ecore_sp_iscsi_conn_offload - iSCSI connection offload 62 * 63 * This ramrod offloads iSCSI connection to FW 64 * 65 * @param p_path 66 * @param p_conn 67 * @param comp_mode 68 * @param comp_addr 69 * 70 * @return enum _ecore_status_t 71 */ 72 enum _ecore_status_t 73 ecore_sp_iscsi_conn_offload(struct ecore_hwfn *p_hwfn, 74 struct ecore_iscsi_conn *p_conn, 75 enum spq_mode comp_mode, 76 struct ecore_spq_comp_cb *p_comp_addr); 77 78 /** 79 * @brief ecore_sp_iscsi_conn_update - iSCSI connection update 80 * 81 * This ramrod updatess iSCSI ofloadedconnection in FW 82 * 83 * @param p_path 84 * @param p_conn 85 * @param comp_mode 86 * @param comp_addr 87 * 88 * @return enum _ecore_status_t 89 */ 90 enum _ecore_status_t 91 ecore_sp_iscsi_conn_update(struct ecore_hwfn *p_hwfn, 92 struct ecore_iscsi_conn *p_conn, 93 enum spq_mode comp_mode, 94 struct ecore_spq_comp_cb *p_comp_addr); 95 96 /** 97 * @brief ecore_sp_iscsi_mac_update - iSCSI connection's MAC update 98 * 99 * This ramrod updates remote MAC for iSCSI offloaded connection in FW 100 * 101 * @param p_path 102 * @param p_conn 103 * @param comp_mode 104 * @param comp_addr 105 * 106 * @return enum _ecore_status_t 107 */ 108 enum _ecore_status_t 109 ecore_sp_iscsi_mac_update(struct ecore_hwfn *p_hwfn, 110 struct ecore_iscsi_conn *p_conn, 111 enum spq_mode comp_mode, 112 struct ecore_spq_comp_cb *p_comp_addr); 113 114 /** 115 * @brief ecore_sp_iscsi_conn_terminate - iSCSI connection 116 * terminate 117 * 118 * This ramrod deletes iSCSI offloaded connection in FW 119 * 120 * @param p_path 121 * @param p_conn 122 * @param comp_mode 123 * @param comp_addr 124 * 125 * @return enum _ecore_status_t 126 */ 127 enum _ecore_status_t 128 ecore_sp_iscsi_conn_terminate(struct ecore_hwfn *p_hwfn, 129 struct ecore_iscsi_conn *p_conn, 130 enum spq_mode comp_mode, 131 struct ecore_spq_comp_cb *p_comp_addr); 132 133 /** 134 * @brief ecore_sp_iscsi_conn_clear_sq - iSCSI connection 135 * clear SQ 136 * 137 * This ramrod clears connection's SQ in FW 138 * 139 * @param p_path 140 * @param p_conn 141 * @param comp_mode 142 * @param comp_addr 143 * 144 * @return enum _ecore_status_t 145 */ 146 enum _ecore_status_t 147 ecore_sp_iscsi_conn_clear_sq(struct ecore_hwfn *p_hwfn, 148 struct ecore_iscsi_conn *p_conn, 149 enum spq_mode comp_mode, 150 struct ecore_spq_comp_cb *p_comp_addr); 151 152 #endif /*__ECORE_ISCSI_H__*/ 153 154