119 lines
3.5 KiB
C
119 lines
3.5 KiB
C
|
/*
|
||
|
* 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_TIN_H__
|
||
|
#define __BFA_DEFS_TIN_H__
|
||
|
|
||
|
#include <protocol/types.h>
|
||
|
#include <protocol/fc.h>
|
||
|
|
||
|
/**
|
||
|
* FCS tin states
|
||
|
*/
|
||
|
enum bfa_tin_state_e {
|
||
|
BFA_TIN_SM_OFFLINE = 0, /* tin is offline */
|
||
|
BFA_TIN_SM_WOS_LOGIN = 1, /* Waiting PRLI ACC/RJT from ULP */
|
||
|
BFA_TIN_SM_WFW_ONLINE = 2, /* Waiting ACK to PRLI ACC from FW */
|
||
|
BFA_TIN_SM_ONLINE = 3, /* tin login is complete */
|
||
|
BFA_TIN_SM_WIO_RELOGIN = 4, /* tin relogin is in progress */
|
||
|
BFA_TIN_SM_WIO_LOGOUT = 5, /* Processing of PRLO req from
|
||
|
* Initiator is in progress
|
||
|
*/
|
||
|
BFA_TIN_SM_WOS_LOGOUT = 6, /* Processing of PRLO req from
|
||
|
* Initiator is in progress
|
||
|
*/
|
||
|
BFA_TIN_SM_WIO_CLEAN = 7, /* Waiting for IO cleanup before tin
|
||
|
* is offline. This can be triggered
|
||
|
* by RPORT LOGO (rcvd/sent) or by
|
||
|
* PRLO (rcvd/sent)
|
||
|
*/
|
||
|
};
|
||
|
|
||
|
struct bfa_prli_req_s {
|
||
|
struct fchs_s fchs;
|
||
|
struct fc_prli_s prli_payload;
|
||
|
};
|
||
|
|
||
|
struct bfa_prlo_req_s {
|
||
|
struct fchs_s fchs;
|
||
|
struct fc_prlo_s prlo_payload;
|
||
|
};
|
||
|
|
||
|
void bfa_tin_send_login_rsp(void *bfa_tin, u32 login_rsp,
|
||
|
struct fc_ls_rjt_s rjt_payload);
|
||
|
void bfa_tin_send_logout_rsp(void *bfa_tin, u32 logout_rsp,
|
||
|
struct fc_ls_rjt_s rjt_payload);
|
||
|
/**
|
||
|
* FCS target port statistics
|
||
|
*/
|
||
|
struct bfa_tin_stats_s {
|
||
|
u32 onlines; /* ITN nexus onlines (PRLI done) */
|
||
|
u32 offlines; /* ITN Nexus offlines */
|
||
|
u32 prli_req_parse_err; /* prli req parsing errors */
|
||
|
u32 prli_rsp_rjt; /* num prli rsp rejects sent */
|
||
|
u32 prli_rsp_acc; /* num prli rsp accepts sent */
|
||
|
u32 cleanup_comps; /* ITN cleanup completions */
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* FCS tin attributes returned in queries
|
||
|
*/
|
||
|
struct bfa_tin_attr_s {
|
||
|
enum bfa_tin_state_e state;
|
||
|
u8 seq_retry; /* Sequence retry supported */
|
||
|
u8 rsvd[3];
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* BFA TIN async event data structure for BFAL
|
||
|
*/
|
||
|
enum bfa_tin_aen_event {
|
||
|
BFA_TIN_AEN_ONLINE = 1, /* Target online */
|
||
|
BFA_TIN_AEN_OFFLINE = 2, /* Target offline */
|
||
|
BFA_TIN_AEN_DISCONNECT = 3, /* Target disconnected */
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* BFA TIN event data structure.
|
||
|
*/
|
||
|
struct bfa_tin_aen_data_s {
|
||
|
u16 vf_id; /* vf_id of the IT nexus */
|
||
|
u16 rsvd[3];
|
||
|
wwn_t lpwwn; /* WWN of logical port */
|
||
|
wwn_t rpwwn; /* WWN of remote(target) port */
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Below APIs are needed from BFA driver
|
||
|
* Move these to BFA driver public header file?
|
||
|
*/
|
||
|
/* TIN rcvd new PRLI & gets bfad_tin_t ptr from driver this callback */
|
||
|
void *bfad_tin_rcvd_login_req(void *bfad_tm_port, void *bfa_tin,
|
||
|
wwn_t rp_wwn, u32 rp_fcid,
|
||
|
struct bfa_prli_req_s prli_req);
|
||
|
/* TIN rcvd new PRLO */
|
||
|
void bfad_tin_rcvd_logout_req(void *bfad_tin, wwn_t rp_wwn, u32 rp_fcid,
|
||
|
struct bfa_prlo_req_s prlo_req);
|
||
|
/* TIN is online and ready for IO */
|
||
|
void bfad_tin_online(void *bfad_tin);
|
||
|
/* TIN is offline and BFA driver can shutdown its upper stack */
|
||
|
void bfad_tin_offline(void *bfad_tin);
|
||
|
/* TIN does not need this BFA driver tin tag anymore, so can be freed */
|
||
|
void bfad_tin_res_free(void *bfad_tin);
|
||
|
|
||
|
#endif /* __BFA_DEFS_TIN_H__ */
|