162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright 2017 Broadcom. All Rights Reserved.
462306a36Sopenharmony_ci * The term "Broadcom" refers to Broadcom Limited and/or its subsidiaries.
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci * Contact Information:
762306a36Sopenharmony_ci * linux-drivers@broadcom.com
862306a36Sopenharmony_ci */
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#ifndef _BE_ISCSI_
1162306a36Sopenharmony_ci#define _BE_ISCSI_
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#include "be_main.h"
1462306a36Sopenharmony_ci#include "be_mgmt.h"
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_civoid beiscsi_iface_create_default(struct beiscsi_hba *phba);
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_civoid beiscsi_iface_destroy_default(struct beiscsi_hba *phba);
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ciint beiscsi_iface_get_param(struct iscsi_iface *iface,
2162306a36Sopenharmony_ci			     enum iscsi_param_type param_type,
2262306a36Sopenharmony_ci			     int param, char *buf);
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciint beiscsi_iface_set_param(struct Scsi_Host *shost,
2562306a36Sopenharmony_ci			     void *data, uint32_t count);
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ciumode_t beiscsi_attr_is_visible(int param_type, int param);
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_civoid beiscsi_offload_connection(struct beiscsi_conn *beiscsi_conn,
3062306a36Sopenharmony_ci				struct beiscsi_offload_params *params);
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_civoid beiscsi_offload_iscsi(struct beiscsi_hba *phba, struct iscsi_conn *conn,
3362306a36Sopenharmony_ci			   struct beiscsi_conn *beiscsi_conn,
3462306a36Sopenharmony_ci			   unsigned int fw_handle);
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_cistruct iscsi_cls_session *beiscsi_session_create(struct iscsi_endpoint *ep,
3762306a36Sopenharmony_ci						 uint16_t cmds_max,
3862306a36Sopenharmony_ci						 uint16_t qdepth,
3962306a36Sopenharmony_ci						 uint32_t initial_cmdsn);
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_civoid beiscsi_session_destroy(struct iscsi_cls_session *cls_session);
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_civoid beiscsi_session_fail(struct iscsi_cls_session *cls_session);
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_cistruct iscsi_cls_conn *beiscsi_conn_create(struct iscsi_cls_session
4662306a36Sopenharmony_ci					   *cls_session, uint32_t cid);
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ciint beiscsi_conn_bind(struct iscsi_cls_session *cls_session,
4962306a36Sopenharmony_ci		      struct iscsi_cls_conn *cls_conn,
5062306a36Sopenharmony_ci		      uint64_t transport_fd, int is_leading);
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ciint beiscsi_ep_get_param(struct iscsi_endpoint *ep, enum iscsi_param param,
5362306a36Sopenharmony_ci			 char *buf);
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ciint beiscsi_get_host_param(struct Scsi_Host *shost,
5662306a36Sopenharmony_ci			   enum iscsi_host_param param, char *buf);
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ciint beiscsi_get_macaddr(char *buf, struct beiscsi_hba *phba);
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ciint beiscsi_set_param(struct iscsi_cls_conn *cls_conn,
6162306a36Sopenharmony_ci		      enum iscsi_param param, char *buf, int buflen);
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ciint beiscsi_conn_start(struct iscsi_cls_conn *cls_conn);
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_cistruct iscsi_endpoint *beiscsi_ep_connect(struct Scsi_Host *shost,
6662306a36Sopenharmony_ci					  struct sockaddr *dst_addr,
6762306a36Sopenharmony_ci					  int non_blocking);
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ciint beiscsi_ep_poll(struct iscsi_endpoint *ep, int timeout_ms);
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_civoid beiscsi_ep_disconnect(struct iscsi_endpoint *ep);
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_civoid beiscsi_conn_get_stats(struct iscsi_cls_conn *cls_conn,
7462306a36Sopenharmony_ci			    struct iscsi_stats *stats);
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci#endif
77