diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/scsi/iscsi_if.h | 230 | ||||
-rw-r--r-- | include/scsi/libiscsi.h | 1 | ||||
-rw-r--r-- | include/scsi/scsi_cmnd.h | 1 | ||||
-rw-r--r-- | include/scsi/scsi_driver.h | 2 | ||||
-rw-r--r-- | include/scsi/scsi_host.h | 10 | ||||
-rw-r--r-- | include/scsi/scsi_transport_iscsi.h | 4 |
6 files changed, 228 insertions, 20 deletions
diff --git a/include/scsi/iscsi_if.h b/include/scsi/iscsi_if.h index 5d6ed6cf12cc..fd0421c6d40a 100644 --- a/include/scsi/iscsi_if.h +++ b/include/scsi/iscsi_if.h | |||
@@ -70,6 +70,7 @@ enum iscsi_uevent_e { | |||
70 | ISCSI_UEVENT_LOGOUT_FLASHNODE = UEVENT_BASE + 29, | 70 | ISCSI_UEVENT_LOGOUT_FLASHNODE = UEVENT_BASE + 29, |
71 | ISCSI_UEVENT_LOGOUT_FLASHNODE_SID = UEVENT_BASE + 30, | 71 | ISCSI_UEVENT_LOGOUT_FLASHNODE_SID = UEVENT_BASE + 30, |
72 | ISCSI_UEVENT_SET_CHAP = UEVENT_BASE + 31, | 72 | ISCSI_UEVENT_SET_CHAP = UEVENT_BASE + 31, |
73 | ISCSI_UEVENT_GET_HOST_STATS = UEVENT_BASE + 32, | ||
73 | 74 | ||
74 | /* up events */ | 75 | /* up events */ |
75 | ISCSI_KEVENT_RECV_PDU = KEVENT_BASE + 1, | 76 | ISCSI_KEVENT_RECV_PDU = KEVENT_BASE + 1, |
@@ -242,6 +243,9 @@ struct iscsi_uevent { | |||
242 | uint32_t host_no; | 243 | uint32_t host_no; |
243 | uint32_t sid; | 244 | uint32_t sid; |
244 | } logout_flashnode_sid; | 245 | } logout_flashnode_sid; |
246 | struct msg_get_host_stats { | ||
247 | uint32_t host_no; | ||
248 | } get_host_stats; | ||
245 | } u; | 249 | } u; |
246 | union { | 250 | union { |
247 | /* messages k -> u */ | 251 | /* messages k -> u */ |
@@ -311,6 +315,7 @@ enum iscsi_param_type { | |||
311 | ISCSI_NET_PARAM, /* iscsi_net_param */ | 315 | ISCSI_NET_PARAM, /* iscsi_net_param */ |
312 | ISCSI_FLASHNODE_PARAM, /* iscsi_flashnode_param */ | 316 | ISCSI_FLASHNODE_PARAM, /* iscsi_flashnode_param */ |
313 | ISCSI_CHAP_PARAM, /* iscsi_chap_param */ | 317 | ISCSI_CHAP_PARAM, /* iscsi_chap_param */ |
318 | ISCSI_IFACE_PARAM, /* iscsi_iface_param */ | ||
314 | }; | 319 | }; |
315 | 320 | ||
316 | /* structure for minimalist usecase */ | 321 | /* structure for minimalist usecase */ |
@@ -383,28 +388,106 @@ struct iscsi_path { | |||
383 | #define ISCSI_VLAN_DISABLE 0x01 | 388 | #define ISCSI_VLAN_DISABLE 0x01 |
384 | #define ISCSI_VLAN_ENABLE 0x02 | 389 | #define ISCSI_VLAN_ENABLE 0x02 |
385 | 390 | ||
391 | /* iscsi generic enable/disabled setting for various features */ | ||
392 | #define ISCSI_NET_PARAM_DISABLE 0x01 | ||
393 | #define ISCSI_NET_PARAM_ENABLE 0x02 | ||
394 | |||
386 | /* iSCSI network params */ | 395 | /* iSCSI network params */ |
387 | enum iscsi_net_param { | 396 | enum iscsi_net_param { |
388 | ISCSI_NET_PARAM_IPV4_ADDR = 1, | 397 | ISCSI_NET_PARAM_IPV4_ADDR = 1, |
389 | ISCSI_NET_PARAM_IPV4_SUBNET = 2, | 398 | ISCSI_NET_PARAM_IPV4_SUBNET, |
390 | ISCSI_NET_PARAM_IPV4_GW = 3, | 399 | ISCSI_NET_PARAM_IPV4_GW, |
391 | ISCSI_NET_PARAM_IPV4_BOOTPROTO = 4, | 400 | ISCSI_NET_PARAM_IPV4_BOOTPROTO, |
392 | ISCSI_NET_PARAM_MAC = 5, | 401 | ISCSI_NET_PARAM_MAC, |
393 | ISCSI_NET_PARAM_IPV6_LINKLOCAL = 6, | 402 | ISCSI_NET_PARAM_IPV6_LINKLOCAL, |
394 | ISCSI_NET_PARAM_IPV6_ADDR = 7, | 403 | ISCSI_NET_PARAM_IPV6_ADDR, |
395 | ISCSI_NET_PARAM_IPV6_ROUTER = 8, | 404 | ISCSI_NET_PARAM_IPV6_ROUTER, |
396 | ISCSI_NET_PARAM_IPV6_ADDR_AUTOCFG = 9, | 405 | ISCSI_NET_PARAM_IPV6_ADDR_AUTOCFG, |
397 | ISCSI_NET_PARAM_IPV6_LINKLOCAL_AUTOCFG = 10, | 406 | ISCSI_NET_PARAM_IPV6_LINKLOCAL_AUTOCFG, |
398 | ISCSI_NET_PARAM_IPV6_ROUTER_AUTOCFG = 11, | 407 | ISCSI_NET_PARAM_IPV6_ROUTER_AUTOCFG, |
399 | ISCSI_NET_PARAM_IFACE_ENABLE = 12, | 408 | ISCSI_NET_PARAM_IFACE_ENABLE, |
400 | ISCSI_NET_PARAM_VLAN_ID = 13, | 409 | ISCSI_NET_PARAM_VLAN_ID, |
401 | ISCSI_NET_PARAM_VLAN_PRIORITY = 14, | 410 | ISCSI_NET_PARAM_VLAN_PRIORITY, |
402 | ISCSI_NET_PARAM_VLAN_ENABLED = 15, | 411 | ISCSI_NET_PARAM_VLAN_ENABLED, |
403 | ISCSI_NET_PARAM_VLAN_TAG = 16, | 412 | ISCSI_NET_PARAM_VLAN_TAG, |
404 | ISCSI_NET_PARAM_IFACE_TYPE = 17, | 413 | ISCSI_NET_PARAM_IFACE_TYPE, |
405 | ISCSI_NET_PARAM_IFACE_NAME = 18, | 414 | ISCSI_NET_PARAM_IFACE_NAME, |
406 | ISCSI_NET_PARAM_MTU = 19, | 415 | ISCSI_NET_PARAM_MTU, |
407 | ISCSI_NET_PARAM_PORT = 20, | 416 | ISCSI_NET_PARAM_PORT, |
417 | ISCSI_NET_PARAM_IPADDR_STATE, | ||
418 | ISCSI_NET_PARAM_IPV6_LINKLOCAL_STATE, | ||
419 | ISCSI_NET_PARAM_IPV6_ROUTER_STATE, | ||
420 | ISCSI_NET_PARAM_DELAYED_ACK_EN, | ||
421 | ISCSI_NET_PARAM_TCP_NAGLE_DISABLE, | ||
422 | ISCSI_NET_PARAM_TCP_WSF_DISABLE, | ||
423 | ISCSI_NET_PARAM_TCP_WSF, | ||
424 | ISCSI_NET_PARAM_TCP_TIMER_SCALE, | ||
425 | ISCSI_NET_PARAM_TCP_TIMESTAMP_EN, | ||
426 | ISCSI_NET_PARAM_CACHE_ID, | ||
427 | ISCSI_NET_PARAM_IPV4_DHCP_DNS_ADDR_EN, | ||
428 | ISCSI_NET_PARAM_IPV4_DHCP_SLP_DA_EN, | ||
429 | ISCSI_NET_PARAM_IPV4_TOS_EN, | ||
430 | ISCSI_NET_PARAM_IPV4_TOS, | ||
431 | ISCSI_NET_PARAM_IPV4_GRAT_ARP_EN, | ||
432 | ISCSI_NET_PARAM_IPV4_DHCP_ALT_CLIENT_ID_EN, | ||
433 | ISCSI_NET_PARAM_IPV4_DHCP_ALT_CLIENT_ID, | ||
434 | ISCSI_NET_PARAM_IPV4_DHCP_REQ_VENDOR_ID_EN, | ||
435 | ISCSI_NET_PARAM_IPV4_DHCP_USE_VENDOR_ID_EN, | ||
436 | ISCSI_NET_PARAM_IPV4_DHCP_VENDOR_ID, | ||
437 | ISCSI_NET_PARAM_IPV4_DHCP_LEARN_IQN_EN, | ||
438 | ISCSI_NET_PARAM_IPV4_FRAGMENT_DISABLE, | ||
439 | ISCSI_NET_PARAM_IPV4_IN_FORWARD_EN, | ||
440 | ISCSI_NET_PARAM_IPV4_TTL, | ||
441 | ISCSI_NET_PARAM_IPV6_GRAT_NEIGHBOR_ADV_EN, | ||
442 | ISCSI_NET_PARAM_IPV6_MLD_EN, | ||
443 | ISCSI_NET_PARAM_IPV6_FLOW_LABEL, | ||
444 | ISCSI_NET_PARAM_IPV6_TRAFFIC_CLASS, | ||
445 | ISCSI_NET_PARAM_IPV6_HOP_LIMIT, | ||
446 | ISCSI_NET_PARAM_IPV6_ND_REACHABLE_TMO, | ||
447 | ISCSI_NET_PARAM_IPV6_ND_REXMIT_TIME, | ||
448 | ISCSI_NET_PARAM_IPV6_ND_STALE_TMO, | ||
449 | ISCSI_NET_PARAM_IPV6_DUP_ADDR_DETECT_CNT, | ||
450 | ISCSI_NET_PARAM_IPV6_RTR_ADV_LINK_MTU, | ||
451 | ISCSI_NET_PARAM_REDIRECT_EN, | ||
452 | }; | ||
453 | |||
454 | enum iscsi_ipaddress_state { | ||
455 | ISCSI_IPDDRESS_STATE_UNCONFIGURED, | ||
456 | ISCSI_IPDDRESS_STATE_ACQUIRING, | ||
457 | ISCSI_IPDDRESS_STATE_TENTATIVE, | ||
458 | ISCSI_IPDDRESS_STATE_VALID, | ||
459 | ISCSI_IPDDRESS_STATE_DISABLING, | ||
460 | ISCSI_IPDDRESS_STATE_INVALID, | ||
461 | ISCSI_IPDDRESS_STATE_DEPRECATED, | ||
462 | }; | ||
463 | |||
464 | enum iscsi_router_state { | ||
465 | ISCSI_ROUTER_STATE_UNKNOWN, | ||
466 | ISCSI_ROUTER_STATE_ADVERTISED, | ||
467 | ISCSI_ROUTER_STATE_MANUAL, | ||
468 | ISCSI_ROUTER_STATE_STALE, | ||
469 | }; | ||
470 | |||
471 | /* iSCSI specific settings params for iface */ | ||
472 | enum iscsi_iface_param { | ||
473 | ISCSI_IFACE_PARAM_DEF_TASKMGMT_TMO, | ||
474 | ISCSI_IFACE_PARAM_HDRDGST_EN, | ||
475 | ISCSI_IFACE_PARAM_DATADGST_EN, | ||
476 | ISCSI_IFACE_PARAM_IMM_DATA_EN, | ||
477 | ISCSI_IFACE_PARAM_INITIAL_R2T_EN, | ||
478 | ISCSI_IFACE_PARAM_DATASEQ_INORDER_EN, | ||
479 | ISCSI_IFACE_PARAM_PDU_INORDER_EN, | ||
480 | ISCSI_IFACE_PARAM_ERL, | ||
481 | ISCSI_IFACE_PARAM_MAX_RECV_DLENGTH, | ||
482 | ISCSI_IFACE_PARAM_FIRST_BURST, | ||
483 | ISCSI_IFACE_PARAM_MAX_R2T, | ||
484 | ISCSI_IFACE_PARAM_MAX_BURST, | ||
485 | ISCSI_IFACE_PARAM_CHAP_AUTH_EN, | ||
486 | ISCSI_IFACE_PARAM_BIDI_CHAP_EN, | ||
487 | ISCSI_IFACE_PARAM_DISCOVERY_AUTH_OPTIONAL, | ||
488 | ISCSI_IFACE_PARAM_DISCOVERY_LOGOUT_EN, | ||
489 | ISCSI_IFACE_PARAM_STRICT_LOGIN_COMP_EN, | ||
490 | ISCSI_IFACE_PARAM_INITIATOR_NAME, | ||
408 | }; | 491 | }; |
409 | 492 | ||
410 | enum iscsi_conn_state { | 493 | enum iscsi_conn_state { |
@@ -535,6 +618,7 @@ enum iscsi_param { | |||
535 | 618 | ||
536 | ISCSI_PARAM_DISCOVERY_PARENT_IDX, | 619 | ISCSI_PARAM_DISCOVERY_PARENT_IDX, |
537 | ISCSI_PARAM_DISCOVERY_PARENT_TYPE, | 620 | ISCSI_PARAM_DISCOVERY_PARENT_TYPE, |
621 | ISCSI_PARAM_LOCAL_IPADDR, | ||
538 | /* must always be last */ | 622 | /* must always be last */ |
539 | ISCSI_PARAM_MAX, | 623 | ISCSI_PARAM_MAX, |
540 | }; | 624 | }; |
@@ -766,4 +850,112 @@ struct iscsi_chap_rec { | |||
766 | uint8_t password_length; | 850 | uint8_t password_length; |
767 | }; | 851 | }; |
768 | 852 | ||
853 | #define ISCSI_HOST_STATS_CUSTOM_MAX 32 | ||
854 | #define ISCSI_HOST_STATS_CUSTOM_DESC_MAX 64 | ||
855 | struct iscsi_host_stats_custom { | ||
856 | char desc[ISCSI_HOST_STATS_CUSTOM_DESC_MAX]; | ||
857 | uint64_t value; | ||
858 | }; | ||
859 | |||
860 | /* struct iscsi_offload_host_stats: Host statistics, | ||
861 | * Include statistics for MAC, IP, TCP & iSCSI. | ||
862 | */ | ||
863 | struct iscsi_offload_host_stats { | ||
864 | /* MAC */ | ||
865 | uint64_t mactx_frames; | ||
866 | uint64_t mactx_bytes; | ||
867 | uint64_t mactx_multicast_frames; | ||
868 | uint64_t mactx_broadcast_frames; | ||
869 | uint64_t mactx_pause_frames; | ||
870 | uint64_t mactx_control_frames; | ||
871 | uint64_t mactx_deferral; | ||
872 | uint64_t mactx_excess_deferral; | ||
873 | uint64_t mactx_late_collision; | ||
874 | uint64_t mactx_abort; | ||
875 | uint64_t mactx_single_collision; | ||
876 | uint64_t mactx_multiple_collision; | ||
877 | uint64_t mactx_collision; | ||
878 | uint64_t mactx_frames_dropped; | ||
879 | uint64_t mactx_jumbo_frames; | ||
880 | uint64_t macrx_frames; | ||
881 | uint64_t macrx_bytes; | ||
882 | uint64_t macrx_unknown_control_frames; | ||
883 | uint64_t macrx_pause_frames; | ||
884 | uint64_t macrx_control_frames; | ||
885 | uint64_t macrx_dribble; | ||
886 | uint64_t macrx_frame_length_error; | ||
887 | uint64_t macrx_jabber; | ||
888 | uint64_t macrx_carrier_sense_error; | ||
889 | uint64_t macrx_frame_discarded; | ||
890 | uint64_t macrx_frames_dropped; | ||
891 | uint64_t mac_crc_error; | ||
892 | uint64_t mac_encoding_error; | ||
893 | uint64_t macrx_length_error_large; | ||
894 | uint64_t macrx_length_error_small; | ||
895 | uint64_t macrx_multicast_frames; | ||
896 | uint64_t macrx_broadcast_frames; | ||
897 | /* IP */ | ||
898 | uint64_t iptx_packets; | ||
899 | uint64_t iptx_bytes; | ||
900 | uint64_t iptx_fragments; | ||
901 | uint64_t iprx_packets; | ||
902 | uint64_t iprx_bytes; | ||
903 | uint64_t iprx_fragments; | ||
904 | uint64_t ip_datagram_reassembly; | ||
905 | uint64_t ip_invalid_address_error; | ||
906 | uint64_t ip_error_packets; | ||
907 | uint64_t ip_fragrx_overlap; | ||
908 | uint64_t ip_fragrx_outoforder; | ||
909 | uint64_t ip_datagram_reassembly_timeout; | ||
910 | uint64_t ipv6tx_packets; | ||
911 | uint64_t ipv6tx_bytes; | ||
912 | uint64_t ipv6tx_fragments; | ||
913 | uint64_t ipv6rx_packets; | ||
914 | uint64_t ipv6rx_bytes; | ||
915 | uint64_t ipv6rx_fragments; | ||
916 | uint64_t ipv6_datagram_reassembly; | ||
917 | uint64_t ipv6_invalid_address_error; | ||
918 | uint64_t ipv6_error_packets; | ||
919 | uint64_t ipv6_fragrx_overlap; | ||
920 | uint64_t ipv6_fragrx_outoforder; | ||
921 | uint64_t ipv6_datagram_reassembly_timeout; | ||
922 | /* TCP */ | ||
923 | uint64_t tcptx_segments; | ||
924 | uint64_t tcptx_bytes; | ||
925 | uint64_t tcprx_segments; | ||
926 | uint64_t tcprx_byte; | ||
927 | uint64_t tcp_duplicate_ack_retx; | ||
928 | uint64_t tcp_retx_timer_expired; | ||
929 | uint64_t tcprx_duplicate_ack; | ||
930 | uint64_t tcprx_pure_ackr; | ||
931 | uint64_t tcptx_delayed_ack; | ||
932 | uint64_t tcptx_pure_ack; | ||
933 | uint64_t tcprx_segment_error; | ||
934 | uint64_t tcprx_segment_outoforder; | ||
935 | uint64_t tcprx_window_probe; | ||
936 | uint64_t tcprx_window_update; | ||
937 | uint64_t tcptx_window_probe_persist; | ||
938 | /* ECC */ | ||
939 | uint64_t ecc_error_correction; | ||
940 | /* iSCSI */ | ||
941 | uint64_t iscsi_pdu_tx; | ||
942 | uint64_t iscsi_data_bytes_tx; | ||
943 | uint64_t iscsi_pdu_rx; | ||
944 | uint64_t iscsi_data_bytes_rx; | ||
945 | uint64_t iscsi_io_completed; | ||
946 | uint64_t iscsi_unexpected_io_rx; | ||
947 | uint64_t iscsi_format_error; | ||
948 | uint64_t iscsi_hdr_digest_error; | ||
949 | uint64_t iscsi_data_digest_error; | ||
950 | uint64_t iscsi_sequence_error; | ||
951 | /* | ||
952 | * iSCSI Custom Host Statistics support, i.e. Transport could | ||
953 | * extend existing host statistics with its own specific statistics | ||
954 | * up to ISCSI_HOST_STATS_CUSTOM_MAX | ||
955 | */ | ||
956 | uint32_t custom_length; | ||
957 | struct iscsi_host_stats_custom custom[0] | ||
958 | __aligned(sizeof(uint64_t)); | ||
959 | }; | ||
960 | |||
769 | #endif | 961 | #endif |
diff --git a/include/scsi/libiscsi.h b/include/scsi/libiscsi.h index 6ac9e17acdc4..309f51336fb9 100644 --- a/include/scsi/libiscsi.h +++ b/include/scsi/libiscsi.h | |||
@@ -231,6 +231,7 @@ struct iscsi_conn { | |||
231 | uint8_t ipv6_traffic_class; | 231 | uint8_t ipv6_traffic_class; |
232 | uint8_t ipv6_flow_label; | 232 | uint8_t ipv6_flow_label; |
233 | uint8_t is_fw_assigned_ipv6; | 233 | uint8_t is_fw_assigned_ipv6; |
234 | char *local_ipaddr; | ||
234 | 235 | ||
235 | /* MIB-statistics */ | 236 | /* MIB-statistics */ |
236 | uint64_t txdata_octets; | 237 | uint64_t txdata_octets; |
diff --git a/include/scsi/scsi_cmnd.h b/include/scsi/scsi_cmnd.h index de5f5d8f1f8a..91558a1f97f4 100644 --- a/include/scsi/scsi_cmnd.h +++ b/include/scsi/scsi_cmnd.h | |||
@@ -55,6 +55,7 @@ struct scsi_cmnd { | |||
55 | struct scsi_device *device; | 55 | struct scsi_device *device; |
56 | struct list_head list; /* scsi_cmnd participates in queue lists */ | 56 | struct list_head list; /* scsi_cmnd participates in queue lists */ |
57 | struct list_head eh_entry; /* entry for the host eh_cmd_q */ | 57 | struct list_head eh_entry; /* entry for the host eh_cmd_q */ |
58 | struct delayed_work abort_work; | ||
58 | int eh_eflags; /* Used by error handlr */ | 59 | int eh_eflags; /* Used by error handlr */ |
59 | 60 | ||
60 | /* | 61 | /* |
diff --git a/include/scsi/scsi_driver.h b/include/scsi/scsi_driver.h index d443aa06a722..20fdfc2526ad 100644 --- a/include/scsi/scsi_driver.h +++ b/include/scsi/scsi_driver.h | |||
@@ -16,7 +16,7 @@ struct scsi_driver { | |||
16 | 16 | ||
17 | void (*rescan)(struct device *); | 17 | void (*rescan)(struct device *); |
18 | int (*done)(struct scsi_cmnd *); | 18 | int (*done)(struct scsi_cmnd *); |
19 | int (*eh_action)(struct scsi_cmnd *, unsigned char *, int, int); | 19 | int (*eh_action)(struct scsi_cmnd *, int); |
20 | }; | 20 | }; |
21 | #define to_scsi_driver(drv) \ | 21 | #define to_scsi_driver(drv) \ |
22 | container_of((drv), struct scsi_driver, gendrv) | 22 | container_of((drv), struct scsi_driver, gendrv) |
diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h index fe3b58e836c8..53075e5039e6 100644 --- a/include/scsi/scsi_host.h +++ b/include/scsi/scsi_host.h | |||
@@ -479,6 +479,11 @@ struct scsi_host_template { | |||
479 | unsigned no_write_same:1; | 479 | unsigned no_write_same:1; |
480 | 480 | ||
481 | /* | 481 | /* |
482 | * True if asynchronous aborts are not supported | ||
483 | */ | ||
484 | unsigned no_async_abort:1; | ||
485 | |||
486 | /* | ||
482 | * Countdown for host blocking with no commands outstanding. | 487 | * Countdown for host blocking with no commands outstanding. |
483 | */ | 488 | */ |
484 | unsigned int max_host_blocked; | 489 | unsigned int max_host_blocked; |
@@ -690,6 +695,11 @@ struct Scsi_Host { | |||
690 | struct workqueue_struct *work_q; | 695 | struct workqueue_struct *work_q; |
691 | 696 | ||
692 | /* | 697 | /* |
698 | * Task management function work queue | ||
699 | */ | ||
700 | struct workqueue_struct *tmf_work_q; | ||
701 | |||
702 | /* | ||
693 | * Host has rejected a command because it was busy. | 703 | * Host has rejected a command because it was busy. |
694 | */ | 704 | */ |
695 | unsigned int host_blocked; | 705 | unsigned int host_blocked; |
diff --git a/include/scsi/scsi_transport_iscsi.h b/include/scsi/scsi_transport_iscsi.h index fe7c8f3e93f8..88640a47216c 100644 --- a/include/scsi/scsi_transport_iscsi.h +++ b/include/scsi/scsi_transport_iscsi.h | |||
@@ -166,6 +166,7 @@ struct iscsi_transport { | |||
166 | int (*logout_flashnode) (struct iscsi_bus_flash_session *fnode_sess, | 166 | int (*logout_flashnode) (struct iscsi_bus_flash_session *fnode_sess, |
167 | struct iscsi_bus_flash_conn *fnode_conn); | 167 | struct iscsi_bus_flash_conn *fnode_conn); |
168 | int (*logout_flashnode_sid) (struct iscsi_cls_session *cls_sess); | 168 | int (*logout_flashnode_sid) (struct iscsi_cls_session *cls_sess); |
169 | int (*get_host_stats) (struct Scsi_Host *shost, char *buf, int len); | ||
169 | }; | 170 | }; |
170 | 171 | ||
171 | /* | 172 | /* |
@@ -478,4 +479,7 @@ iscsi_find_flashnode_sess(struct Scsi_Host *shost, void *data, | |||
478 | extern struct device * | 479 | extern struct device * |
479 | iscsi_find_flashnode_conn(struct iscsi_bus_flash_session *fnode_sess); | 480 | iscsi_find_flashnode_conn(struct iscsi_bus_flash_session *fnode_sess); |
480 | 481 | ||
482 | extern char * | ||
483 | iscsi_get_ipaddress_state_name(enum iscsi_ipaddress_state port_state); | ||
484 | extern char *iscsi_get_router_state_name(enum iscsi_router_state router_state); | ||
481 | #endif | 485 | #endif |