linux/drivers/scsi/bfa/bfad_im.h

/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (c) 2005-2014 Brocade Communications Systems, Inc.
 * Copyright (c) 2014- QLogic Corporation.
 * All rights reserved
 * www.qlogic.com
 *
 * Linux driver for QLogic BR-series Fibre Channel Host Bus Adapter.
 */

#ifndef __BFAD_IM_H__
#define __BFAD_IM_H__

#include "bfa_fcs.h"

#define FCPI_NAME

#ifndef KOBJ_NAME_LEN
#define KOBJ_NAME_LEN
#endif

bfa_status_t bfad_im_module_init(void);
void bfad_im_module_exit(void);
bfa_status_t bfad_im_probe(struct bfad_s *bfad);
void bfad_im_probe_undo(struct bfad_s *bfad);
bfa_status_t bfad_im_port_new(struct bfad_s *bfad, struct bfad_port_s *port);
void bfad_im_port_delete(struct bfad_s *bfad, struct bfad_port_s *port);
void bfad_im_port_clean(struct bfad_im_port_s *im_port);
int  bfad_im_scsi_host_alloc(struct bfad_s *bfad,
		struct bfad_im_port_s *im_port, struct device *dev);
void bfad_im_scsi_host_free(struct bfad_s *bfad,
				struct bfad_im_port_s *im_port);
u32 bfad_im_supported_speeds(struct bfa_s *bfa);

#define MAX_FCP_TARGET
#define MAX_FCP_LUN
#define BFAD_TARGET_RESET_TMO
#define BFAD_LUN_RESET_TMO
#define BFA_QUEUE_FULL_RAMP_UP_TIME

/*
 * itnim flags
 */
#define IO_DONE_BIT

/**
 * struct bfad_cmd_priv - private data per SCSI command.
 * @status: Lowest bit represents IO_DONE. The next seven bits hold a value of
 * type enum bfi_tskim_status.
 * @wq: Wait queue used to wait for completion of an operation.
 */
struct bfad_cmd_priv {};

static inline struct bfad_cmd_priv *bfad_priv(struct scsi_cmnd *cmd)
{}

struct bfad_itnim_data_s {};

struct bfad_im_port_s {};

struct bfad_im_port_pointer {};

static inline struct bfad_im_port_s *bfad_get_im_port(struct Scsi_Host *host)
{}

enum bfad_itnim_state {};

/*
 * Per itnim data structure
 */
struct bfad_itnim_s {};

enum bfad_binding_type {};

struct bfad_fcp_binding {};

struct bfad_im_s {};

#define bfad_get_aen_entry(_drv, _entry)

/* post fc_host vendor event */
static inline void bfad_im_post_vendor_event(struct bfa_aen_entry_s *entry,
					     struct bfad_s *drv, int cnt,
					     enum bfa_aen_category cat,
					     int evt)
{}

struct Scsi_Host *bfad_scsi_host_alloc(struct bfad_im_port_s *im_port,
				struct bfad_s *);
bfa_status_t bfad_thread_workq(struct bfad_s *bfad);
void bfad_destroy_workq(struct bfad_im_s *im);
void bfad_fc_host_init(struct bfad_im_port_s *im_port);
void bfad_scsi_host_free(struct bfad_s *bfad,
				 struct bfad_im_port_s *im_port);
void bfad_ramp_up_qdepth(struct bfad_itnim_s *itnim,
				 struct scsi_device *sdev);
void bfad_handle_qfull(struct bfad_itnim_s *itnim, struct scsi_device *sdev);
struct bfad_itnim_s *bfad_get_itnim(struct bfad_im_port_s *im_port, int id);

extern struct scsi_host_template bfad_im_scsi_host_template;
extern struct scsi_host_template bfad_im_vport_template;
extern struct fc_function_template bfad_im_fc_function_template;
extern struct fc_function_template bfad_im_vport_fc_function_template;
extern struct scsi_transport_template *bfad_im_scsi_transport_template;
extern struct scsi_transport_template *bfad_im_scsi_vport_transport_template;

extern const struct attribute_group *bfad_im_host_groups[];
extern const struct attribute_group *bfad_im_vport_groups[];

irqreturn_t bfad_intx(int irq, void *dev_id);

int bfad_im_bsg_request(struct bsg_job *job);
int bfad_im_bsg_timeout(struct bsg_job *job);

#endif