| .. | .. |
|---|
| 4 | 4 | * |
|---|
| 5 | 5 | * External function declarations. |
|---|
| 6 | 6 | * |
|---|
| 7 | | - * Copyright IBM Corp. 2002, 2018 |
|---|
| 7 | + * Copyright IBM Corp. 2002, 2020 |
|---|
| 8 | 8 | */ |
|---|
| 9 | 9 | |
|---|
| 10 | 10 | #ifndef ZFCP_EXT_H |
|---|
| .. | .. |
|---|
| 44 | 44 | extern void zfcp_dbf_rec_run_wka(char *, struct zfcp_fc_wka_port *, u64); |
|---|
| 45 | 45 | extern void zfcp_dbf_hba_fsf_uss(char *, struct zfcp_fsf_req *); |
|---|
| 46 | 46 | extern void zfcp_dbf_hba_fsf_res(char *, int, struct zfcp_fsf_req *); |
|---|
| 47 | +extern void zfcp_dbf_hba_fsf_fces(char *tag, const struct zfcp_fsf_req *req, |
|---|
| 48 | + u64 wwpn, u32 fc_security_old, |
|---|
| 49 | + u32 fc_security_new); |
|---|
| 47 | 50 | extern void zfcp_dbf_hba_bit_err(char *, struct zfcp_fsf_req *); |
|---|
| 48 | 51 | extern void zfcp_dbf_hba_def_err(struct zfcp_adapter *, u64, u16, void **); |
|---|
| 49 | 52 | extern void zfcp_dbf_hba_basic(char *, struct zfcp_adapter *); |
|---|
| .. | .. |
|---|
| 59 | 62 | /* zfcp_erp.c */ |
|---|
| 60 | 63 | extern void zfcp_erp_set_adapter_status(struct zfcp_adapter *, u32); |
|---|
| 61 | 64 | extern void zfcp_erp_clear_adapter_status(struct zfcp_adapter *, u32); |
|---|
| 62 | | -extern void zfcp_erp_port_forced_no_port_dbf(char *id, |
|---|
| 65 | +extern void zfcp_erp_port_forced_no_port_dbf(char *dbftag, |
|---|
| 63 | 66 | struct zfcp_adapter *adapter, |
|---|
| 64 | 67 | u64 port_name, u32 port_id); |
|---|
| 65 | 68 | extern void zfcp_erp_adapter_reopen(struct zfcp_adapter *, int, char *); |
|---|
| 66 | 69 | extern void zfcp_erp_adapter_shutdown(struct zfcp_adapter *, int, char *); |
|---|
| 67 | 70 | extern void zfcp_erp_set_port_status(struct zfcp_port *, u32); |
|---|
| 68 | 71 | extern void zfcp_erp_clear_port_status(struct zfcp_port *, u32); |
|---|
| 69 | | -extern void zfcp_erp_port_reopen(struct zfcp_port *port, int clear, char *id); |
|---|
| 72 | +extern void zfcp_erp_port_reopen(struct zfcp_port *port, int clear, |
|---|
| 73 | + char *dbftag); |
|---|
| 70 | 74 | extern void zfcp_erp_port_shutdown(struct zfcp_port *, int, char *); |
|---|
| 71 | 75 | extern void zfcp_erp_port_forced_reopen(struct zfcp_port *, int, char *); |
|---|
| 72 | 76 | extern void zfcp_erp_port_forced_reopen_all(struct zfcp_adapter *adapter, |
|---|
| .. | .. |
|---|
| 81 | 85 | extern void zfcp_erp_wait(struct zfcp_adapter *); |
|---|
| 82 | 86 | extern void zfcp_erp_notify(struct zfcp_erp_action *, unsigned long); |
|---|
| 83 | 87 | extern void zfcp_erp_timeout_handler(struct timer_list *t); |
|---|
| 84 | | -extern void zfcp_erp_adapter_reset_sync(struct zfcp_adapter *adapter, char *id); |
|---|
| 88 | +extern void zfcp_erp_adapter_reset_sync(struct zfcp_adapter *adapter, |
|---|
| 89 | + char *dbftag); |
|---|
| 85 | 90 | |
|---|
| 86 | 91 | /* zfcp_fc.c */ |
|---|
| 87 | 92 | extern struct kmem_cache *zfcp_fc_req_cache; |
|---|
| .. | .. |
|---|
| 120 | 125 | extern int zfcp_fsf_exchange_port_data(struct zfcp_erp_action *); |
|---|
| 121 | 126 | extern int zfcp_fsf_exchange_port_data_sync(struct zfcp_qdio *, |
|---|
| 122 | 127 | struct fsf_qtcb_bottom_port *); |
|---|
| 128 | +extern u32 zfcp_fsf_convert_portspeed(u32 fsf_speed); |
|---|
| 123 | 129 | extern void zfcp_fsf_req_dismiss_all(struct zfcp_adapter *); |
|---|
| 124 | 130 | extern int zfcp_fsf_status_read(struct zfcp_qdio *); |
|---|
| 125 | 131 | extern int zfcp_status_read_refill(struct zfcp_adapter *adapter); |
|---|
| .. | .. |
|---|
| 129 | 135 | struct zfcp_fsf_ct_els *, unsigned int); |
|---|
| 130 | 136 | extern int zfcp_fsf_fcp_cmnd(struct scsi_cmnd *); |
|---|
| 131 | 137 | extern void zfcp_fsf_req_free(struct zfcp_fsf_req *); |
|---|
| 138 | +extern void zfcp_fsf_fc_host_link_down(struct zfcp_adapter *adapter); |
|---|
| 132 | 139 | extern struct zfcp_fsf_req *zfcp_fsf_fcp_task_mgmt(struct scsi_device *sdev, |
|---|
| 133 | 140 | u8 tm_flags); |
|---|
| 134 | 141 | extern struct zfcp_fsf_req *zfcp_fsf_abort_fcp_cmnd(struct scsi_cmnd *); |
|---|
| 135 | 142 | extern void zfcp_fsf_reqid_check(struct zfcp_qdio *, int); |
|---|
| 143 | +enum zfcp_fsf_print_fmt { |
|---|
| 144 | + ZFCP_FSF_PRINT_FMT_LIST, |
|---|
| 145 | + ZFCP_FSF_PRINT_FMT_SINGLEITEM, |
|---|
| 146 | +}; |
|---|
| 147 | +extern ssize_t zfcp_fsf_scnprint_fc_security(char *buf, size_t size, |
|---|
| 148 | + u32 fc_security, |
|---|
| 149 | + enum zfcp_fsf_print_fmt fmt); |
|---|
| 136 | 150 | |
|---|
| 137 | 151 | /* zfcp_qdio.c */ |
|---|
| 138 | 152 | extern int zfcp_qdio_setup(struct zfcp_adapter *); |
|---|
| .. | .. |
|---|
| 141 | 155 | extern int zfcp_qdio_send(struct zfcp_qdio *, struct zfcp_qdio_req *); |
|---|
| 142 | 156 | extern int zfcp_qdio_sbals_from_sg(struct zfcp_qdio *, struct zfcp_qdio_req *, |
|---|
| 143 | 157 | struct scatterlist *); |
|---|
| 158 | +extern void zfcp_qdio_shost_update(struct zfcp_adapter *const adapter, |
|---|
| 159 | + const struct zfcp_qdio *const qdio); |
|---|
| 144 | 160 | extern int zfcp_qdio_open(struct zfcp_qdio *); |
|---|
| 145 | 161 | extern void zfcp_qdio_close(struct zfcp_qdio *); |
|---|
| 146 | 162 | extern void zfcp_qdio_siosl(struct zfcp_adapter *); |
|---|
| 147 | 163 | |
|---|
| 148 | 164 | /* zfcp_scsi.c */ |
|---|
| 165 | +extern bool zfcp_experimental_dix; |
|---|
| 149 | 166 | extern struct scsi_transport_template *zfcp_scsi_transport_template; |
|---|
| 150 | 167 | extern int zfcp_scsi_adapter_register(struct zfcp_adapter *); |
|---|
| 151 | 168 | extern void zfcp_scsi_adapter_unregister(struct zfcp_adapter *); |
|---|
| .. | .. |
|---|
| 156 | 173 | extern void zfcp_scsi_schedule_rports_block(struct zfcp_adapter *); |
|---|
| 157 | 174 | extern void zfcp_scsi_set_prot(struct zfcp_adapter *); |
|---|
| 158 | 175 | extern void zfcp_scsi_dif_sense_error(struct scsi_cmnd *, int); |
|---|
| 176 | +extern void zfcp_scsi_shost_update_config_data( |
|---|
| 177 | + struct zfcp_adapter *const adapter, |
|---|
| 178 | + const struct fsf_qtcb_bottom_config *const bottom, |
|---|
| 179 | + const bool bottom_incomplete); |
|---|
| 180 | +extern void zfcp_scsi_shost_update_port_data( |
|---|
| 181 | + struct zfcp_adapter *const adapter, |
|---|
| 182 | + const struct fsf_qtcb_bottom_port *const bottom); |
|---|
| 159 | 183 | |
|---|
| 160 | 184 | /* zfcp_sysfs.c */ |
|---|
| 161 | 185 | extern const struct attribute_group *zfcp_unit_attr_groups[]; |
|---|
| .. | .. |
|---|
| 164 | 188 | extern struct mutex zfcp_sysfs_port_units_mutex; |
|---|
| 165 | 189 | extern struct device_attribute *zfcp_sysfs_sdev_attrs[]; |
|---|
| 166 | 190 | extern struct device_attribute *zfcp_sysfs_shost_attrs[]; |
|---|
| 191 | +extern const struct attribute_group zfcp_sysfs_diag_attr_group; |
|---|
| 167 | 192 | bool zfcp_sysfs_port_is_removing(const struct zfcp_port *const port); |
|---|
| 168 | 193 | |
|---|
| 169 | 194 | /* zfcp_unit.c */ |
|---|