1a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati/* 2a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati * Copyright (c) 2005-2010 Brocade Communications Systems, Inc. 3a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati * All rights reserved 4a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati * www.brocade.com 5a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati * 6a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati * Linux driver for Brocade Fibre Channel Host Bus Adapter. 7a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati * 8a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati * This program is free software; you can redistribute it and/or modify it 9a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati * under the terms of the GNU General Public License (GPL) Version 2 as 10a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati * published by the Free Software Foundation 11a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati * 12a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati * This program is distributed in the hope that it will be useful, but 13a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati * WITHOUT ANY WARRANTY; without even the implied warranty of 14a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati * General Public License for more details. 16a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati */ 17a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati/* 18a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati * fcbuild.h - FC link service frame building and parsing routines 19a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati */ 20a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 21a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati#ifndef __FCBUILD_H__ 22a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati#define __FCBUILD_H__ 23a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 24f16a17507b09e10e0cccc4d675ccbfe030d51ef1Maggie Zhang#include "bfad_drv.h" 25a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati#include "bfa_fc.h" 26a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati#include "bfa_defs_fcs.h" 27a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 28a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati/* 29a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati * Utility Macros/functions 30a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati */ 31a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 32a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati#define wwn_is_equal(_wwn1, _wwn2) \ 33a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati (memcmp(&(_wwn1), &(_wwn2), sizeof(wwn_t)) == 0) 34a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 35a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati#define fc_roundup(_l, _s) (((_l) + ((_s) - 1)) & ~((_s) - 1)) 36a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 37a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati/* 38a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati * Given the fc response length, this routine will return 39a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati * the length of the actual payload bytes following the CT header. 40a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati * 41a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati * Assumes the input response length does not include the crc, eof, etc. 42a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati */ 43a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatistatic inline u32 44a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatifc_get_ctresp_pyld_len(u32 resp_len) 45a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati{ 46a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati return resp_len - sizeof(struct ct_hdr_s); 47a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati} 48a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 49a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati/* 50a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati * Convert bfa speed to rpsc speed value. 51a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati */ 52a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatistatic inline enum bfa_port_speed 53a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatifc_rpsc_operspeed_to_bfa_speed(enum fc_rpsc_op_speed speed) 54a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati{ 55a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati switch (speed) { 56a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 57a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati case RPSC_OP_SPEED_1G: 58a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati return BFA_PORT_SPEED_1GBPS; 59a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 60a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati case RPSC_OP_SPEED_2G: 61a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati return BFA_PORT_SPEED_2GBPS; 62a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 63a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati case RPSC_OP_SPEED_4G: 64a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati return BFA_PORT_SPEED_4GBPS; 65a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 66a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati case RPSC_OP_SPEED_8G: 67a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati return BFA_PORT_SPEED_8GBPS; 68a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 698b070b4a022f86dd5098308e36426ce29b6b8960Krishna Gudipati case RPSC_OP_SPEED_16G: 708b070b4a022f86dd5098308e36426ce29b6b8960Krishna Gudipati return BFA_PORT_SPEED_16GBPS; 718b070b4a022f86dd5098308e36426ce29b6b8960Krishna Gudipati 72a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati case RPSC_OP_SPEED_10G: 73a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati return BFA_PORT_SPEED_10GBPS; 74a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 75a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati default: 76a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati return BFA_PORT_SPEED_UNKNOWN; 77a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati } 78a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati} 79a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 80a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati/* 81a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati * Convert RPSC speed to bfa speed value. 82a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati */ 83a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatistatic inline enum fc_rpsc_op_speed 84a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatifc_bfa_speed_to_rpsc_operspeed(enum bfa_port_speed op_speed) 85a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati{ 86a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati switch (op_speed) { 87a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 88a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati case BFA_PORT_SPEED_1GBPS: 89a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati return RPSC_OP_SPEED_1G; 90a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 91a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati case BFA_PORT_SPEED_2GBPS: 92a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati return RPSC_OP_SPEED_2G; 93a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 94a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati case BFA_PORT_SPEED_4GBPS: 95a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati return RPSC_OP_SPEED_4G; 96a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 97a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati case BFA_PORT_SPEED_8GBPS: 98a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati return RPSC_OP_SPEED_8G; 99a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 1008b070b4a022f86dd5098308e36426ce29b6b8960Krishna Gudipati case BFA_PORT_SPEED_16GBPS: 1018b070b4a022f86dd5098308e36426ce29b6b8960Krishna Gudipati return RPSC_OP_SPEED_16G; 1028b070b4a022f86dd5098308e36426ce29b6b8960Krishna Gudipati 103a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati case BFA_PORT_SPEED_10GBPS: 104a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati return RPSC_OP_SPEED_10G; 105a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 106a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati default: 107a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati return RPSC_OP_SPEED_NOT_EST; 108a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati } 109a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati} 110a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 111a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatienum fc_parse_status { 112a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati FC_PARSE_OK = 0, 113a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati FC_PARSE_FAILURE = 1, 114a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati FC_PARSE_BUSY = 2, 115a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati FC_PARSE_LEN_INVAL, 116a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati FC_PARSE_ACC_INVAL, 117a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati FC_PARSE_PWWN_NOT_EQUAL, 118a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati FC_PARSE_NWWN_NOT_EQUAL, 119a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati FC_PARSE_RXSZ_INVAL, 120a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati FC_PARSE_NOT_FCP, 121a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati FC_PARSE_OPAFLAG_INVAL, 122a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati FC_PARSE_RPAFLAG_INVAL, 123a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati FC_PARSE_OPA_INVAL, 124a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati FC_PARSE_RPA_INVAL, 125a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 126a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati}; 127a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 128a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatistruct fc_templates_s { 129a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati struct fchs_s fc_els_req; 130a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati struct fchs_s fc_bls_req; 131a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati struct fc_logi_s plogi; 132a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati struct fc_rrq_s rrq; 133a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati}; 134a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 135a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipativoid fcbuild_init(void); 136a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 137a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_flogi_build(struct fchs_s *fchs, struct fc_logi_s *flogi, 138a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u32 s_id, u16 ox_id, wwn_t port_name, wwn_t node_name, 139a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u16 pdu_size, u8 set_npiv, u8 set_auth, 140a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u16 local_bb_credits); 141a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 142a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_fdisc_build(struct fchs_s *buf, struct fc_logi_s *flogi, u32 s_id, 143a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u16 ox_id, wwn_t port_name, wwn_t node_name, 144a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u16 pdu_size); 145a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 146a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_flogi_acc_build(struct fchs_s *fchs, struct fc_logi_s *flogi, 14750444a340028119ce5ba45d60b4cf44e3e6e1b32Maggie u32 s_id, __be16 ox_id, 148a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati wwn_t port_name, wwn_t node_name, 149a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u16 pdu_size, 150be540a991e2097c313d7304e0daaf89d68011bb9Krishna Gudipati u16 local_bb_credits, u8 bb_scn); 151a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 152a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_plogi_build(struct fchs_s *fchs, void *pld, u32 d_id, 153a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u32 s_id, u16 ox_id, wwn_t port_name, 154be540a991e2097c313d7304e0daaf89d68011bb9Krishna Gudipati wwn_t node_name, u16 pdu_size, u16 bb_cr); 155a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 156a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatienum fc_parse_status fc_plogi_parse(struct fchs_s *fchs); 157a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 158a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_abts_build(struct fchs_s *buf, u32 d_id, u32 s_id, 159a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u16 ox_id); 160a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 161a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatienum fc_parse_status fc_abts_rsp_parse(struct fchs_s *buf, int len); 162a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 163a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_rrq_build(struct fchs_s *buf, struct fc_rrq_s *rrq, u32 d_id, 164a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u32 s_id, u16 ox_id, u16 rrq_oxid); 165a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatienum fc_parse_status fc_rrq_rsp_parse(struct fchs_s *buf, int len); 166a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 167a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_rspnid_build(struct fchs_s *fchs, void *pld, u32 s_id, 168a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u16 ox_id, u8 *name); 169ce7242b80278426a798c13ce96657690db9332d9Krishna Gudipatiu16 fc_rsnn_nn_build(struct fchs_s *fchs, void *pld, u32 s_id, 170ce7242b80278426a798c13ce96657690db9332d9Krishna Gudipati wwn_t node_name, u8 *name); 171a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 172a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_rftid_build(struct fchs_s *fchs, void *pld, u32 s_id, 173a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u16 ox_id, enum bfa_lport_role role); 174a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 175a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_rftid_build_sol(struct fchs_s *fchs, void *pyld, u32 s_id, 176a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u16 ox_id, u8 *fc4_bitmap, 177a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u32 bitmap_size); 178a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 179a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_rffid_build(struct fchs_s *fchs, void *pyld, u32 s_id, 180a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u16 ox_id, u8 fc4_type, u8 fc4_ftrs); 181a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 182a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_gidpn_build(struct fchs_s *fchs, void *pyld, u32 s_id, 183a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u16 ox_id, wwn_t port_name); 184a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 185a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_gpnid_build(struct fchs_s *fchs, void *pld, u32 s_id, 186a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u16 ox_id, u32 port_id); 187a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 188d7be54cc5c5f6f9cb9ac67462aadda57813698b8Krishna Gudipatiu16 fc_gs_rjt_build(struct fchs_s *fchs, struct ct_hdr_s *cthdr, 189d7be54cc5c5f6f9cb9ac67462aadda57813698b8Krishna Gudipati u32 d_id, u32 s_id, u16 ox_id, 190d7be54cc5c5f6f9cb9ac67462aadda57813698b8Krishna Gudipati u8 reason_code, u8 reason_code_expl); 191d7be54cc5c5f6f9cb9ac67462aadda57813698b8Krishna Gudipati 192a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_scr_build(struct fchs_s *fchs, struct fc_scr_s *scr, 193a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u8 set_br_reg, u32 s_id, u16 ox_id); 194a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 195a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_plogi_acc_build(struct fchs_s *fchs, void *pld, u32 d_id, 196a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u32 s_id, u16 ox_id, 197a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati wwn_t port_name, wwn_t node_name, 198be540a991e2097c313d7304e0daaf89d68011bb9Krishna Gudipati u16 pdu_size, u16 bb_cr); 199a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 200a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_adisc_build(struct fchs_s *fchs, struct fc_adisc_s *adisc, 20150444a340028119ce5ba45d60b4cf44e3e6e1b32Maggie u32 d_id, u32 s_id, __be16 ox_id, wwn_t port_name, 202a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati wwn_t node_name); 203a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 204a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatienum fc_parse_status fc_adisc_parse(struct fchs_s *fchs, void *pld, 205a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u32 host_dap, wwn_t node_name, wwn_t port_name); 206a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 207a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatienum fc_parse_status fc_adisc_rsp_parse(struct fc_adisc_s *adisc, int len, 208a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati wwn_t port_name, wwn_t node_name); 209a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 210a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_adisc_acc_build(struct fchs_s *fchs, struct fc_adisc_s *adisc, 21150444a340028119ce5ba45d60b4cf44e3e6e1b32Maggie u32 d_id, u32 s_id, __be16 ox_id, 212a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati wwn_t port_name, wwn_t node_name); 213a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_ls_rjt_build(struct fchs_s *fchs, struct fc_ls_rjt_s *ls_rjt, 21450444a340028119ce5ba45d60b4cf44e3e6e1b32Maggie u32 d_id, u32 s_id, __be16 ox_id, 215a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u8 reason_code, u8 reason_code_expl); 216a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_ls_acc_build(struct fchs_s *fchs, struct fc_els_cmd_s *els_cmd, 21750444a340028119ce5ba45d60b4cf44e3e6e1b32Maggie u32 d_id, u32 s_id, __be16 ox_id); 218a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_prli_build(struct fchs_s *fchs, void *pld, u32 d_id, 219a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u32 s_id, u16 ox_id); 220a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 221a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatienum fc_parse_status fc_prli_rsp_parse(struct fc_prli_s *prli, int len); 222a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 223a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_prli_acc_build(struct fchs_s *fchs, void *pld, u32 d_id, 22450444a340028119ce5ba45d60b4cf44e3e6e1b32Maggie u32 s_id, __be16 ox_id, 225a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati enum bfa_lport_role role); 226a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 227a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_rnid_build(struct fchs_s *fchs, struct fc_rnid_cmd_s *rnid, 228a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u32 d_id, u32 s_id, u16 ox_id, 229a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u32 data_format); 230a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 231a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_rnid_acc_build(struct fchs_s *fchs, 232a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati struct fc_rnid_acc_s *rnid_acc, u32 d_id, u32 s_id, 23350444a340028119ce5ba45d60b4cf44e3e6e1b32Maggie __be16 ox_id, u32 data_format, 234a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati struct fc_rnid_common_id_data_s *common_id_data, 235a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati struct fc_rnid_general_topology_data_s *gen_topo_data); 236a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 237a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_rpsc2_build(struct fchs_s *fchs, struct fc_rpsc2_cmd_s *rps2c, 238a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u32 d_id, u32 s_id, u32 *pid_list, u16 npids); 239a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_rpsc_build(struct fchs_s *fchs, struct fc_rpsc_cmd_s *rpsc, 240a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u32 d_id, u32 s_id, u16 ox_id); 241a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_rpsc_acc_build(struct fchs_s *fchs, 242a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati struct fc_rpsc_acc_s *rpsc_acc, u32 d_id, u32 s_id, 24350444a340028119ce5ba45d60b4cf44e3e6e1b32Maggie __be16 ox_id, struct fc_rpsc_speed_info_s *oper_speed); 244a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_gid_ft_build(struct fchs_s *fchs, void *pld, u32 s_id, 245a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u8 fc4_type); 246a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 247a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_rpnid_build(struct fchs_s *fchs, void *pyld, u32 s_id, 248a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u32 port_id, wwn_t port_name); 249a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 250a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_rnnid_build(struct fchs_s *fchs, void *pyld, u32 s_id, 251a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u32 port_id, wwn_t node_name); 252a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 253a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_rcsid_build(struct fchs_s *fchs, void *pyld, u32 s_id, 254a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u32 port_id, u32 cos); 255a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 256a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_rptid_build(struct fchs_s *fchs, void *pyld, u32 s_id, 257a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u32 port_id, u8 port_type); 258a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 259a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_ganxt_build(struct fchs_s *fchs, void *pyld, u32 s_id, 260a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u32 port_id); 261a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 262a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_logo_build(struct fchs_s *fchs, struct fc_logo_s *logo, u32 d_id, 263a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u32 s_id, u16 ox_id, wwn_t port_name); 264a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 265a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_logo_acc_build(struct fchs_s *fchs, void *pld, u32 d_id, 26650444a340028119ce5ba45d60b4cf44e3e6e1b32Maggie u32 s_id, __be16 ox_id); 267a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 268a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_fdmi_reqhdr_build(struct fchs_s *fchs, void *pyld, u32 s_id, 269a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u16 cmd_code); 270a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_gmal_req_build(struct fchs_s *fchs, void *pyld, u32 s_id, wwn_t wwn); 271a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_gfn_req_build(struct fchs_s *fchs, void *pyld, u32 s_id, wwn_t wwn); 272a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 273a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipativoid fc_get_fc4type_bitmask(u8 fc4_type, u8 *bit_mask); 274a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 275a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipativoid fc_els_req_build(struct fchs_s *fchs, u32 d_id, u32 s_id, 27650444a340028119ce5ba45d60b4cf44e3e6e1b32Maggie __be16 ox_id); 277a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 278a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatienum fc_parse_status fc_els_rsp_parse(struct fchs_s *fchs, int len); 279a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 280a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatienum fc_parse_status fc_plogi_rsp_parse(struct fchs_s *fchs, int len, 281a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati wwn_t port_name); 282a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 283a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatienum fc_parse_status fc_prli_parse(struct fc_prli_s *prli); 284a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 285a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatienum fc_parse_status fc_pdisc_parse(struct fchs_s *fchs, wwn_t node_name, 286a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati wwn_t port_name); 287a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 288a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_ba_acc_build(struct fchs_s *fchs, struct fc_ba_acc_s *ba_acc, u32 d_id, 28950444a340028119ce5ba45d60b4cf44e3e6e1b32Maggie u32 s_id, __be16 ox_id, u16 rx_id); 290a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 291a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiint fc_logout_params_pages(struct fchs_s *fc_frame, u8 els_code); 292a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 293a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_tprlo_acc_build(struct fchs_s *fchs, struct fc_tprlo_acc_s *tprlo_acc, 29450444a340028119ce5ba45d60b4cf44e3e6e1b32Maggie u32 d_id, u32 s_id, __be16 ox_id, int num_pages); 295a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 296a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_prlo_acc_build(struct fchs_s *fchs, struct fc_prlo_acc_s *prlo_acc, 29750444a340028119ce5ba45d60b4cf44e3e6e1b32Maggie u32 d_id, u32 s_id, __be16 ox_id, int num_pages); 298a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 299a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_logo_rsp_parse(struct fchs_s *fchs, int len); 300a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 301a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_pdisc_build(struct fchs_s *fchs, u32 d_id, u32 s_id, 302a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u16 ox_id, wwn_t port_name, wwn_t node_name, 303a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u16 pdu_size); 304a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 305a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_pdisc_rsp_parse(struct fchs_s *fchs, int len, wwn_t port_name); 306a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 307a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_prlo_build(struct fchs_s *fchs, u32 d_id, u32 s_id, 308a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u16 ox_id, int num_pages); 309a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 310a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_prlo_rsp_parse(struct fchs_s *fchs, int len); 311a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 312a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_tprlo_build(struct fchs_s *fchs, u32 d_id, u32 s_id, 313a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u16 ox_id, int num_pages, enum fc_tprlo_type tprlo_type, 314a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u32 tpr_id); 315a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 316a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_tprlo_rsp_parse(struct fchs_s *fchs, int len); 317a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 318a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_ba_rjt_build(struct fchs_s *fchs, u32 d_id, u32 s_id, 31950444a340028119ce5ba45d60b4cf44e3e6e1b32Maggie __be16 ox_id, u32 reason_code, u32 reason_expl); 320a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 321a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_gnnid_build(struct fchs_s *fchs, void *pyld, u32 s_id, u16 ox_id, 322a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u32 port_id); 323a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 324a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_ct_rsp_parse(struct ct_hdr_s *cthdr); 325a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati 326a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipatiu16 fc_rscn_build(struct fchs_s *fchs, struct fc_rscn_pl_s *rscn, u32 s_id, 327a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati u16 ox_id); 328a36c61f9025b8924f99f54d518763bee7aa84085Krishna Gudipati#endif 329