xref: /openbmc/linux/drivers/scsi/be2iscsi/be_iscsi.h (revision 942b7654)
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