aboutsummaryrefslogtreecommitdiff
path: root/drivers/scsi/bfa/include/defs/bfa_defs_itnim.h
blob: d77788b3999ae647f6630548dbdc55d51881e4fb (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
132
133
134
135
136
/*
 * Copyright (c) 2005-2009 Brocade Communications Systems, Inc.
 * All rights reserved
 * www.brocade.com
 *
 * Linux driver for Brocade 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.
 */
#ifndef __BFA_DEFS_ITNIM_H__
#define __BFA_DEFS_ITNIM_H__

#include <bfa_os_inc.h>
#include <protocol/types.h>

/**
 * FCS itnim states
 */
enum bfa_itnim_state {
	BFA_ITNIM_OFFLINE 	= 0,	/*  offline */
	BFA_ITNIM_PRLI_SEND 	= 1,	/*  prli send */
	BFA_ITNIM_PRLI_SENT 	= 2,	/*  prli sent */
	BFA_ITNIM_PRLI_RETRY 	= 3,	/*  prli retry */
	BFA_ITNIM_HCB_ONLINE 	= 4,	/*  online callback */
	BFA_ITNIM_ONLINE 	= 5,	/*  online */
	BFA_ITNIM_HCB_OFFLINE 	= 6,	/*  offline callback */
	BFA_ITNIM_INITIATIOR 	= 7,	/*  initiator */
};

struct bfa_itnim_latency_s {
	u32	min;
	u32	max;
	u32	count;
	u32	clock_res;
	u32	avg;
	u32	rsvd;
};

struct bfa_itnim_hal_stats_s {
	u32	onlines;	/*  ITN nexus onlines (PRLI done) */
	u32	offlines;	/*  ITN Nexus offlines 	*/
	u32	creates;	/*  ITN create requests 	*/
	u32	deletes;	/*  ITN delete requests 	*/
	u32	create_comps;	/*  ITN create completions 	*/
	u32	delete_comps;	/*  ITN delete completions 	*/
	u32	sler_events;	/*  SLER (sequence level error
					 * recovery) events */
	u32	ioc_disabled;	/*  Num IOC disables		*/
	u32	cleanup_comps;	/*  ITN cleanup completions */
	u32	tm_cmnds;	/*  task management(TM) cmnds sent */
	u32	tm_fw_rsps;	/*  TM cmds firmware responses */
	u32	tm_success;	/*  TM successes */
	u32	tm_failures;	/*  TM failures */
	u32	tm_io_comps;	/*  TM IO completions */
	u32	tm_qresumes;	/*  TM queue resumes (after waiting
					 * for resources)
					 */
	u32	tm_iocdowns;	/*  TM cmnds affected by IOC down */
	u32	tm_cleanups;	/*  TM cleanups */
	u32	tm_cleanup_comps;
					/*  TM cleanup completions */
	u32	ios;		/*  IO requests */
	u32	io_comps;	/*  IO completions */
	u64	input_reqs;	/*  INPUT requests */
	u64	output_reqs;	/*  OUTPUT requests */
};

/**
 * FCS remote port statistics
 */
struct bfa_itnim_stats_s {
	u32        onlines;	/*  num rport online */
	u32        offlines;	/*  num rport offline */
	u32        prli_sent;	/*  num prli sent out */
	u32        fcxp_alloc_wait;/*  num fcxp alloc waits */
	u32        prli_rsp_err;	/*  num prli rsp errors */
	u32        prli_rsp_acc;	/*  num prli rsp accepts */
	u32        initiator;	/*  rport is an initiator */
	u32        prli_rsp_parse_err;	/*  prli rsp parsing errors */
	u32        prli_rsp_rjt;	/*  num prli rsp rejects */
	u32        timeout;	/*  num timeouts detected */
	u32        sler;		/*  num sler notification from BFA */
	u32	rsvd;
	struct bfa_itnim_hal_stats_s	hal_stats;
};

/**
 * FCS itnim attributes returned in queries
 */
struct bfa_itnim_attr_s {
	enum bfa_itnim_state state; /*  FCS itnim state        */
	u8 retry;		/*  data retransmision support */
	u8	task_retry_id;  /*  task retry ident support   */
	u8 rec_support;    /*  REC supported              */
	u8 conf_comp;      /*  confirmed completion supp  */
	struct bfa_itnim_latency_s  io_latency; /* IO latency  */
};

/**
 * BFA ITNIM events.
 * Arguments below are in BFAL context from Mgmt
 * BFA_ITNIM_AEN_NEW:       [in]: None  [out]: vf_id, lpwwn
 * BFA_ITNIM_AEN_DELETE:    [in]: vf_id, lpwwn, rpwwn (0 = all fcp4 targets),
 *				  [out]: vf_id, ppwwn, lpwwn, rpwwn
 * BFA_ITNIM_AEN_ONLINE:    [in]: vf_id, lpwwn, rpwwn (0 = all fcp4 targets),
 *				  [out]: vf_id, ppwwn, lpwwn, rpwwn
 * BFA_ITNIM_AEN_OFFLINE:   [in]: vf_id, lpwwn, rpwwn (0 = all fcp4 targets),
 *				  [out]: vf_id, ppwwn, lpwwn, rpwwn
 * BFA_ITNIM_AEN_DISCONNECT:[in]: vf_id, lpwwn, rpwwn (0 = all fcp4 targets),
 *				  [out]: vf_id, ppwwn, lpwwn, rpwwn
 */
enum bfa_itnim_aen_event {
	BFA_ITNIM_AEN_ONLINE 	= 1,	/*  Target online */
	BFA_ITNIM_AEN_OFFLINE 	= 2,	/*  Target offline */
	BFA_ITNIM_AEN_DISCONNECT = 3,	/*  Target disconnected */
};

/**
 * BFA ITNIM event data structure.
 */
struct bfa_itnim_aen_data_s {
	u16        vf_id;	/*  vf_id of the IT nexus */
	u16        rsvd[3];
	wwn_t           ppwwn;	/*  WWN of its physical port */
	wwn_t           lpwwn;	/*  WWN of logical port */
	wwn_t           rpwwn;	/*  WWN of remote(target) port */
};

#endif /* __BFA_DEFS_ITNIM_H__ */