diff options
author | Jens Axboe <jens.axboe@oracle.com> | 2009-11-03 15:14:39 -0500 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2009-11-03 15:14:39 -0500 |
commit | 2058297d2d045cb57138c33b87cfabcc80e65186 (patch) | |
tree | 7ccffd0e162cbd7471f643561e79f23abb989a62 /drivers/scsi/bfa/include/fcs/bfa_fcs_fabric.h | |
parent | 150e6c67f4bf6ab51e62defc41bd19a2eefe5709 (diff) | |
parent | 4b27e1bb442e964903f8a3fa6bdf33a602dc0941 (diff) |
Merge branch 'for-linus' into for-2.6.33
Conflicts:
block/cfq-iosched.c
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'drivers/scsi/bfa/include/fcs/bfa_fcs_fabric.h')
-rw-r--r-- | drivers/scsi/bfa/include/fcs/bfa_fcs_fabric.h | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/drivers/scsi/bfa/include/fcs/bfa_fcs_fabric.h b/drivers/scsi/bfa/include/fcs/bfa_fcs_fabric.h new file mode 100644 index 00000000000..4ffd2242d3d --- /dev/null +++ b/drivers/scsi/bfa/include/fcs/bfa_fcs_fabric.h | |||
@@ -0,0 +1,112 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2005-2009 Brocade Communications Systems, Inc. | ||
3 | * All rights reserved | ||
4 | * www.brocade.com | ||
5 | * | ||
6 | * Linux driver for Brocade Fibre Channel Host Bus Adapter. | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify it | ||
9 | * under the terms of the GNU General Public License (GPL) Version 2 as | ||
10 | * published by the Free Software Foundation | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, but | ||
13 | * WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
15 | * General Public License for more details. | ||
16 | */ | ||
17 | |||
18 | #ifndef __BFA_FCS_FABRIC_H__ | ||
19 | #define __BFA_FCS_FABRIC_H__ | ||
20 | |||
21 | struct bfa_fcs_s; | ||
22 | |||
23 | #include <defs/bfa_defs_status.h> | ||
24 | #include <defs/bfa_defs_vf.h> | ||
25 | #include <cs/bfa_q.h> | ||
26 | #include <cs/bfa_sm.h> | ||
27 | #include <defs/bfa_defs_pport.h> | ||
28 | #include <fcs/bfa_fcs_lport.h> | ||
29 | #include <protocol/fc_sp.h> | ||
30 | #include <fcs/bfa_fcs_auth.h> | ||
31 | |||
32 | /* | ||
33 | * forward declaration | ||
34 | */ | ||
35 | struct bfad_vf_s; | ||
36 | |||
37 | enum bfa_fcs_fabric_type { | ||
38 | BFA_FCS_FABRIC_UNKNOWN = 0, | ||
39 | BFA_FCS_FABRIC_SWITCHED = 1, | ||
40 | BFA_FCS_FABRIC_PLOOP = 2, | ||
41 | BFA_FCS_FABRIC_N2N = 3, | ||
42 | }; | ||
43 | |||
44 | |||
45 | struct bfa_fcs_fabric_s { | ||
46 | struct list_head qe; /* queue element */ | ||
47 | bfa_sm_t sm; /* state machine */ | ||
48 | struct bfa_fcs_s *fcs; /* FCS instance */ | ||
49 | struct bfa_fcs_port_s bport; /* base logical port */ | ||
50 | enum bfa_fcs_fabric_type fab_type; /* fabric type */ | ||
51 | enum bfa_pport_type oper_type; /* current link topology */ | ||
52 | u8 is_vf; /* is virtual fabric? */ | ||
53 | u8 is_npiv; /* is NPIV supported ? */ | ||
54 | u8 is_auth; /* is Security/Auth supported ? */ | ||
55 | u16 bb_credit; /* BB credit from fabric */ | ||
56 | u16 vf_id; /* virtual fabric ID */ | ||
57 | u16 num_vports; /* num vports */ | ||
58 | u16 rsvd; | ||
59 | struct list_head vport_q; /* queue of virtual ports */ | ||
60 | struct list_head vf_q; /* queue of virtual fabrics */ | ||
61 | struct bfad_vf_s *vf_drv; /* driver vf structure */ | ||
62 | struct bfa_timer_s link_timer; /* Link Failure timer. Vport */ | ||
63 | wwn_t fabric_name; /* attached fabric name */ | ||
64 | bfa_boolean_t auth_reqd; /* authentication required */ | ||
65 | struct bfa_timer_s delay_timer; /* delay timer */ | ||
66 | union { | ||
67 | u16 swp_vfid;/* switch port VF id */ | ||
68 | } event_arg; | ||
69 | struct bfa_fcs_auth_s auth; /* authentication config */ | ||
70 | struct bfa_wc_s wc; /* wait counter for delete */ | ||
71 | struct bfa_vf_stats_s stats; /* fabric/vf stats */ | ||
72 | struct bfa_lps_s *lps; /* lport login services */ | ||
73 | u8 fabric_ip_addr[BFA_FCS_FABRIC_IPADDR_SZ]; /* attached | ||
74 | * fabric's ip addr | ||
75 | */ | ||
76 | }; | ||
77 | |||
78 | #define bfa_fcs_fabric_npiv_capable(__f) (__f)->is_npiv | ||
79 | #define bfa_fcs_fabric_is_switched(__f) \ | ||
80 | ((__f)->fab_type == BFA_FCS_FABRIC_SWITCHED) | ||
81 | |||
82 | /** | ||
83 | * The design calls for a single implementation of base fabric and vf. | ||
84 | */ | ||
85 | #define bfa_fcs_vf_t struct bfa_fcs_fabric_s | ||
86 | |||
87 | struct bfa_vf_event_s { | ||
88 | u32 undefined; | ||
89 | }; | ||
90 | |||
91 | /** | ||
92 | * bfa fcs vf public functions | ||
93 | */ | ||
94 | bfa_status_t bfa_fcs_vf_mode_enable(struct bfa_fcs_s *fcs, u16 vf_id); | ||
95 | bfa_status_t bfa_fcs_vf_mode_disable(struct bfa_fcs_s *fcs); | ||
96 | bfa_status_t bfa_fcs_vf_create(bfa_fcs_vf_t *vf, struct bfa_fcs_s *fcs, | ||
97 | u16 vf_id, struct bfa_port_cfg_s *port_cfg, | ||
98 | struct bfad_vf_s *vf_drv); | ||
99 | bfa_status_t bfa_fcs_vf_delete(bfa_fcs_vf_t *vf); | ||
100 | void bfa_fcs_vf_start(bfa_fcs_vf_t *vf); | ||
101 | bfa_status_t bfa_fcs_vf_stop(bfa_fcs_vf_t *vf); | ||
102 | void bfa_fcs_vf_list(struct bfa_fcs_s *fcs, u16 *vf_ids, int *nvfs); | ||
103 | void bfa_fcs_vf_list_all(struct bfa_fcs_s *fcs, u16 *vf_ids, int *nvfs); | ||
104 | void bfa_fcs_vf_get_attr(bfa_fcs_vf_t *vf, struct bfa_vf_attr_s *vf_attr); | ||
105 | void bfa_fcs_vf_get_stats(bfa_fcs_vf_t *vf, | ||
106 | struct bfa_vf_stats_s *vf_stats); | ||
107 | void bfa_fcs_vf_clear_stats(bfa_fcs_vf_t *vf); | ||
108 | void bfa_fcs_vf_get_ports(bfa_fcs_vf_t *vf, wwn_t vpwwn[], int *nports); | ||
109 | bfa_fcs_vf_t *bfa_fcs_vf_lookup(struct bfa_fcs_s *fcs, u16 vf_id); | ||
110 | struct bfad_vf_s *bfa_fcs_vf_get_drv_vf(bfa_fcs_vf_t *vf); | ||
111 | |||
112 | #endif /* __BFA_FCS_FABRIC_H__ */ | ||