Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  * zfcp device driver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  * External function declarations.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7)  * Copyright IBM Corp. 2002, 2020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) #ifndef ZFCP_EXT_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) #define ZFCP_EXT_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) #include <linux/types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) #include <scsi/fc/fc_els.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) #include "zfcp_def.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) #include "zfcp_fc.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) /* zfcp_aux.c */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) extern struct zfcp_port *zfcp_get_port_by_wwpn(struct zfcp_adapter *, u64);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) extern struct zfcp_adapter *zfcp_adapter_enqueue(struct ccw_device *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) extern struct zfcp_port *zfcp_port_enqueue(struct zfcp_adapter *, u64, u32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) 					   u32);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) extern void zfcp_sg_free_table(struct scatterlist *, int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) extern int zfcp_sg_setup_table(struct scatterlist *, int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) extern void zfcp_adapter_release(struct kref *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) extern void zfcp_adapter_unregister(struct zfcp_adapter *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) /* zfcp_ccw.c */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) extern struct ccw_driver zfcp_ccw_driver;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) extern struct zfcp_adapter *zfcp_ccw_adapter_by_cdev(struct ccw_device *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) extern void zfcp_ccw_adapter_put(struct zfcp_adapter *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) /* zfcp_dbf.c */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) extern int zfcp_dbf_adapter_register(struct zfcp_adapter *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) extern void zfcp_dbf_adapter_unregister(struct zfcp_adapter *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) extern void zfcp_dbf_rec_trig(char *, struct zfcp_adapter *,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 			      struct zfcp_port *, struct scsi_device *, u8, u8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) extern void zfcp_dbf_rec_trig_lock(char *tag, struct zfcp_adapter *adapter,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 				   struct zfcp_port *port,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 				   struct scsi_device *sdev, u8 want, u8 need);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) extern void zfcp_dbf_rec_run(char *, struct zfcp_erp_action *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) extern void zfcp_dbf_rec_run_lvl(int level, char *tag,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 				 struct zfcp_erp_action *erp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) extern void zfcp_dbf_rec_run_wka(char *, struct zfcp_fc_wka_port *, u64);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) extern void zfcp_dbf_hba_fsf_uss(char *, struct zfcp_fsf_req *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) extern void zfcp_dbf_hba_fsf_res(char *, int, struct zfcp_fsf_req *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) extern void zfcp_dbf_hba_fsf_fces(char *tag, const struct zfcp_fsf_req *req,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 				  u64 wwpn, u32 fc_security_old,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 				  u32 fc_security_new);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) extern void zfcp_dbf_hba_bit_err(char *, struct zfcp_fsf_req *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) extern void zfcp_dbf_hba_def_err(struct zfcp_adapter *, u64, u16, void **);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) extern void zfcp_dbf_hba_basic(char *, struct zfcp_adapter *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) extern void zfcp_dbf_san_req(char *, struct zfcp_fsf_req *, u32);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) extern void zfcp_dbf_san_res(char *, struct zfcp_fsf_req *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) extern void zfcp_dbf_san_in_els(char *, struct zfcp_fsf_req *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) extern void zfcp_dbf_scsi_common(char *tag, int level, struct scsi_device *sdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 				 struct scsi_cmnd *sc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 				 struct zfcp_fsf_req *fsf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) extern void zfcp_dbf_scsi_eh(char *tag, struct zfcp_adapter *adapter,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 			     unsigned int scsi_id, int ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) /* zfcp_erp.c */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) extern void zfcp_erp_set_adapter_status(struct zfcp_adapter *, u32);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) extern void zfcp_erp_clear_adapter_status(struct zfcp_adapter *, u32);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) extern void zfcp_erp_port_forced_no_port_dbf(char *dbftag,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 					     struct zfcp_adapter *adapter,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 					     u64 port_name, u32 port_id);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) extern void zfcp_erp_adapter_reopen(struct zfcp_adapter *, int, char *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) extern void zfcp_erp_adapter_shutdown(struct zfcp_adapter *, int, char *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) extern void zfcp_erp_set_port_status(struct zfcp_port *, u32);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) extern void zfcp_erp_clear_port_status(struct zfcp_port *, u32);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) extern void zfcp_erp_port_reopen(struct zfcp_port *port, int clear,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 				 char *dbftag);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) extern void zfcp_erp_port_shutdown(struct zfcp_port *, int, char *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) extern void zfcp_erp_port_forced_reopen(struct zfcp_port *, int, char *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) extern void zfcp_erp_port_forced_reopen_all(struct zfcp_adapter *adapter,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 					    int clear, char *dbftag);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) extern void zfcp_erp_set_lun_status(struct scsi_device *, u32);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) extern void zfcp_erp_clear_lun_status(struct scsi_device *, u32);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) extern void zfcp_erp_lun_reopen(struct scsi_device *, int, char *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) extern void zfcp_erp_lun_shutdown(struct scsi_device *, int, char *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) extern void zfcp_erp_lun_shutdown_wait(struct scsi_device *, char *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) extern int  zfcp_erp_thread_setup(struct zfcp_adapter *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) extern void zfcp_erp_thread_kill(struct zfcp_adapter *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) extern void zfcp_erp_wait(struct zfcp_adapter *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) extern void zfcp_erp_notify(struct zfcp_erp_action *, unsigned long);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) extern void zfcp_erp_timeout_handler(struct timer_list *t);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) extern void zfcp_erp_adapter_reset_sync(struct zfcp_adapter *adapter,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 					char *dbftag);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) /* zfcp_fc.c */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) extern struct kmem_cache *zfcp_fc_req_cache;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) extern void zfcp_fc_enqueue_event(struct zfcp_adapter *,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 				enum fc_host_event_code event_code, u32);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) extern void zfcp_fc_post_event(struct work_struct *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) extern void zfcp_fc_scan_ports(struct work_struct *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) extern void zfcp_fc_incoming_els(struct zfcp_fsf_req *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) extern void zfcp_fc_port_did_lookup(struct work_struct *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) extern void zfcp_fc_trigger_did_lookup(struct zfcp_port *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) extern void zfcp_fc_plogi_evaluate(struct zfcp_port *, struct fc_els_flogi *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) extern void zfcp_fc_test_link(struct zfcp_port *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) extern void zfcp_fc_link_test_work(struct work_struct *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) extern void zfcp_fc_wka_ports_force_offline(struct zfcp_fc_wka_ports *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) extern int zfcp_fc_gs_setup(struct zfcp_adapter *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) extern void zfcp_fc_gs_destroy(struct zfcp_adapter *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) extern int zfcp_fc_exec_bsg_job(struct bsg_job *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) extern int zfcp_fc_timeout_bsg_job(struct bsg_job *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) extern void zfcp_fc_sym_name_update(struct work_struct *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) extern unsigned int zfcp_fc_port_scan_backoff(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) extern void zfcp_fc_conditional_port_scan(struct zfcp_adapter *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) extern void zfcp_fc_inverse_conditional_port_scan(struct zfcp_adapter *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) /* zfcp_fsf.c */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) extern struct kmem_cache *zfcp_fsf_qtcb_cache;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) extern int zfcp_fsf_open_port(struct zfcp_erp_action *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) extern int zfcp_fsf_open_wka_port(struct zfcp_fc_wka_port *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) extern int zfcp_fsf_close_wka_port(struct zfcp_fc_wka_port *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) extern int zfcp_fsf_close_port(struct zfcp_erp_action *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) extern int zfcp_fsf_close_physical_port(struct zfcp_erp_action *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) extern int zfcp_fsf_open_lun(struct zfcp_erp_action *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) extern int zfcp_fsf_close_lun(struct zfcp_erp_action *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) extern int zfcp_fsf_exchange_config_data(struct zfcp_erp_action *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) extern int zfcp_fsf_exchange_config_data_sync(struct zfcp_qdio *,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 					      struct fsf_qtcb_bottom_config *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) extern int zfcp_fsf_exchange_port_data(struct zfcp_erp_action *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) extern int zfcp_fsf_exchange_port_data_sync(struct zfcp_qdio *,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 					    struct fsf_qtcb_bottom_port *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) extern u32 zfcp_fsf_convert_portspeed(u32 fsf_speed);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) extern void zfcp_fsf_req_dismiss_all(struct zfcp_adapter *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) extern int zfcp_fsf_status_read(struct zfcp_qdio *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) extern int zfcp_status_read_refill(struct zfcp_adapter *adapter);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) extern int zfcp_fsf_send_ct(struct zfcp_fc_wka_port *, struct zfcp_fsf_ct_els *,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 			    mempool_t *, unsigned int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) extern int zfcp_fsf_send_els(struct zfcp_adapter *, u32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 			     struct zfcp_fsf_ct_els *, unsigned int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) extern int zfcp_fsf_fcp_cmnd(struct scsi_cmnd *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) extern void zfcp_fsf_req_free(struct zfcp_fsf_req *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) extern void zfcp_fsf_fc_host_link_down(struct zfcp_adapter *adapter);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) extern struct zfcp_fsf_req *zfcp_fsf_fcp_task_mgmt(struct scsi_device *sdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) 						   u8 tm_flags);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) extern struct zfcp_fsf_req *zfcp_fsf_abort_fcp_cmnd(struct scsi_cmnd *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) extern void zfcp_fsf_reqid_check(struct zfcp_qdio *, int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) enum zfcp_fsf_print_fmt {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) 	ZFCP_FSF_PRINT_FMT_LIST,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) 	ZFCP_FSF_PRINT_FMT_SINGLEITEM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) extern ssize_t zfcp_fsf_scnprint_fc_security(char *buf, size_t size,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) 					     u32 fc_security,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) 					     enum zfcp_fsf_print_fmt fmt);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) /* zfcp_qdio.c */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) extern int zfcp_qdio_setup(struct zfcp_adapter *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) extern void zfcp_qdio_destroy(struct zfcp_qdio *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) extern int zfcp_qdio_sbal_get(struct zfcp_qdio *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) extern int zfcp_qdio_send(struct zfcp_qdio *, struct zfcp_qdio_req *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) extern int zfcp_qdio_sbals_from_sg(struct zfcp_qdio *, struct zfcp_qdio_req *,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) 				   struct scatterlist *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) extern void zfcp_qdio_shost_update(struct zfcp_adapter *const adapter,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) 				   const struct zfcp_qdio *const qdio);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) extern int zfcp_qdio_open(struct zfcp_qdio *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) extern void zfcp_qdio_close(struct zfcp_qdio *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) extern void zfcp_qdio_siosl(struct zfcp_adapter *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) /* zfcp_scsi.c */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) extern bool zfcp_experimental_dix;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) extern struct scsi_transport_template *zfcp_scsi_transport_template;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) extern int zfcp_scsi_adapter_register(struct zfcp_adapter *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) extern void zfcp_scsi_adapter_unregister(struct zfcp_adapter *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) extern struct fc_function_template zfcp_transport_functions;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) extern void zfcp_scsi_rport_work(struct work_struct *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) extern void zfcp_scsi_schedule_rport_register(struct zfcp_port *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) extern void zfcp_scsi_schedule_rport_block(struct zfcp_port *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) extern void zfcp_scsi_schedule_rports_block(struct zfcp_adapter *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) extern void zfcp_scsi_set_prot(struct zfcp_adapter *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) extern void zfcp_scsi_dif_sense_error(struct scsi_cmnd *, int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) extern void zfcp_scsi_shost_update_config_data(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) 	struct zfcp_adapter *const adapter,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 	const struct fsf_qtcb_bottom_config *const bottom,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) 	const bool bottom_incomplete);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) extern void zfcp_scsi_shost_update_port_data(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) 	struct zfcp_adapter *const adapter,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 	const struct fsf_qtcb_bottom_port *const bottom);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) /* zfcp_sysfs.c */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) extern const struct attribute_group *zfcp_unit_attr_groups[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) extern struct attribute_group zfcp_sysfs_adapter_attrs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) extern const struct attribute_group *zfcp_port_attr_groups[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) extern struct mutex zfcp_sysfs_port_units_mutex;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) extern struct device_attribute *zfcp_sysfs_sdev_attrs[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) extern struct device_attribute *zfcp_sysfs_shost_attrs[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) extern const struct attribute_group zfcp_sysfs_diag_attr_group;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) bool zfcp_sysfs_port_is_removing(const struct zfcp_port *const port);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) /* zfcp_unit.c */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) extern int zfcp_unit_add(struct zfcp_port *, u64);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) extern int zfcp_unit_remove(struct zfcp_port *, u64);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) extern struct zfcp_unit *zfcp_unit_find(struct zfcp_port *, u64);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) extern struct scsi_device *zfcp_unit_sdev(struct zfcp_unit *unit);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) extern void zfcp_unit_scsi_scan(struct zfcp_unit *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) extern void zfcp_unit_queue_scsi_scan(struct zfcp_port *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) extern unsigned int zfcp_unit_sdev_status(struct zfcp_unit *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) #endif	/* ZFCP_EXT_H */