iscsi_transport.h 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #include <linux/module.h>
  2. #include <linux/list.h>
  3. #include "../../../drivers/target/iscsi/iscsi_target_core.h"
  4. struct iscsit_transport {
  5. #define ISCSIT_TRANSPORT_NAME 16
  6. char name[ISCSIT_TRANSPORT_NAME];
  7. int transport_type;
  8. struct module *owner;
  9. struct list_head t_node;
  10. int (*iscsit_setup_np)(struct iscsi_np *, struct __kernel_sockaddr_storage *);
  11. int (*iscsit_accept_np)(struct iscsi_np *, struct iscsi_conn *);
  12. void (*iscsit_free_np)(struct iscsi_np *);
  13. void (*iscsit_free_conn)(struct iscsi_conn *);
  14. struct iscsi_cmd *(*iscsit_alloc_cmd)(struct iscsi_conn *, gfp_t);
  15. int (*iscsit_get_login_rx)(struct iscsi_conn *, struct iscsi_login *);
  16. int (*iscsit_put_login_tx)(struct iscsi_conn *, struct iscsi_login *, u32);
  17. int (*iscsit_immediate_queue)(struct iscsi_conn *, struct iscsi_cmd *, int);
  18. int (*iscsit_response_queue)(struct iscsi_conn *, struct iscsi_cmd *, int);
  19. int (*iscsit_get_dataout)(struct iscsi_conn *, struct iscsi_cmd *, bool);
  20. int (*iscsit_queue_data_in)(struct iscsi_conn *, struct iscsi_cmd *);
  21. int (*iscsit_queue_status)(struct iscsi_conn *, struct iscsi_cmd *);
  22. };
  23. /*
  24. * From iscsi_target_transport.c
  25. */
  26. extern int iscsit_register_transport(struct iscsit_transport *);
  27. extern void iscsit_unregister_transport(struct iscsit_transport *);
  28. extern struct iscsit_transport *iscsit_get_transport(int);
  29. extern void iscsit_put_transport(struct iscsit_transport *);
  30. /*
  31. * From iscsi_target.c
  32. */
  33. extern int iscsit_setup_scsi_cmd(struct iscsi_conn *, struct iscsi_cmd *,
  34. unsigned char *);
  35. extern void iscsit_set_unsoliticed_dataout(struct iscsi_cmd *);
  36. extern int iscsit_process_scsi_cmd(struct iscsi_conn *, struct iscsi_cmd *,
  37. struct iscsi_scsi_req *);
  38. extern int iscsit_check_dataout_hdr(struct iscsi_conn *, unsigned char *,
  39. struct iscsi_cmd **);
  40. extern int iscsit_check_dataout_payload(struct iscsi_cmd *, struct iscsi_data *,
  41. bool);
  42. extern int iscsit_setup_nop_out(struct iscsi_conn *, struct iscsi_cmd *,
  43. struct iscsi_nopout *);
  44. extern int iscsit_process_nop_out(struct iscsi_conn *, struct iscsi_cmd *,
  45. struct iscsi_nopout *);
  46. extern int iscsit_handle_logout_cmd(struct iscsi_conn *, struct iscsi_cmd *,
  47. unsigned char *);
  48. extern int iscsit_handle_task_mgt_cmd(struct iscsi_conn *, struct iscsi_cmd *,
  49. unsigned char *);
  50. extern int iscsit_setup_text_cmd(struct iscsi_conn *, struct iscsi_cmd *,
  51. struct iscsi_text *);
  52. extern int iscsit_process_text_cmd(struct iscsi_conn *, struct iscsi_cmd *,
  53. struct iscsi_text *);
  54. extern void iscsit_build_rsp_pdu(struct iscsi_cmd *, struct iscsi_conn *,
  55. bool, struct iscsi_scsi_rsp *);
  56. extern void iscsit_build_nopin_rsp(struct iscsi_cmd *, struct iscsi_conn *,
  57. struct iscsi_nopin *, bool);
  58. extern void iscsit_build_task_mgt_rsp(struct iscsi_cmd *, struct iscsi_conn *,
  59. struct iscsi_tm_rsp *);
  60. extern int iscsit_build_text_rsp(struct iscsi_cmd *, struct iscsi_conn *,
  61. struct iscsi_text_rsp *);
  62. extern void iscsit_build_reject(struct iscsi_cmd *, struct iscsi_conn *,
  63. struct iscsi_reject *);
  64. extern int iscsit_build_logout_rsp(struct iscsi_cmd *, struct iscsi_conn *,
  65. struct iscsi_logout_rsp *);
  66. extern int iscsit_logout_post_handler(struct iscsi_cmd *, struct iscsi_conn *);
  67. /*
  68. * From iscsi_target_device.c
  69. */
  70. extern void iscsit_increment_maxcmdsn(struct iscsi_cmd *, struct iscsi_session *);
  71. /*
  72. * From iscsi_target_erl0.c
  73. */
  74. extern void iscsit_cause_connection_reinstatement(struct iscsi_conn *, int);
  75. /*
  76. * From iscsi_target_erl1.c
  77. */
  78. extern void iscsit_stop_dataout_timer(struct iscsi_cmd *);
  79. /*
  80. * From iscsi_target_tmr.c
  81. */
  82. extern int iscsit_tmr_post_handler(struct iscsi_cmd *, struct iscsi_conn *);
  83. /*
  84. * From iscsi_target_util.c
  85. */
  86. extern struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *, gfp_t);
  87. extern int iscsit_sequence_cmd(struct iscsi_conn *, struct iscsi_cmd *,
  88. unsigned char *, __be32);