1#ifndef SCSI_TRANSPORT_SRP_H 2#define SCSI_TRANSPORT_SRP_H 3 4#include <linux/transport_class.h> 5#include <linux/types.h> 6#include <linux/mutex.h> 7 8#define SRP_RPORT_ROLE_INITIATOR 0 9#define SRP_RPORT_ROLE_TARGET 1 10 11struct srp_rport_identifiers { 12 u8 port_id[16]; 13 u8 roles; 14}; 15 16struct srp_rport { 17 /* for initiator and target drivers */ 18 19 struct device dev; 20 21 u8 port_id[16]; 22 u8 roles; 23 24 /* for initiator drivers */ 25 26 void *lld_data; /* LLD private data */ 27}; 28 29struct srp_function_template { 30 /* for initiator drivers */ 31 void (*rport_delete)(struct srp_rport *rport); 32 /* for target drivers */ 33 int (* tsk_mgmt_response)(struct Scsi_Host *, u64, u64, int); 34 int (* it_nexus_response)(struct Scsi_Host *, u64, int); 35}; 36 37extern struct scsi_transport_template * 38srp_attach_transport(struct srp_function_template *); 39extern void srp_release_transport(struct scsi_transport_template *); 40 41extern struct srp_rport *srp_rport_add(struct Scsi_Host *, 42 struct srp_rport_identifiers *); 43extern void srp_rport_del(struct srp_rport *); 44 45extern void srp_remove_host(struct Scsi_Host *); 46 47#endif 48