xref: /OK3568_Linux_fs/kernel/drivers/scsi/be2iscsi/be_iscsi.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Copyright 2017 Broadcom. All Rights Reserved.
4*4882a593Smuzhiyun  * The term "Broadcom" refers to Broadcom Limited and/or its subsidiaries.
5*4882a593Smuzhiyun  *
6*4882a593Smuzhiyun  * Contact Information:
7*4882a593Smuzhiyun  * linux-drivers@broadcom.com
8*4882a593Smuzhiyun  */
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun #ifndef _BE_ISCSI_
11*4882a593Smuzhiyun #define _BE_ISCSI_
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun #include "be_main.h"
14*4882a593Smuzhiyun #include "be_mgmt.h"
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun void beiscsi_iface_create_default(struct beiscsi_hba *phba);
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun void beiscsi_iface_destroy_default(struct beiscsi_hba *phba);
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun int beiscsi_iface_get_param(struct iscsi_iface *iface,
21*4882a593Smuzhiyun 			     enum iscsi_param_type param_type,
22*4882a593Smuzhiyun 			     int param, char *buf);
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun int beiscsi_iface_set_param(struct Scsi_Host *shost,
25*4882a593Smuzhiyun 			     void *data, uint32_t count);
26*4882a593Smuzhiyun 
27*4882a593Smuzhiyun umode_t beiscsi_attr_is_visible(int param_type, int param);
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun void beiscsi_offload_connection(struct beiscsi_conn *beiscsi_conn,
30*4882a593Smuzhiyun 				struct beiscsi_offload_params *params);
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun void beiscsi_offload_iscsi(struct beiscsi_hba *phba, struct iscsi_conn *conn,
33*4882a593Smuzhiyun 			   struct beiscsi_conn *beiscsi_conn,
34*4882a593Smuzhiyun 			   unsigned int fw_handle);
35*4882a593Smuzhiyun 
36*4882a593Smuzhiyun struct iscsi_cls_session *beiscsi_session_create(struct iscsi_endpoint *ep,
37*4882a593Smuzhiyun 						 uint16_t cmds_max,
38*4882a593Smuzhiyun 						 uint16_t qdepth,
39*4882a593Smuzhiyun 						 uint32_t initial_cmdsn);
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun void beiscsi_session_destroy(struct iscsi_cls_session *cls_session);
42*4882a593Smuzhiyun 
43*4882a593Smuzhiyun void beiscsi_session_fail(struct iscsi_cls_session *cls_session);
44*4882a593Smuzhiyun 
45*4882a593Smuzhiyun struct iscsi_cls_conn *beiscsi_conn_create(struct iscsi_cls_session
46*4882a593Smuzhiyun 					   *cls_session, uint32_t cid);
47*4882a593Smuzhiyun 
48*4882a593Smuzhiyun int beiscsi_conn_bind(struct iscsi_cls_session *cls_session,
49*4882a593Smuzhiyun 		      struct iscsi_cls_conn *cls_conn,
50*4882a593Smuzhiyun 		      uint64_t transport_fd, int is_leading);
51*4882a593Smuzhiyun 
52*4882a593Smuzhiyun int beiscsi_ep_get_param(struct iscsi_endpoint *ep, enum iscsi_param param,
53*4882a593Smuzhiyun 			 char *buf);
54*4882a593Smuzhiyun 
55*4882a593Smuzhiyun int beiscsi_get_host_param(struct Scsi_Host *shost,
56*4882a593Smuzhiyun 			   enum iscsi_host_param param, char *buf);
57*4882a593Smuzhiyun 
58*4882a593Smuzhiyun int beiscsi_get_macaddr(char *buf, struct beiscsi_hba *phba);
59*4882a593Smuzhiyun 
60*4882a593Smuzhiyun int beiscsi_set_param(struct iscsi_cls_conn *cls_conn,
61*4882a593Smuzhiyun 		      enum iscsi_param param, char *buf, int buflen);
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun int beiscsi_conn_start(struct iscsi_cls_conn *cls_conn);
64*4882a593Smuzhiyun 
65*4882a593Smuzhiyun struct iscsi_endpoint *beiscsi_ep_connect(struct Scsi_Host *shost,
66*4882a593Smuzhiyun 					  struct sockaddr *dst_addr,
67*4882a593Smuzhiyun 					  int non_blocking);
68*4882a593Smuzhiyun 
69*4882a593Smuzhiyun int beiscsi_ep_poll(struct iscsi_endpoint *ep, int timeout_ms);
70*4882a593Smuzhiyun 
71*4882a593Smuzhiyun void beiscsi_ep_disconnect(struct iscsi_endpoint *ep);
72*4882a593Smuzhiyun 
73*4882a593Smuzhiyun void beiscsi_conn_get_stats(struct iscsi_cls_conn *cls_conn,
74*4882a593Smuzhiyun 			    struct iscsi_stats *stats);
75*4882a593Smuzhiyun 
76*4882a593Smuzhiyun #endif
77