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