aboutsummaryrefslogtreecommitdiff
path: root/drivers/scsi/bfa/bfa_modules.h
blob: 1c2ab395e61683067f500de820fac9b487133510 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/*
 * 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.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License (GPL) Version 2 as
 * published by the Free Software Foundation
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 */

/*
 *  bfa_modules.h BFA modules
 */

#ifndef __BFA_MODULES_H__
#define __BFA_MODULES_H__

#include "bfa_cs.h"
#include "bfa.h"
#include "bfa_svc.h"
#include "bfa_fcpim.h"
#include "bfa_port.h"

struct bfa_modules_s {
	struct bfa_fcdiag_s	fcdiag;		/* fcdiag module */
	struct bfa_fcport_s	fcport;		/*  fc port module	      */
	struct bfa_fcxp_mod_s	fcxp_mod;	/*  fcxp module	      */
	struct bfa_lps_mod_s	lps_mod;	/*  fcxp module	      */
	struct bfa_uf_mod_s	uf_mod;		/*  unsolicited frame module */
	struct bfa_rport_mod_s	rport_mod;	/*  remote port module	      */
	struct bfa_fcp_mod_s	fcp_mod;	/*  FCP initiator module     */
	struct bfa_sgpg_mod_s	sgpg_mod;	/*  SG page module	      */
	struct bfa_port_s	port;		/*  Physical port module     */
	struct bfa_ablk_s	ablk;		/*  ASIC block config module */
	struct bfa_cee_s	cee;		/*  CEE Module	*/
	struct bfa_sfp_s	sfp;		/*  SFP module	*/
	struct bfa_flash_s	flash;		/*  flash module */
	struct bfa_diag_s	diag_mod;	/*  diagnostics module	*/
	struct bfa_phy_s	phy;		/*  phy module		*/
	struct bfa_dconf_mod_s	dconf_mod;	/*  DCONF common module	*/
	struct bfa_fru_s	fru;		/*  fru module		*/
};

/*
 * !!! Only append to the enums defined here to avoid any versioning
 * !!! needed between trace utility and driver version
 */
enum {
	BFA_TRC_HAL_CORE	= 1,
	BFA_TRC_HAL_FCXP	= 2,
	BFA_TRC_HAL_FCPIM	= 3,
	BFA_TRC_HAL_IOCFC_CT	= 4,
	BFA_TRC_HAL_IOCFC_CB	= 5,
};

#define BFA_CACHELINE_SZ	(256)

struct bfa_s {
	void			*bfad;		/*  BFA driver instance    */
	struct bfa_plog_s	*plog;		/*  portlog buffer	    */
	struct bfa_trc_mod_s	*trcmod;	/*  driver tracing	    */
	struct bfa_ioc_s	ioc;		/*  IOC module		    */
	struct bfa_iocfc_s	iocfc;		/*  IOCFC module	    */
	struct bfa_timer_mod_s	timer_mod;	/*  timer module	    */
	struct bfa_modules_s	modules;	/*  BFA modules	    */
	struct list_head	comp_q;		/*  pending completions     */
	bfa_boolean_t		queue_process;	/*  queue processing enabled */
	struct list_head	reqq_waitq[BFI_IOC_MAX_CQS];
	bfa_boolean_t		fcs;		/*  FCS is attached to BFA */
	struct bfa_msix_s	msix;
	int			bfa_aen_seq;
	bfa_boolean_t		intr_enabled;	/*  Status of interrupts */
};

extern bfa_boolean_t bfa_auto_recover;

void bfa_dconf_attach(struct bfa_s *, void *, struct bfa_iocfc_cfg_s *);
void bfa_dconf_meminfo(struct bfa_iocfc_cfg_s *, struct bfa_meminfo_s *,
		  struct bfa_s *);
void bfa_dconf_iocdisable(struct bfa_s *);
void bfa_fcp_attach(struct bfa_s *, void *, struct bfa_iocfc_cfg_s *,
		struct bfa_pcidev_s *);
void bfa_fcp_iocdisable(struct bfa_s *bfa);
void bfa_fcp_meminfo(struct bfa_iocfc_cfg_s *, struct bfa_meminfo_s *,
		struct bfa_s *);
void bfa_fcpim_iocdisable(struct bfa_fcp_mod_s *);
void bfa_fcport_start(struct bfa_s *);
void bfa_fcport_iocdisable(struct bfa_s *);
void bfa_fcport_meminfo(struct bfa_iocfc_cfg_s *, struct bfa_meminfo_s *,
		   struct bfa_s *);
void bfa_fcport_attach(struct bfa_s *, void *, struct bfa_iocfc_cfg_s *,
		struct bfa_pcidev_s *);
void bfa_fcxp_iocdisable(struct bfa_s *);
void bfa_fcxp_meminfo(struct bfa_iocfc_cfg_s *, struct bfa_meminfo_s *,
		struct bfa_s *);
void bfa_fcxp_attach(struct bfa_s *, void *, struct bfa_iocfc_cfg_s *,
		struct bfa_pcidev_s *);
void bfa_fcdiag_iocdisable(struct bfa_s *);
void bfa_fcdiag_attach(struct bfa_s *bfa, void *, struct bfa_iocfc_cfg_s *,
		struct bfa_pcidev_s *);
void bfa_ioim_lm_init(struct bfa_s *);
void bfa_lps_iocdisable(struct bfa_s *bfa);
void bfa_lps_meminfo(struct bfa_iocfc_cfg_s *, struct bfa_meminfo_s *,
		struct bfa_s *);
void bfa_lps_attach(struct bfa_s *, void *, struct bfa_iocfc_cfg_s *,
	struct bfa_pcidev_s *);
void bfa_rport_iocdisable(struct bfa_s *bfa);
void bfa_rport_meminfo(struct bfa_iocfc_cfg_s *, struct bfa_meminfo_s *,
		struct bfa_s *);
void bfa_rport_attach(struct bfa_s *, void *, struct bfa_iocfc_cfg_s *,
		struct bfa_pcidev_s *);
void bfa_sgpg_meminfo(struct bfa_iocfc_cfg_s *, struct bfa_meminfo_s *,
		struct bfa_s *);
void bfa_sgpg_attach(struct bfa_s *, void *bfad, struct bfa_iocfc_cfg_s *,
		struct bfa_pcidev_s *);
void bfa_uf_iocdisable(struct bfa_s *);
void bfa_uf_meminfo(struct bfa_iocfc_cfg_s *, struct bfa_meminfo_s *,
		struct bfa_s *);
void bfa_uf_attach(struct bfa_s *, void *, struct bfa_iocfc_cfg_s *,
		struct bfa_pcidev_s *);
void bfa_uf_start(struct bfa_s *);

#endif /* __BFA_MODULES_H__ */