[SCSI] libfc: add method for setting handler for incoming exchange
Add a method for setting handler for incoming exchange. For multi-sequence exchanges, this allows the target driver to add a response handler for handling subsequent sequences, and exchange manager resets. The new function is called fc_seq_set_resp(). Signed-off-by: Joe Eykholt <jeykholt@cisco.com> Signed-off-by: Robert Love <robert.w.love@intel.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
parent
96ad846445
commit
1a5c2d7e5c
|
@ -558,6 +558,22 @@ static struct fc_seq *fc_seq_start_next(struct fc_seq *sp)
|
|||
return sp;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set the response handler for the exchange associated with a sequence.
|
||||
*/
|
||||
static void fc_seq_set_resp(struct fc_seq *sp,
|
||||
void (*resp)(struct fc_seq *, struct fc_frame *,
|
||||
void *),
|
||||
void *arg)
|
||||
{
|
||||
struct fc_exch *ep = fc_seq_exch(sp);
|
||||
|
||||
spin_lock_bh(&ep->ex_lock);
|
||||
ep->resp = resp;
|
||||
ep->arg = arg;
|
||||
spin_unlock_bh(&ep->ex_lock);
|
||||
}
|
||||
|
||||
/**
|
||||
* fc_seq_exch_abort() - Abort an exchange and sequence
|
||||
* @req_sp: The sequence to be aborted
|
||||
|
@ -2329,6 +2345,9 @@ int fc_exch_init(struct fc_lport *lport)
|
|||
if (!lport->tt.seq_start_next)
|
||||
lport->tt.seq_start_next = fc_seq_start_next;
|
||||
|
||||
if (!lport->tt.seq_set_resp)
|
||||
lport->tt.seq_set_resp = fc_seq_set_resp;
|
||||
|
||||
if (!lport->tt.exch_seq_send)
|
||||
lport->tt.exch_seq_send = fc_exch_seq_send;
|
||||
|
||||
|
|
|
@ -554,6 +554,16 @@ struct libfc_function_template {
|
|||
*/
|
||||
struct fc_seq *(*seq_start_next)(struct fc_seq *);
|
||||
|
||||
/*
|
||||
* Set a response handler for the exchange of the sequence.
|
||||
*
|
||||
* STATUS: OPTIONAL
|
||||
*/
|
||||
void (*seq_set_resp)(struct fc_seq *sp,
|
||||
void (*resp)(struct fc_seq *, struct fc_frame *,
|
||||
void *),
|
||||
void *arg);
|
||||
|
||||
/*
|
||||
* Assign a sequence for an incoming request frame.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue