2007-09-07 09:15:31 +02:00
/*
2006-05-22 18:14:08 +02:00
* This file is part of the zfcp device driver for
* FCP adapters for IBM System z9 and zSeries .
2005-04-16 15:20:36 -07:00
*
2006-05-22 18:14:08 +02:00
* ( C ) Copyright IBM Corp . 2002 , 2006
2007-09-07 09:15:31 +02:00
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 , or ( at your option )
* any later version .
*
* 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 .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 675 Mass Ave , Cambridge , MA 0213 9 , USA .
2005-04-16 15:20:36 -07:00
*/
# ifndef ZFCP_EXT_H
# define ZFCP_EXT_H
# include "zfcp_def.h"
extern struct zfcp_data zfcp_data ;
/******************************** SYSFS *************************************/
2007-12-05 12:50:31 +01:00
extern struct attribute_group * zfcp_driver_attr_groups [ ] ;
2005-04-16 15:20:36 -07:00
extern int zfcp_sysfs_adapter_create_files ( struct device * ) ;
extern void zfcp_sysfs_adapter_remove_files ( struct device * ) ;
extern int zfcp_sysfs_port_create_files ( struct device * , u32 ) ;
extern void zfcp_sysfs_port_remove_files ( struct device * , u32 ) ;
extern int zfcp_sysfs_unit_create_files ( struct device * ) ;
extern void zfcp_sysfs_unit_remove_files ( struct device * ) ;
extern void zfcp_sysfs_port_release ( struct device * ) ;
extern void zfcp_sysfs_unit_release ( struct device * ) ;
/**************************** CONFIGURATION *********************************/
extern struct zfcp_unit * zfcp_get_unit_by_lun ( struct zfcp_port * , fcp_lun_t ) ;
extern struct zfcp_port * zfcp_get_port_by_wwpn ( struct zfcp_adapter * , wwn_t ) ;
extern struct zfcp_port * zfcp_get_port_by_did ( struct zfcp_adapter * , u32 ) ;
struct zfcp_adapter * zfcp_get_adapter_by_busid ( char * ) ;
extern struct zfcp_adapter * zfcp_adapter_enqueue ( struct ccw_device * ) ;
extern int zfcp_adapter_debug_register ( struct zfcp_adapter * ) ;
extern void zfcp_adapter_dequeue ( struct zfcp_adapter * ) ;
extern void zfcp_adapter_debug_unregister ( struct zfcp_adapter * ) ;
extern struct zfcp_port * zfcp_port_enqueue ( struct zfcp_adapter * , wwn_t ,
u32 , u32 ) ;
extern void zfcp_port_dequeue ( struct zfcp_port * ) ;
extern struct zfcp_unit * zfcp_unit_enqueue ( struct zfcp_port * , fcp_lun_t ) ;
extern void zfcp_unit_dequeue ( struct zfcp_unit * ) ;
/******************************* S/390 IO ************************************/
extern int zfcp_ccw_register ( void ) ;
extern void zfcp_qdio_zero_sbals ( struct qdio_buffer * * , int , int ) ;
extern int zfcp_qdio_allocate ( struct zfcp_adapter * ) ;
2008-06-10 18:20:57 +02:00
extern void zfcp_qdio_free ( struct zfcp_adapter * ) ;
extern int zfcp_qdio_send ( struct zfcp_fsf_req * fsf_req ) ;
2005-04-16 15:20:36 -07:00
extern volatile struct qdio_buffer_element * zfcp_qdio_sbale_req
2008-06-10 18:20:57 +02:00
( struct zfcp_fsf_req * ) ;
2005-04-16 15:20:36 -07:00
extern volatile struct qdio_buffer_element * zfcp_qdio_sbale_curr
( struct zfcp_fsf_req * ) ;
extern int zfcp_qdio_sbals_from_sg
2008-06-10 18:20:57 +02:00
( struct zfcp_fsf_req * , unsigned long , struct scatterlist * , int ) ;
extern int zfcp_qdio_open ( struct zfcp_adapter * adapter ) ;
extern void zfcp_qdio_close ( struct zfcp_adapter * adapter ) ;
2005-04-16 15:20:36 -07:00
/******************************** FSF ****************************************/
extern int zfcp_fsf_open_port ( struct zfcp_erp_action * ) ;
extern int zfcp_fsf_close_port ( struct zfcp_erp_action * ) ;
extern int zfcp_fsf_close_physical_port ( struct zfcp_erp_action * ) ;
extern int zfcp_fsf_open_unit ( struct zfcp_erp_action * ) ;
extern int zfcp_fsf_close_unit ( struct zfcp_erp_action * ) ;
extern int zfcp_fsf_exchange_config_data ( struct zfcp_erp_action * ) ;
2007-08-28 09:31:09 +02:00
extern int zfcp_fsf_exchange_config_data_sync ( struct zfcp_adapter * ,
struct fsf_qtcb_bottom_config * ) ;
extern int zfcp_fsf_exchange_port_data ( struct zfcp_erp_action * ) ;
extern int zfcp_fsf_exchange_port_data_sync ( struct zfcp_adapter * ,
struct fsf_qtcb_bottom_port * ) ;
2008-06-10 18:20:55 +02:00
extern struct zfcp_fsf_req * zfcp_fsf_control_file ( struct zfcp_adapter * adapter ,
struct zfcp_fsf_cfdc * fsf_cfdc ) ;
2006-09-18 22:29:56 +02:00
extern void zfcp_fsf_start_timer ( struct zfcp_fsf_req * , unsigned long ) ;
extern void zfcp_erp_start_timer ( struct zfcp_fsf_req * ) ;
2007-02-07 13:17:57 +01:00
extern void zfcp_fsf_req_dismiss_all ( struct zfcp_adapter * ) ;
2005-04-16 15:20:36 -07:00
extern int zfcp_fsf_status_read ( struct zfcp_adapter * , int ) ;
2008-05-19 12:17:37 +02:00
extern int zfcp_status_read_refill ( struct zfcp_adapter * adapter ) ;
2005-04-16 15:20:36 -07:00
extern int zfcp_fsf_req_create ( struct zfcp_adapter * , u32 , int , mempool_t * ,
2008-05-19 12:17:40 +02:00
unsigned long * , struct zfcp_fsf_req * * )
2008-06-10 18:20:57 +02:00
__acquires ( adapter - > req_q . lock ) ;
2005-04-16 15:20:36 -07:00
extern int zfcp_fsf_send_ct ( struct zfcp_send_ct * , mempool_t * ,
struct zfcp_erp_action * ) ;
extern int zfcp_fsf_send_els ( struct zfcp_send_els * ) ;
extern int zfcp_fsf_send_fcp_command_task ( struct zfcp_adapter * ,
struct zfcp_unit * ,
2006-09-18 22:29:56 +02:00
struct scsi_cmnd * , int , int ) ;
2005-04-16 15:20:36 -07:00
extern int zfcp_fsf_req_complete ( struct zfcp_fsf_req * ) ;
2005-06-13 13:20:35 +02:00
extern void zfcp_fsf_req_free ( struct zfcp_fsf_req * ) ;
2005-04-16 15:20:36 -07:00
extern struct zfcp_fsf_req * zfcp_fsf_send_fcp_command_task_management (
struct zfcp_adapter * , struct zfcp_unit * , u8 , int ) ;
extern struct zfcp_fsf_req * zfcp_fsf_abort_fcp_command (
unsigned long , struct zfcp_adapter * , struct zfcp_unit * , int ) ;
/******************************* FC/FCP **************************************/
2008-06-10 18:20:54 +02:00
extern void zfcp_fc_incoming_els ( struct zfcp_fsf_req * ) ;
extern int zfcp_fc_ns_gid_pn_request ( struct zfcp_erp_action * ) ;
extern void zfcp_fc_plogi_evaluate ( struct zfcp_port * , struct fsf_plogi * ) ;
extern void zfcp_test_link ( struct zfcp_port * ) ;
2005-04-16 15:20:36 -07:00
extern int zfcp_nameserver_enqueue ( struct zfcp_adapter * ) ;
/******************************* SCSI ****************************************/
extern int zfcp_adapter_scsi_register ( struct zfcp_adapter * ) ;
extern void zfcp_adapter_scsi_unregister ( struct zfcp_adapter * ) ;
extern void zfcp_set_fcp_dl ( struct fcp_cmnd_iu * , fcp_dl_t ) ;
extern char * zfcp_get_fcp_rsp_info_ptr ( struct fcp_rsp_iu * ) ;
2007-02-05 21:16:47 +01:00
extern void set_host_byte ( int * , char ) ;
extern void set_driver_byte ( int * , char ) ;
2005-04-16 15:20:36 -07:00
extern char * zfcp_get_fcp_sns_info_ptr ( struct fcp_rsp_iu * ) ;
extern fcp_dl_t zfcp_get_fcp_dl ( struct fcp_cmnd_iu * ) ;
extern int zfcp_scsi_command_async ( struct zfcp_adapter * , struct zfcp_unit * ,
2006-09-18 22:29:56 +02:00
struct scsi_cmnd * , int ) ;
extern int zfcp_scsi_command_sync ( struct zfcp_unit * , struct scsi_cmnd * , int ) ;
2005-04-16 15:20:36 -07:00
extern struct fc_function_template zfcp_transport_functions ;
/******************************** ERP ****************************************/
2008-04-18 12:51:55 +02:00
extern void zfcp_erp_modify_adapter_status ( struct zfcp_adapter * , u8 , void * ,
u32 , int ) ;
extern int zfcp_erp_adapter_reopen ( struct zfcp_adapter * , int , u8 , void * ) ;
extern int zfcp_erp_adapter_shutdown ( struct zfcp_adapter * , int , u8 , void * ) ;
extern void zfcp_erp_adapter_failed ( struct zfcp_adapter * , u8 , void * ) ;
extern void zfcp_erp_modify_port_status ( struct zfcp_port * , u8 , void * , u32 ,
int ) ;
extern int zfcp_erp_port_reopen ( struct zfcp_port * , int , u8 , void * ) ;
extern int zfcp_erp_port_shutdown ( struct zfcp_port * , int , u8 , void * ) ;
extern int zfcp_erp_port_forced_reopen ( struct zfcp_port * , int , u8 , void * ) ;
extern void zfcp_erp_port_failed ( struct zfcp_port * , u8 , void * ) ;
extern int zfcp_erp_port_reopen_all ( struct zfcp_adapter * , int , u8 , void * ) ;
extern void zfcp_erp_modify_unit_status ( struct zfcp_unit * , u8 , void * , u32 ,
int ) ;
extern int zfcp_erp_unit_reopen ( struct zfcp_unit * , int , u8 , void * ) ;
extern int zfcp_erp_unit_shutdown ( struct zfcp_unit * , int , u8 , void * ) ;
extern void zfcp_erp_unit_failed ( struct zfcp_unit * , u8 , void * ) ;
2005-04-16 15:20:36 -07:00
extern int zfcp_erp_thread_setup ( struct zfcp_adapter * ) ;
extern int zfcp_erp_thread_kill ( struct zfcp_adapter * ) ;
extern int zfcp_erp_wait ( struct zfcp_adapter * ) ;
2006-08-02 11:05:52 +02:00
extern void zfcp_erp_async_handler ( struct zfcp_erp_action * , unsigned long ) ;
2005-04-16 15:20:36 -07:00
2008-04-18 12:51:55 +02:00
extern void zfcp_erp_port_boxed ( struct zfcp_port * , u8 id , void * ref ) ;
extern void zfcp_erp_unit_boxed ( struct zfcp_unit * , u8 id , void * ref ) ;
extern void zfcp_erp_port_access_denied ( struct zfcp_port * , u8 id , void * ref ) ;
extern void zfcp_erp_unit_access_denied ( struct zfcp_unit * , u8 id , void * ref ) ;
extern void zfcp_erp_adapter_access_changed ( struct zfcp_adapter * , u8 , void * ) ;
extern void zfcp_erp_port_access_changed ( struct zfcp_port * , u8 , void * ) ;
extern void zfcp_erp_unit_access_changed ( struct zfcp_unit * , u8 , void * ) ;
2005-04-16 15:20:36 -07:00
/******************************** AUX ****************************************/
2008-06-10 18:20:55 +02:00
extern void zfcp_sg_free_table ( struct scatterlist * sg , int count ) ;
extern int zfcp_sg_setup_table ( struct scatterlist * sg , int count ) ;
2008-05-19 12:17:47 +02:00
extern void zfcp_rec_dbf_event_thread ( u8 id , struct zfcp_adapter * adapter ) ;
extern void zfcp_rec_dbf_event_thread_lock ( u8 id , struct zfcp_adapter * adapter ) ;
2008-04-18 12:51:55 +02:00
extern void zfcp_rec_dbf_event_adapter ( u8 id , void * ref , struct zfcp_adapter * ) ;
extern void zfcp_rec_dbf_event_port ( u8 id , void * ref , struct zfcp_port * port ) ;
extern void zfcp_rec_dbf_event_unit ( u8 id , void * ref , struct zfcp_unit * unit ) ;
extern void zfcp_rec_dbf_event_trigger ( u8 id , void * ref , u8 want , u8 need ,
void * action , struct zfcp_adapter * ,
2008-03-27 14:22:03 +01:00
struct zfcp_port * , struct zfcp_unit * ) ;
2008-03-27 14:22:04 +01:00
extern void zfcp_rec_dbf_event_action ( u8 id , struct zfcp_erp_action * ) ;
2008-03-27 14:22:01 +01:00
2005-09-13 21:50:38 +02:00
extern void zfcp_hba_dbf_event_fsf_response ( struct zfcp_fsf_req * ) ;
extern void zfcp_hba_dbf_event_fsf_unsol ( const char * , struct zfcp_adapter * ,
struct fsf_status_read_buffer * ) ;
extern void zfcp_hba_dbf_event_qdio ( struct zfcp_adapter * ,
unsigned int , unsigned int , unsigned int ,
int , int ) ;
extern void zfcp_san_dbf_event_ct_request ( struct zfcp_fsf_req * ) ;
extern void zfcp_san_dbf_event_ct_response ( struct zfcp_fsf_req * ) ;
extern void zfcp_san_dbf_event_els_request ( struct zfcp_fsf_req * ) ;
extern void zfcp_san_dbf_event_els_response ( struct zfcp_fsf_req * ) ;
extern void zfcp_san_dbf_event_incoming_els ( struct zfcp_fsf_req * ) ;
extern void zfcp_scsi_dbf_event_result ( const char * , int , struct zfcp_adapter * ,
2006-02-11 01:42:58 +01:00
struct scsi_cmnd * ,
struct zfcp_fsf_req * ) ;
2005-09-13 21:50:38 +02:00
extern void zfcp_scsi_dbf_event_abort ( const char * , struct zfcp_adapter * ,
2006-02-11 01:42:58 +01:00
struct scsi_cmnd * , struct zfcp_fsf_req * ,
2006-09-18 22:29:20 +02:00
unsigned long ) ;
2005-09-13 21:50:38 +02:00
extern void zfcp_scsi_dbf_event_devreset ( const char * , u8 , struct zfcp_unit * ,
struct scsi_cmnd * ) ;
2006-08-02 11:05:16 +02:00
extern int zfcp_reqlist_isempty ( struct zfcp_adapter * ) ;
2005-09-13 21:50:38 +02:00
2008-06-10 18:20:55 +02:00
extern struct miscdevice zfcp_cfdc_misc ;
2005-04-16 15:20:36 -07:00
# endif /* ZFCP_EXT_H */