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#ifndef __BFA_DEFS_ITNIM_H__ 18#define __BFA_DEFS_ITNIM_H__ 19 20#include <bfa_os_inc.h> 21#include <protocol/types.h> 22 23/** 24 * FCS itnim states 25 */ 26enum bfa_itnim_state { 27 BFA_ITNIM_OFFLINE = 0, /* offline */ 28 BFA_ITNIM_PRLI_SEND = 1, /* prli send */ 29 BFA_ITNIM_PRLI_SENT = 2, /* prli sent */ 30 BFA_ITNIM_PRLI_RETRY = 3, /* prli retry */ 31 BFA_ITNIM_HCB_ONLINE = 4, /* online callback */ 32 BFA_ITNIM_ONLINE = 5, /* online */ 33 BFA_ITNIM_HCB_OFFLINE = 6, /* offline callback */ 34 BFA_ITNIM_INITIATIOR = 7, /* initiator */ 35}; 36 37struct bfa_itnim_latency_s { 38 u32 min; 39 u32 max; 40 u32 count; 41 u32 clock_res; 42 u32 avg; 43 u32 rsvd; 44}; 45 46struct bfa_itnim_hal_stats_s { 47 u32 onlines; /* ITN nexus onlines (PRLI done) */ 48 u32 offlines; /* ITN Nexus offlines */ 49 u32 creates; /* ITN create requests */ 50 u32 deletes; /* ITN delete requests */ 51 u32 create_comps; /* ITN create completions */ 52 u32 delete_comps; /* ITN delete completions */ 53 u32 sler_events; /* SLER (sequence level error 54 * recovery) events */ 55 u32 ioc_disabled; /* Num IOC disables */ 56 u32 cleanup_comps; /* ITN cleanup completions */ 57 u32 tm_cmnds; /* task management(TM) cmnds sent */ 58 u32 tm_fw_rsps; /* TM cmds firmware responses */ 59 u32 tm_success; /* TM successes */ 60 u32 tm_failures; /* TM failures */ 61 u32 tm_io_comps; /* TM IO completions */ 62 u32 tm_qresumes; /* TM queue resumes (after waiting 63 * for resources) 64 */ 65 u32 tm_iocdowns; /* TM cmnds affected by IOC down */ 66 u32 tm_cleanups; /* TM cleanups */ 67 u32 tm_cleanup_comps; 68 /* TM cleanup completions */ 69 u32 ios; /* IO requests */ 70 u32 io_comps; /* IO completions */ 71 u64 input_reqs; /* INPUT requests */ 72 u64 output_reqs; /* OUTPUT requests */ 73}; 74 75/** 76 * FCS remote port statistics 77 */ 78struct bfa_itnim_stats_s { 79 u32 onlines; /* num rport online */ 80 u32 offlines; /* num rport offline */ 81 u32 prli_sent; /* num prli sent out */ 82 u32 fcxp_alloc_wait;/* num fcxp alloc waits */ 83 u32 prli_rsp_err; /* num prli rsp errors */ 84 u32 prli_rsp_acc; /* num prli rsp accepts */ 85 u32 initiator; /* rport is an initiator */ 86 u32 prli_rsp_parse_err; /* prli rsp parsing errors */ 87 u32 prli_rsp_rjt; /* num prli rsp rejects */ 88 u32 timeout; /* num timeouts detected */ 89 u32 sler; /* num sler notification from BFA */ 90 u32 rsvd; 91 struct bfa_itnim_hal_stats_s hal_stats; 92}; 93 94/** 95 * FCS itnim attributes returned in queries 96 */ 97struct bfa_itnim_attr_s { 98 enum bfa_itnim_state state; /* FCS itnim state */ 99 u8 retry; /* data retransmision support */ 100 u8 task_retry_id; /* task retry ident support */ 101 u8 rec_support; /* REC supported */ 102 u8 conf_comp; /* confirmed completion supp */ 103 struct bfa_itnim_latency_s io_latency; /* IO latency */ 104}; 105 106/** 107 * BFA ITNIM events. 108 * Arguments below are in BFAL context from Mgmt 109 * BFA_ITNIM_AEN_NEW: [in]: None [out]: vf_id, lpwwn 110 * BFA_ITNIM_AEN_DELETE: [in]: vf_id, lpwwn, rpwwn (0 = all fcp4 targets), 111 * [out]: vf_id, ppwwn, lpwwn, rpwwn 112 * BFA_ITNIM_AEN_ONLINE: [in]: vf_id, lpwwn, rpwwn (0 = all fcp4 targets), 113 * [out]: vf_id, ppwwn, lpwwn, rpwwn 114 * BFA_ITNIM_AEN_OFFLINE: [in]: vf_id, lpwwn, rpwwn (0 = all fcp4 targets), 115 * [out]: vf_id, ppwwn, lpwwn, rpwwn 116 * BFA_ITNIM_AEN_DISCONNECT:[in]: vf_id, lpwwn, rpwwn (0 = all fcp4 targets), 117 * [out]: vf_id, ppwwn, lpwwn, rpwwn 118 */ 119enum bfa_itnim_aen_event { 120 BFA_ITNIM_AEN_ONLINE = 1, /* Target online */ 121 BFA_ITNIM_AEN_OFFLINE = 2, /* Target offline */ 122 BFA_ITNIM_AEN_DISCONNECT = 3, /* Target disconnected */ 123}; 124 125/** 126 * BFA ITNIM event data structure. 127 */ 128struct bfa_itnim_aen_data_s { 129 u16 vf_id; /* vf_id of the IT nexus */ 130 u16 rsvd[3]; 131 wwn_t ppwwn; /* WWN of its physical port */ 132 wwn_t lpwwn; /* WWN of logical port */ 133 wwn_t rpwwn; /* WWN of remote(target) port */ 134}; 135 136#endif /* __BFA_DEFS_ITNIM_H__ */ 137