#include <linux/blkdev.h>
#include <linux/etherdevice.h>
#include <linux/if_ether.h>
#include <linux/if_vlan.h>
#include <scsi/scsi_tcq.h>
#include "qedi.h"
#include "qedi_iscsi.h"
#include "qedi_gbl.h"
int qedi_recover_all_conns(struct qedi_ctx *qedi)
{ … }
static int qedi_eh_host_reset(struct scsi_cmnd *cmd)
{ … }
const struct scsi_host_template qedi_host_template = …;
static void qedi_conn_free_login_resources(struct qedi_ctx *qedi,
struct qedi_conn *qedi_conn)
{ … }
static int qedi_conn_alloc_login_resources(struct qedi_ctx *qedi,
struct qedi_conn *qedi_conn)
{ … }
static void qedi_destroy_cmd_pool(struct qedi_ctx *qedi,
struct iscsi_session *session)
{ … }
static int qedi_alloc_sget(struct qedi_ctx *qedi, struct iscsi_session *session,
struct qedi_cmd *cmd)
{ … }
static int qedi_setup_cmd_pool(struct qedi_ctx *qedi,
struct iscsi_session *session)
{ … }
static struct iscsi_cls_session *
qedi_session_create(struct iscsi_endpoint *ep, u16 cmds_max,
u16 qdepth, uint32_t initial_cmdsn)
{ … }
static void qedi_session_destroy(struct iscsi_cls_session *cls_session)
{ … }
static struct iscsi_cls_conn *
qedi_conn_create(struct iscsi_cls_session *cls_session, uint32_t cid)
{ … }
void qedi_mark_device_missing(struct iscsi_cls_session *cls_session)
{ … }
void qedi_mark_device_available(struct iscsi_cls_session *cls_session)
{ … }
static int qedi_bind_conn_to_iscsi_cid(struct qedi_ctx *qedi,
struct qedi_conn *qedi_conn)
{ … }
struct qedi_conn *qedi_get_conn_from_id(struct qedi_ctx *qedi, u32 iscsi_cid)
{ … }
static int qedi_conn_bind(struct iscsi_cls_session *cls_session,
struct iscsi_cls_conn *cls_conn,
u64 transport_fd, int is_leading)
{ … }
static int qedi_iscsi_update_conn(struct qedi_ctx *qedi,
struct qedi_conn *qedi_conn)
{ … }
static u16 qedi_calc_mss(u16 pmtu, u8 is_ipv6, u8 tcp_ts_en, u8 vlan_en)
{ … }
static int qedi_iscsi_offload_conn(struct qedi_endpoint *qedi_ep)
{ … }
static int qedi_conn_start(struct iscsi_cls_conn *cls_conn)
{ … }
static void qedi_conn_destroy(struct iscsi_cls_conn *cls_conn)
{ … }
static int qedi_ep_get_param(struct iscsi_endpoint *ep,
enum iscsi_param param, char *buf)
{ … }
static int qedi_host_get_param(struct Scsi_Host *shost,
enum iscsi_host_param param, char *buf)
{ … }
static void qedi_conn_get_stats(struct iscsi_cls_conn *cls_conn,
struct iscsi_stats *stats)
{ … }
static void qedi_iscsi_prep_generic_pdu_bd(struct qedi_conn *qedi_conn)
{ … }
static int qedi_iscsi_send_generic_request(struct iscsi_task *task)
{ … }
static int qedi_mtask_xmit(struct iscsi_conn *conn, struct iscsi_task *task)
{ … }
static int qedi_task_xmit(struct iscsi_task *task)
{ … }
static void qedi_offload_work(struct work_struct *work)
{ … }
static struct iscsi_endpoint *
qedi_ep_connect(struct Scsi_Host *shost, struct sockaddr *dst_addr,
int non_blocking)
{ … }
static int qedi_ep_poll(struct iscsi_endpoint *ep, int timeout_ms)
{ … }
static void qedi_cleanup_active_cmd_list(struct qedi_conn *qedi_conn)
{ … }
static void qedi_ep_disconnect(struct iscsi_endpoint *ep)
{ … }
static int qedi_data_avail(struct qedi_ctx *qedi, u16 vlanid)
{ … }
static int qedi_set_path(struct Scsi_Host *shost, struct iscsi_path *path_data)
{ … }
static umode_t qedi_attr_is_visible(int param_type, int param)
{ … }
static void qedi_cleanup_task(struct iscsi_task *task)
{ … }
struct iscsi_transport qedi_iscsi_transport = …;
void qedi_start_conn_recovery(struct qedi_ctx *qedi,
struct qedi_conn *qedi_conn)
{ … }
static const struct { … } qedi_iscsi_error[] = …;
static char *qedi_get_iscsi_error(enum iscsi_error_types err_code)
{ … }
void qedi_process_iscsi_error(struct qedi_endpoint *ep,
struct iscsi_eqe_data *data)
{ … }
void qedi_process_tcp_error(struct qedi_endpoint *ep,
struct iscsi_eqe_data *data)
{ … }