#ifndef _FNIC_H_
#define _FNIC_H_
#include <linux/interrupt.h>
#include <linux/netdevice.h>
#include <linux/workqueue.h>
#include <linux/bitops.h>
#include <scsi/libfc.h>
#include <scsi/libfcoe.h>
#include "fnic_io.h"
#include "fnic_res.h"
#include "fnic_trace.h"
#include "fnic_stats.h"
#include "vnic_dev.h"
#include "vnic_wq.h"
#include "vnic_rq.h"
#include "vnic_cq.h"
#include "vnic_wq_copy.h"
#include "vnic_intr.h"
#include "vnic_stats.h"
#include "vnic_scsi.h"
#define DRV_NAME …
#define DRV_DESCRIPTION …
#define DRV_VERSION …
#define PFX …
#define DFX …
#define DESC_CLEAN_LOW_WATERMARK …
#define FNIC_UCSM_DFLT_THROTTLE_CNT_BLD …
#define FNIC_MIN_IO_REQ …
#define FNIC_MAX_IO_REQ …
#define FNIC_DFLT_IO_REQ …
#define FNIC_DFLT_QUEUE_DEPTH …
#define FNIC_STATS_RATE_LIMIT …
#define FNIC_TAG_ABORT …
#define FNIC_TAG_DEV_RST …
#define FNIC_TAG_MASK …
#define FNIC_NO_TAG …
#define FNIC_NO_FLAGS …
#define FNIC_IO_INITIALIZED …
#define FNIC_IO_ISSUED …
#define FNIC_IO_DONE …
#define FNIC_IO_REQ_NULL …
#define FNIC_IO_ABTS_PENDING …
#define FNIC_IO_ABORTED …
#define FNIC_IO_ABTS_ISSUED …
#define FNIC_IO_TERM_ISSUED …
#define FNIC_IO_INTERNAL_TERM_ISSUED …
#define FNIC_IO_ABT_TERM_DONE …
#define FNIC_IO_ABT_TERM_REQ_NULL …
#define FNIC_IO_ABT_TERM_TIMED_OUT …
#define FNIC_DEVICE_RESET …
#define FNIC_DEV_RST_ISSUED …
#define FNIC_DEV_RST_TIMED_OUT …
#define FNIC_DEV_RST_ABTS_ISSUED …
#define FNIC_DEV_RST_TERM_ISSUED …
#define FNIC_DEV_RST_DONE …
#define FNIC_DEV_RST_REQ_NULL …
#define FNIC_DEV_RST_ABTS_DONE …
#define FNIC_DEV_RST_TERM_DONE …
#define FNIC_DEV_RST_ABTS_PENDING …
struct fnic_cmd_priv { … };
static inline struct fnic_cmd_priv *fnic_priv(struct scsi_cmnd *cmd)
{ … }
static inline u64 fnic_flags_and_state(struct scsi_cmnd *cmd)
{ … }
#define FCPIO_INVALID_CODE …
#define FNIC_LUN_RESET_TIMEOUT …
#define FNIC_HOST_RESET_TIMEOUT …
#define FNIC_RMDEVICE_TIMEOUT …
#define FNIC_HOST_RESET_SETTLE_TIME …
#define FNIC_ABT_TERM_DELAY_TIMEOUT …
#define FNIC_MAX_FCP_TARGET …
#define FNIC_PCI_OFFSET …
#define __FNIC_FLAGS_FWRESET …
#define __FNIC_FLAGS_BLOCK_IO …
#define FNIC_FLAGS_NONE …
#define FNIC_FLAGS_FWRESET …
#define FNIC_FLAGS_IO_BLOCKED …
#define fnic_set_state_flags(fnicp, st_flags) …
#define fnic_clear_state_flags(fnicp, st_flags) …
extern unsigned int fnic_log_level;
extern unsigned int io_completions;
#define FNIC_MAIN_LOGGING …
#define FNIC_FCS_LOGGING …
#define FNIC_SCSI_LOGGING …
#define FNIC_ISR_LOGGING …
#define FNIC_CHECK_LOGGING(LEVEL, CMD) …
#define FNIC_MAIN_DBG(kern_level, host, fnic_num, fmt, args...) …
#define FNIC_FCS_DBG(kern_level, host, fnic_num, fmt, args...) …
#define FNIC_SCSI_DBG(kern_level, host, fnic_num, fmt, args...) …
#define FNIC_ISR_DBG(kern_level, host, fnic_num, fmt, args...) …
#define FNIC_MAIN_NOTE(kern_level, host, fmt, args...) …
#define FNIC_WQ_COPY_MAX …
#define FNIC_WQ_MAX …
#define FNIC_RQ_MAX …
#define FNIC_CQ_MAX …
#define FNIC_DFLT_IO_COMPLETIONS …
#define FNIC_MQ_CQ_INDEX …
extern const char *fnic_state_str[];
enum fnic_intx_intr_index { … };
enum fnic_msix_intr_index { … };
struct fnic_msix_entry { … };
enum fnic_state { … };
struct mempool;
enum fnic_evt { … };
struct fnic_event { … };
struct fnic_cpy_wq { … };
struct fnic { … };
static inline struct fnic *fnic_from_ctlr(struct fcoe_ctlr *fip)
{ … }
extern struct workqueue_struct *fnic_event_queue;
extern struct workqueue_struct *fnic_fip_queue;
extern const struct attribute_group *fnic_host_groups[];
void fnic_clear_intr_mode(struct fnic *fnic);
int fnic_set_intr_mode(struct fnic *fnic);
int fnic_set_intr_mode_msix(struct fnic *fnic);
void fnic_free_intr(struct fnic *fnic);
int fnic_request_intr(struct fnic *fnic);
int fnic_send(struct fc_lport *, struct fc_frame *);
void fnic_free_wq_buf(struct vnic_wq *wq, struct vnic_wq_buf *buf);
void fnic_handle_frame(struct work_struct *work);
void fnic_handle_link(struct work_struct *work);
void fnic_handle_event(struct work_struct *work);
int fnic_rq_cmpl_handler(struct fnic *fnic, int);
int fnic_alloc_rq_frame(struct vnic_rq *rq);
void fnic_free_rq_buf(struct vnic_rq *rq, struct vnic_rq_buf *buf);
void fnic_flush_tx(struct work_struct *work);
void fnic_eth_send(struct fcoe_ctlr *, struct sk_buff *skb);
void fnic_set_port_id(struct fc_lport *, u32, struct fc_frame *);
void fnic_update_mac(struct fc_lport *, u8 *new);
void fnic_update_mac_locked(struct fnic *, u8 *new);
int fnic_queuecommand(struct Scsi_Host *, struct scsi_cmnd *);
int fnic_abort_cmd(struct scsi_cmnd *);
int fnic_device_reset(struct scsi_cmnd *);
int fnic_host_reset(struct scsi_cmnd *);
int fnic_reset(struct Scsi_Host *);
void fnic_scsi_cleanup(struct fc_lport *);
void fnic_scsi_abort_io(struct fc_lport *);
void fnic_empty_scsi_cleanup(struct fc_lport *);
void fnic_exch_mgr_reset(struct fc_lport *, u32, u32);
int fnic_wq_copy_cmpl_handler(struct fnic *fnic, int copy_work_to_do, unsigned int cq_index);
int fnic_wq_cmpl_handler(struct fnic *fnic, int);
int fnic_flogi_reg_handler(struct fnic *fnic, u32);
void fnic_wq_copy_cleanup_handler(struct vnic_wq_copy *wq,
struct fcpio_host_req *desc);
int fnic_fw_reset_handler(struct fnic *fnic);
void fnic_terminate_rport_io(struct fc_rport *);
const char *fnic_state_to_str(unsigned int state);
void fnic_mq_map_queues_cpus(struct Scsi_Host *host);
void fnic_log_q_error(struct fnic *fnic);
void fnic_handle_link_event(struct fnic *fnic);
int fnic_is_abts_pending(struct fnic *, struct scsi_cmnd *);
void fnic_handle_fip_frame(struct work_struct *work);
void fnic_handle_fip_event(struct fnic *fnic);
void fnic_fcoe_reset_vlans(struct fnic *fnic);
void fnic_fcoe_evlist_free(struct fnic *fnic);
extern void fnic_handle_fip_timer(struct fnic *fnic);
static inline int
fnic_chk_state_flags_locked(struct fnic *fnic, unsigned long st_flags)
{ … }
void __fnic_set_state_flags(struct fnic *, unsigned long, unsigned long);
void fnic_dump_fchost_stats(struct Scsi_Host *, struct fc_host_statistics *);
#endif