1942b7654SJitendra Bhivare /* 2942b7654SJitendra Bhivare * Copyright 2017 Broadcom. All Rights Reserved. 3942b7654SJitendra Bhivare * The term "Broadcom" refers to Broadcom Limited and/or its subsidiaries. 46733b39aSJayamohan Kallickal * 56733b39aSJayamohan Kallickal * This program is free software; you can redistribute it and/or 66733b39aSJayamohan Kallickal * modify it under the terms of the GNU General Public License version 2 76733b39aSJayamohan Kallickal * as published by the Free Software Foundation. The full GNU General 86733b39aSJayamohan Kallickal * Public License is included in this distribution in the file called COPYING. 96733b39aSJayamohan Kallickal * 106733b39aSJayamohan Kallickal * Contact Information: 1160f36e04SJitendra Bhivare * linux-drivers@broadcom.com 126733b39aSJayamohan Kallickal * 136733b39aSJayamohan Kallickal */ 146733b39aSJayamohan Kallickal 156733b39aSJayamohan Kallickal #ifndef _BE_ISCSI_ 166733b39aSJayamohan Kallickal #define _BE_ISCSI_ 176733b39aSJayamohan Kallickal 186733b39aSJayamohan Kallickal #include "be_main.h" 196733b39aSJayamohan Kallickal #include "be_mgmt.h" 206733b39aSJayamohan Kallickal 2196b48b92SJitendra Bhivare void beiscsi_iface_create_default(struct beiscsi_hba *phba); 220e43895eSMike Christie 2396b48b92SJitendra Bhivare void beiscsi_iface_destroy_default(struct beiscsi_hba *phba); 240e43895eSMike Christie 2596b48b92SJitendra Bhivare int beiscsi_iface_get_param(struct iscsi_iface *iface, 260e43895eSMike Christie enum iscsi_param_type param_type, 270e43895eSMike Christie int param, char *buf); 280e43895eSMike Christie 2996b48b92SJitendra Bhivare int beiscsi_iface_set_param(struct Scsi_Host *shost, 300e43895eSMike Christie void *data, uint32_t count); 316733b39aSJayamohan Kallickal 3296b48b92SJitendra Bhivare umode_t beiscsi_attr_is_visible(int param_type, int param); 333128c6c7SMike Christie 346733b39aSJayamohan Kallickal void beiscsi_offload_connection(struct beiscsi_conn *beiscsi_conn, 356733b39aSJayamohan Kallickal struct beiscsi_offload_params *params); 366733b39aSJayamohan Kallickal 376733b39aSJayamohan Kallickal void beiscsi_offload_iscsi(struct beiscsi_hba *phba, struct iscsi_conn *conn, 386733b39aSJayamohan Kallickal struct beiscsi_conn *beiscsi_conn, 396733b39aSJayamohan Kallickal unsigned int fw_handle); 406733b39aSJayamohan Kallickal 416733b39aSJayamohan Kallickal struct iscsi_cls_session *beiscsi_session_create(struct iscsi_endpoint *ep, 426733b39aSJayamohan Kallickal uint16_t cmds_max, 436733b39aSJayamohan Kallickal uint16_t qdepth, 446733b39aSJayamohan Kallickal uint32_t initial_cmdsn); 456733b39aSJayamohan Kallickal 466733b39aSJayamohan Kallickal void beiscsi_session_destroy(struct iscsi_cls_session *cls_session); 476733b39aSJayamohan Kallickal 48480195c2SJitendra Bhivare void beiscsi_session_fail(struct iscsi_cls_session *cls_session); 49480195c2SJitendra Bhivare 506733b39aSJayamohan Kallickal struct iscsi_cls_conn *beiscsi_conn_create(struct iscsi_cls_session 516733b39aSJayamohan Kallickal *cls_session, uint32_t cid); 526733b39aSJayamohan Kallickal 536733b39aSJayamohan Kallickal int beiscsi_conn_bind(struct iscsi_cls_session *cls_session, 546733b39aSJayamohan Kallickal struct iscsi_cls_conn *cls_conn, 556733b39aSJayamohan Kallickal uint64_t transport_fd, int is_leading); 566733b39aSJayamohan Kallickal 57c7f7fd5bSMike Christie int beiscsi_ep_get_param(struct iscsi_endpoint *ep, enum iscsi_param param, 58c7f7fd5bSMike Christie char *buf); 596733b39aSJayamohan Kallickal 606733b39aSJayamohan Kallickal int beiscsi_get_host_param(struct Scsi_Host *shost, 616733b39aSJayamohan Kallickal enum iscsi_host_param param, char *buf); 626733b39aSJayamohan Kallickal 63c7acc5b8SJayamohan Kallickal int beiscsi_get_macaddr(char *buf, struct beiscsi_hba *phba); 64c7acc5b8SJayamohan Kallickal 656733b39aSJayamohan Kallickal int beiscsi_set_param(struct iscsi_cls_conn *cls_conn, 666733b39aSJayamohan Kallickal enum iscsi_param param, char *buf, int buflen); 676733b39aSJayamohan Kallickal 686733b39aSJayamohan Kallickal int beiscsi_conn_start(struct iscsi_cls_conn *cls_conn); 696733b39aSJayamohan Kallickal 706733b39aSJayamohan Kallickal struct iscsi_endpoint *beiscsi_ep_connect(struct Scsi_Host *shost, 716733b39aSJayamohan Kallickal struct sockaddr *dst_addr, 726733b39aSJayamohan Kallickal int non_blocking); 736733b39aSJayamohan Kallickal 746733b39aSJayamohan Kallickal int beiscsi_ep_poll(struct iscsi_endpoint *ep, int timeout_ms); 756733b39aSJayamohan Kallickal 766733b39aSJayamohan Kallickal void beiscsi_ep_disconnect(struct iscsi_endpoint *ep); 776733b39aSJayamohan Kallickal 786733b39aSJayamohan Kallickal void beiscsi_conn_get_stats(struct iscsi_cls_conn *cls_conn, 796733b39aSJayamohan Kallickal struct iscsi_stats *stats); 806733b39aSJayamohan Kallickal 816733b39aSJayamohan Kallickal #endif 82