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/** 19 * bfa_fcb_port.h BFA FCS virtual port driver interfaces 20 */ 21 22#ifndef __BFA_FCB_PORT_H__ 23#define __BFA_FCB_PORT_H__ 24 25#include <fcb/bfa_fcb_vport.h> 26/** 27 * fcs_port_fcb FCS port driver interfaces 28 */ 29 30/* 31 * Forward declarations 32 */ 33struct bfad_port_s; 34 35/* 36 * Callback functions from BFA FCS to driver 37 */ 38 39/** 40 * Call from FCS to driver module when a port is instantiated. The port 41 * can be a base port or a virtual port with in the base fabric or 42 * a virtual fabric. 43 * 44 * On this callback, driver is supposed to create scsi_host, scsi_tgt or 45 * network interfaces bases on ports personality/roles. 46 * 47 * base port of base fabric: vf_drv == NULL && vp_drv == NULL 48 * vport of base fabric: vf_drv == NULL && vp_drv != NULL 49 * base port of VF: vf_drv != NULL && vp_drv == NULL 50 * vport of VF: vf_drv != NULL && vp_drv != NULL 51 * 52 * @param[in] bfad - driver instance 53 * @param[in] port - FCS port instance 54 * @param[in] roles - port roles: IM, TM, IP 55 * @param[in] vf_drv - VF driver instance, NULL if base fabric (no VF) 56 * @param[in] vp_drv - vport driver instance, NULL if base port 57 * 58 * @return None 59 */ 60struct bfad_port_s *bfa_fcb_port_new(struct bfad_s *bfad, 61 struct bfa_fcs_port_s *port, 62 enum bfa_port_role roles, struct bfad_vf_s *vf_drv, 63 struct bfad_vport_s *vp_drv); 64 65/** 66 * Call from FCS to driver module when a port is deleted. The port 67 * can be a base port or a virtual port with in the base fabric or 68 * a virtual fabric. 69 * 70 * @param[in] bfad - driver instance 71 * @param[in] roles - port roles: IM, TM, IP 72 * @param[in] vf_drv - VF driver instance, NULL if base fabric (no VF) 73 * @param[in] vp_drv - vport driver instance, NULL if base port 74 * 75 * @return None 76 */ 77void bfa_fcb_port_delete(struct bfad_s *bfad, enum bfa_port_role roles, 78 struct bfad_vf_s *vf_drv, struct bfad_vport_s *vp_drv); 79 80/** 81 * Notification when port transitions to ONLINE state. 82 * 83 * Online notification is a logical link up for the local port. This 84 * notification is sent after a successfull FLOGI, or a successful 85 * link initialization in proviate-loop or N2N topologies. 86 * 87 * @param[in] bfad - driver instance 88 * @param[in] roles - port roles: IM, TM, IP 89 * @param[in] vf_drv - VF driver instance, NULL if base fabric (no VF) 90 * @param[in] vp_drv - vport driver instance, NULL if base port 91 * 92 * @return None 93 */ 94void bfa_fcb_port_online(struct bfad_s *bfad, enum bfa_port_role roles, 95 struct bfad_vf_s *vf_drv, struct bfad_vport_s *vp_drv); 96 97/** 98 * Notification when port transitions to OFFLINE state. 99 * 100 * Offline notification is a logical link down for the local port. 101 * 102 * @param[in] bfad - driver instance 103 * @param[in] roles - port roles: IM, TM, IP 104 * @param[in] vf_drv - VF driver instance, NULL if base fabric (no VF) 105 * @param[in] vp_drv - vport driver instance, NULL if base port 106 * 107 * @return None 108 */ 109void bfa_fcb_port_offline(struct bfad_s *bfad, enum bfa_port_role roles, 110 struct bfad_vf_s *vf_drv, struct bfad_vport_s *vp_drv); 111 112 113#endif /* __BFA_FCB_PORT_H__ */ 114