7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * CDDL HEADER START
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * The contents of this file are subject to the terms of the
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * Common Development and Distribution License (the "License").
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * You may not use this file except in compliance with the License.
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * See the License for the specific language governing permissions
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * and limitations under the License.
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * When distributing Covered Code, include this CDDL HEADER in each
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * If applicable, add the following below this CDDL HEADER, with the
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * fields enclosed by brackets "[]" replaced with your own identifying
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * information: Portions Copyright [yyyy] [name of copyright owner]
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * CDDL HEADER END
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * Use is subject to license terms.
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * FCOEI logging
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * IOCTL supporting stuff
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * define common constants
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang#define FCOEI_NAME_VERSION "SunFC FCoEI v" FCOEI_VERSION
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * define RNID Management Info
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * event specific
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * event related object
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * common data structure (fc_local_port_t) between leadville and fcoei
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * common data structure between fcoei and fcoe module
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * We will use ss_taskq to dispatch watchdog and other tasks
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * current port state, speed. see fctl.h
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * # of unprocessed port/link change
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * solicited and unsolicited exchanges timing checking
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * ioctl related stuff
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * fp-defined routines that fcoei will call
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * fcoei-defined plogi response that fp will use
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * fcoei-defined routines that fp will call
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * Direct p2p information, and ss's fcid will be stored here
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * RNID Management Information
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * fcoei_frame - corresponding data structure to fcoe_frame/fc_frame
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * will be used after the relevant frame mblk was released by ETH layer
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * fcoei_exchange - corresponding data structure to leadville fc_packet
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * current cnt for timing check, when the exchange is created
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * leadville fc_packet will not maintain oxid/rxid,
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * so fcoei exchange need do it
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * to link leadville's stuff
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * Define conversion and calculation macros
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang#define FRM2IFM(x_frm) ((fcoei_frame_t *)(x_frm)->frm_client_private)
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang ((fcoei_soft_state_t *)(x_frm)->frm_eport->eport_client_private)
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang#define PORT2SS(x_port) ((fcoei_soft_state_t *)(x_port)->port_fca_private)
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang ((fcoei_soft_state_t *)(x_eport)->eport_client_private)
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang#define FPKT2XCH(x_fpkt) ((fcoei_exchange_t *)x_fpkt->pkt_fca_private)
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang#define FRM2FPKT(x_fpkt) (FRM2IFM(frm)->ifm_xch->xch_fpkt)
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang#define HANDLE2SS(x_handle) ((fcoei_soft_state_t *)fca_handle)
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang FCOEI_LOG(x_p, "rctl/%x, fctl/%x, type/%x, oxid/%x", \
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang if (++xch->xch_ss->ss_next_sol_oxid == 0xFFFF) { \
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang } while (mod_hash_find(xch->xch_ss->ss_sol_oxid_hash, \
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang (mod_hash_key_t)(intptr_t)xch->xch_ss->ss_next_sol_oxid, \
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang (void) mod_hash_insert(xch->xch_ss->ss_sol_oxid_hash, \
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang if (++FRM2SS(frm)->ss_next_unsol_rxid == 0xFFFF) { \
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang } while (mod_hash_find(FRM2SS(frm)->ss_unsol_rxid_hash, \
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang (mod_hash_key_t)(intptr_t)FRM2SS(frm)->ss_next_unsol_rxid, \
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang FFM_RXID(FRM2SS(frm)->ss_next_unsol_rxid, frm); \
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang (void) mod_hash_insert(xch->xch_ss->ss_unsol_rxid_hash, \
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * Common functions defined in fcoei.c
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wangvoid fcoei_complete_xch(fcoei_exchange_t *xch, fcoe_frame_t *frm,
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wangvoid fcoei_init_ifm(fcoe_frame_t *frm, fcoei_exchange_t *xch);
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wangvoid fcoei_handle_comp_xch_list(fcoei_soft_state_t *ss);
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * Common functions defined in fcoei_lv.c
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wangvoid fcoei_init_fcatran_vectors(fc_fca_tran_t *fcatran);
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wangvoid fcoei_process_event_exchange(fcoei_event_t *ae);
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wangvoid fcoei_process_event_reset(fcoei_event_t *ae);
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang * Common functions defined in fcoei_eth.c
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wangvoid fcoei_process_unsol_frame(fcoe_frame_t *frm);
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wangvoid fcoei_handle_sol_frame_done(fcoe_frame_t *frm);
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wangvoid fcoei_port_event(fcoe_port_t *eport, uint32_t event);
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang#endif /* _KERNEL */
7ff836697c120cb94bd30d5c2204eb9b74718e4cZhong Wang#endif /* _FCOEI_H */