2007-09-07 11:15:31 +04:00
/*
2008-06-10 20:20:58 +04:00
* zfcp device driver
2005-04-17 02:20:36 +04:00
*
2008-06-10 20:20:58 +04:00
* External function declarations .
2007-09-07 11:15:31 +04:00
*
2010-04-30 20:09:34 +04:00
* Copyright IBM Corporation 2002 , 2010
2005-04-17 02:20:36 +04:00
*/
# ifndef ZFCP_EXT_H
# define ZFCP_EXT_H
2009-11-24 18:54:09 +03:00
# include <linux/types.h>
# include <scsi/fc/fc_els.h>
2005-04-17 02:20:36 +04:00
# include "zfcp_def.h"
2009-11-24 18:54:13 +03:00
# include "zfcp_fc.h"
2005-04-17 02:20:36 +04:00
2008-07-02 12:56:41 +04:00
/* zfcp_aux.c */
2008-10-01 14:42:18 +04:00
extern struct zfcp_port * zfcp_get_port_by_wwpn ( struct zfcp_adapter * , u64 ) ;
2009-11-24 18:54:00 +03:00
extern struct zfcp_adapter * zfcp_adapter_enqueue ( struct ccw_device * ) ;
2008-10-01 14:42:18 +04:00
extern struct zfcp_port * zfcp_port_enqueue ( struct zfcp_adapter * , u64 , u32 ,
2008-07-02 12:56:41 +04:00
u32 ) ;
extern void zfcp_sg_free_table ( struct scatterlist * , int ) ;
extern int zfcp_sg_setup_table ( struct scatterlist * , int ) ;
2009-11-24 18:53:59 +03:00
extern void zfcp_device_unregister ( struct device * ,
const struct attribute_group * ) ;
extern void zfcp_adapter_release ( struct kref * ) ;
2009-11-24 18:54:00 +03:00
extern void zfcp_adapter_unregister ( struct zfcp_adapter * ) ;
2005-04-17 02:20:36 +04:00
2008-07-02 12:56:41 +04:00
/* zfcp_ccw.c */
2009-05-15 15:18:21 +04:00
extern int zfcp_ccw_priv_sch ( struct zfcp_adapter * ) ;
2009-09-24 12:23:22 +04:00
extern struct ccw_driver zfcp_ccw_driver ;
2009-11-24 18:54:00 +03:00
extern struct zfcp_adapter * zfcp_ccw_adapter_by_cdev ( struct ccw_device * ) ;
extern void zfcp_ccw_adapter_put ( struct zfcp_adapter * ) ;
2008-06-10 20:20:54 +04:00
2008-07-02 12:56:41 +04:00
/* zfcp_cfdc.c */
extern struct miscdevice zfcp_cfdc_misc ;
2010-09-08 16:39:59 +04:00
extern void zfcp_cfdc_port_denied ( struct zfcp_port * , union fsf_status_qual * ) ;
extern void zfcp_cfdc_lun_denied ( struct scsi_device * , union fsf_status_qual * ) ;
extern void zfcp_cfdc_lun_shrng_vltn ( struct scsi_device * ,
union fsf_status_qual * ) ;
extern int zfcp_cfdc_open_lun_eval ( struct scsi_device * ,
struct fsf_qtcb_bottom_support * ) ;
extern void zfcp_cfdc_adapter_access_changed ( struct zfcp_adapter * ) ;
2005-04-17 02:20:36 +04:00
2008-07-02 12:56:41 +04:00
/* zfcp_dbf.c */
2009-08-18 17:43:21 +04:00
extern int zfcp_dbf_adapter_register ( struct zfcp_adapter * ) ;
extern void zfcp_dbf_adapter_unregister ( struct zfcp_dbf * ) ;
2010-12-02 17:16:12 +03:00
extern void zfcp_dbf_rec_trig ( char * , struct zfcp_adapter * ,
struct zfcp_port * , struct scsi_device * , u8 , u8 ) ;
extern void zfcp_dbf_rec_run ( char * , struct zfcp_erp_action * ) ;
2010-12-02 17:16:14 +03:00
extern void zfcp_dbf_hba_fsf_uss ( char * , struct zfcp_fsf_req * ) ;
extern void zfcp_dbf_hba_fsf_res ( char * , struct zfcp_fsf_req * ) ;
extern void zfcp_dbf_hba_bit_err ( char * , struct zfcp_fsf_req * ) ;
2009-08-18 17:43:21 +04:00
extern void zfcp_dbf_hba_berr ( struct zfcp_dbf * , struct zfcp_fsf_req * ) ;
2010-12-02 17:16:13 +03:00
extern void zfcp_dbf_san_req ( char * , struct zfcp_fsf_req * , u32 ) ;
extern void zfcp_dbf_san_res ( char * , struct zfcp_fsf_req * ) ;
extern void zfcp_dbf_san_in_els ( char * , struct zfcp_fsf_req * ) ;
2010-12-02 17:16:15 +03:00
extern void zfcp_dbf_scsi ( char * , struct scsi_cmnd * , struct zfcp_fsf_req * ) ;
2005-04-17 02:20:36 +04:00
2008-07-02 12:56:41 +04:00
/* zfcp_erp.c */
2010-09-08 16:40:01 +04:00
extern void zfcp_erp_set_adapter_status ( struct zfcp_adapter * , u32 ) ;
extern void zfcp_erp_clear_adapter_status ( struct zfcp_adapter * , u32 ) ;
2009-03-02 15:09:04 +03:00
extern void zfcp_erp_adapter_reopen ( struct zfcp_adapter * , int , char * , void * ) ;
extern void zfcp_erp_adapter_shutdown ( struct zfcp_adapter * , int , char * ,
void * ) ;
2010-09-08 16:40:01 +04:00
extern void zfcp_erp_set_port_status ( struct zfcp_port * , u32 ) ;
extern void zfcp_erp_clear_port_status ( struct zfcp_port * , u32 ) ;
2009-03-02 15:09:04 +03:00
extern int zfcp_erp_port_reopen ( struct zfcp_port * , int , char * , void * ) ;
extern void zfcp_erp_port_shutdown ( struct zfcp_port * , int , char * , void * ) ;
extern void zfcp_erp_port_forced_reopen ( struct zfcp_port * , int , char * ,
void * ) ;
2010-09-08 16:40:01 +04:00
extern void zfcp_erp_set_lun_status ( struct scsi_device * , u32 ) ;
extern void zfcp_erp_clear_lun_status ( struct scsi_device * , u32 ) ;
2010-09-08 16:39:55 +04:00
extern void zfcp_erp_lun_reopen ( struct scsi_device * , int , char * , void * ) ;
extern void zfcp_erp_lun_shutdown ( struct scsi_device * , int , char * , void * ) ;
extern void zfcp_erp_lun_shutdown_wait ( struct scsi_device * , char * ) ;
2005-04-17 02:20:36 +04:00
extern int zfcp_erp_thread_setup ( struct zfcp_adapter * ) ;
2008-07-02 12:56:40 +04:00
extern void zfcp_erp_thread_kill ( struct zfcp_adapter * ) ;
extern void zfcp_erp_wait ( struct zfcp_adapter * ) ;
extern void zfcp_erp_notify ( struct zfcp_erp_action * , unsigned long ) ;
extern void zfcp_erp_timeout_handler ( unsigned long ) ;
2005-09-13 23:50:38 +04:00
2008-07-02 12:56:41 +04:00
/* zfcp_fc.c */
2010-07-16 17:37:39 +04:00
extern void zfcp_fc_enqueue_event ( struct zfcp_adapter * ,
enum fc_host_event_code event_code , u32 ) ;
extern void zfcp_fc_post_event ( struct work_struct * ) ;
2009-11-24 18:54:06 +03:00
extern void zfcp_fc_scan_ports ( struct work_struct * ) ;
2008-07-02 12:56:41 +04:00
extern void zfcp_fc_incoming_els ( struct zfcp_fsf_req * ) ;
2009-08-18 17:43:20 +04:00
extern void zfcp_fc_port_did_lookup ( struct work_struct * ) ;
2009-10-14 13:00:43 +04:00
extern void zfcp_fc_trigger_did_lookup ( struct zfcp_port * ) ;
2009-11-24 18:54:09 +03:00
extern void zfcp_fc_plogi_evaluate ( struct zfcp_port * , struct fc_els_flogi * ) ;
2009-08-18 17:43:23 +04:00
extern void zfcp_fc_test_link ( struct zfcp_port * ) ;
2009-03-02 15:09:01 +03:00
extern void zfcp_fc_link_test_work ( struct work_struct * ) ;
2009-11-24 18:54:11 +03:00
extern void zfcp_fc_wka_ports_force_offline ( struct zfcp_fc_wka_ports * ) ;
2009-08-18 17:43:22 +04:00
extern int zfcp_fc_gs_setup ( struct zfcp_adapter * ) ;
extern void zfcp_fc_gs_destroy ( struct zfcp_adapter * ) ;
2009-11-24 18:54:13 +03:00
extern int zfcp_fc_exec_bsg_job ( struct fc_bsg_job * ) ;
2010-01-14 19:19:01 +03:00
extern int zfcp_fc_timeout_bsg_job ( struct fc_bsg_job * ) ;
2008-07-02 12:56:41 +04:00
/* zfcp_fsf.c */
extern int zfcp_fsf_open_port ( struct zfcp_erp_action * ) ;
2009-11-24 18:54:11 +03:00
extern int zfcp_fsf_open_wka_port ( struct zfcp_fc_wka_port * ) ;
extern int zfcp_fsf_close_wka_port ( struct zfcp_fc_wka_port * ) ;
2008-07-02 12:56:41 +04:00
extern int zfcp_fsf_close_port ( struct zfcp_erp_action * ) ;
extern int zfcp_fsf_close_physical_port ( struct zfcp_erp_action * ) ;
2010-09-08 16:39:55 +04:00
extern int zfcp_fsf_open_lun ( struct zfcp_erp_action * ) ;
extern int zfcp_fsf_close_lun ( struct zfcp_erp_action * ) ;
2008-07-02 12:56:41 +04:00
extern int zfcp_fsf_exchange_config_data ( struct zfcp_erp_action * ) ;
2009-08-18 17:43:19 +04:00
extern int zfcp_fsf_exchange_config_data_sync ( struct zfcp_qdio * ,
2008-07-02 12:56:41 +04:00
struct fsf_qtcb_bottom_config * ) ;
extern int zfcp_fsf_exchange_port_data ( struct zfcp_erp_action * ) ;
2009-08-18 17:43:19 +04:00
extern int zfcp_fsf_exchange_port_data_sync ( struct zfcp_qdio * ,
2008-07-02 12:56:41 +04:00
struct fsf_qtcb_bottom_port * ) ;
extern struct zfcp_fsf_req * zfcp_fsf_control_file ( struct zfcp_adapter * ,
struct zfcp_fsf_cfdc * ) ;
extern void zfcp_fsf_req_dismiss_all ( struct zfcp_adapter * ) ;
2009-08-18 17:43:19 +04:00
extern int zfcp_fsf_status_read ( struct zfcp_qdio * ) ;
2008-07-02 12:56:41 +04:00
extern int zfcp_status_read_refill ( struct zfcp_adapter * adapter ) ;
2009-11-24 18:54:13 +03:00
extern int zfcp_fsf_send_ct ( struct zfcp_fc_wka_port * , struct zfcp_fsf_ct_els * ,
2010-01-14 19:19:02 +03:00
mempool_t * , unsigned int ) ;
2009-11-24 18:54:13 +03:00
extern int zfcp_fsf_send_els ( struct zfcp_adapter * , u32 ,
2010-01-14 19:19:02 +03:00
struct zfcp_fsf_ct_els * , unsigned int ) ;
2010-09-08 16:39:55 +04:00
extern int zfcp_fsf_fcp_cmnd ( struct scsi_cmnd * ) ;
2008-07-02 12:56:41 +04:00
extern void zfcp_fsf_req_free ( struct zfcp_fsf_req * ) ;
2010-09-08 16:39:55 +04:00
extern struct zfcp_fsf_req * zfcp_fsf_fcp_task_mgmt ( struct scsi_cmnd * , u8 ) ;
extern struct zfcp_fsf_req * zfcp_fsf_abort_fcp_cmnd ( struct scsi_cmnd * ) ;
2009-08-18 17:43:19 +04:00
extern void zfcp_fsf_reqid_check ( struct zfcp_qdio * , int ) ;
2005-09-13 23:50:38 +04:00
2008-07-02 12:56:41 +04:00
/* zfcp_qdio.c */
2009-08-18 17:43:22 +04:00
extern int zfcp_qdio_setup ( struct zfcp_adapter * ) ;
extern void zfcp_qdio_destroy ( struct zfcp_qdio * ) ;
2010-04-30 20:09:35 +04:00
extern int zfcp_qdio_sbal_get ( struct zfcp_qdio * ) ;
2010-02-17 13:18:59 +03:00
extern int zfcp_qdio_send ( struct zfcp_qdio * , struct zfcp_qdio_req * ) ;
2010-04-30 20:09:34 +04:00
extern int zfcp_qdio_sbals_from_sg ( struct zfcp_qdio * , struct zfcp_qdio_req * ,
2010-07-16 17:37:37 +04:00
struct scatterlist * ) ;
2009-08-18 17:43:19 +04:00
extern int zfcp_qdio_open ( struct zfcp_qdio * ) ;
extern void zfcp_qdio_close ( struct zfcp_qdio * ) ;
2010-07-16 17:37:43 +04:00
extern void zfcp_qdio_siosl ( struct zfcp_adapter * ) ;
2010-12-02 17:16:14 +03:00
extern struct zfcp_fsf_req * zfcp_fsf_get_req ( struct zfcp_qdio * ,
struct qdio_buffer * ) ;
2008-07-02 12:56:41 +04:00
/* zfcp_scsi.c */
extern struct zfcp_data zfcp_data ;
extern int zfcp_adapter_scsi_register ( struct zfcp_adapter * ) ;
extern void zfcp_adapter_scsi_unregister ( struct zfcp_adapter * ) ;
extern struct fc_function_template zfcp_transport_functions ;
2009-03-02 15:09:08 +03:00
extern void zfcp_scsi_rport_work ( struct work_struct * ) ;
extern void zfcp_scsi_schedule_rport_register ( struct zfcp_port * ) ;
extern void zfcp_scsi_schedule_rport_block ( struct zfcp_port * ) ;
extern void zfcp_scsi_schedule_rports_block ( struct zfcp_adapter * ) ;
2010-07-16 17:37:42 +04:00
extern void zfcp_scsi_set_prot ( struct zfcp_adapter * ) ;
extern void zfcp_scsi_dif_sense_error ( struct scsi_cmnd * , int ) ;
2005-09-13 23:50:38 +04:00
2008-07-02 12:56:41 +04:00
/* zfcp_sysfs.c */
extern struct attribute_group zfcp_sysfs_unit_attrs ;
extern struct attribute_group zfcp_sysfs_adapter_attrs ;
extern struct attribute_group zfcp_sysfs_port_attrs ;
extern struct device_attribute * zfcp_sysfs_sdev_attrs [ ] ;
extern struct device_attribute * zfcp_sysfs_shost_attrs [ ] ;
2008-06-10 20:20:55 +04:00
2010-09-08 16:39:52 +04:00
/* zfcp_unit.c */
extern int zfcp_unit_add ( struct zfcp_port * , u64 ) ;
extern int zfcp_unit_remove ( struct zfcp_port * , u64 ) ;
extern struct zfcp_unit * zfcp_unit_find ( struct zfcp_port * , u64 ) ;
extern struct scsi_device * zfcp_unit_sdev ( struct zfcp_unit * unit ) ;
extern void zfcp_unit_scsi_scan ( struct zfcp_unit * ) ;
extern void zfcp_unit_queue_scsi_scan ( struct zfcp_port * ) ;
extern unsigned int zfcp_unit_sdev_status ( struct zfcp_unit * ) ;
2005-04-17 02:20:36 +04:00
# endif /* ZFCP_EXT_H */