diff options
author | Joe Eykholt <jeykholt@cisco.com> | 2010-07-20 18:21:12 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2010-07-28 10:06:02 -0400 |
commit | 922611569572d3c1aa0ed6491d21583fb3fcca22 (patch) | |
tree | f7cb42bf5519d1c42853808f2f784188afe1bc2e /include/scsi | |
parent | 239e81048b7dcd27448db40c845f88ac7c68424e (diff) |
[SCSI] libfc: don't require a local exchange for incoming requests
Incoming requests shouldn't require a local exchange if we're
just going to reply with one or two frames and don't expect
anything further. Don't allocate exchanges for such requests
until requested by the upper-layer protocol.
The sequence is always NULL for new requests, so remove
that as an argument to request handlers.
Also change the first argument to lport->tt.seq_els_rsp_send
from the sequence pointer to the received frame pointer, to
supply the exchange IDs and destination ID info.
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>
Diffstat (limited to 'include/scsi')
-rw-r--r-- | include/scsi/libfc.h | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/include/scsi/libfc.h b/include/scsi/libfc.h index 605f1d7861a7..14be49b44e84 100644 --- a/include/scsi/libfc.h +++ b/include/scsi/libfc.h | |||
@@ -249,14 +249,12 @@ struct fcoe_dev_stats { | |||
249 | 249 | ||
250 | /** | 250 | /** |
251 | * struct fc_seq_els_data - ELS data used for passing ELS specific responses | 251 | * struct fc_seq_els_data - ELS data used for passing ELS specific responses |
252 | * @fp: The ELS frame | ||
253 | * @reason: The reason for rejection | 252 | * @reason: The reason for rejection |
254 | * @explan: The explaination of the rejection | 253 | * @explan: The explaination of the rejection |
255 | * | 254 | * |
256 | * Mainly used by the exchange manager layer. | 255 | * Mainly used by the exchange manager layer. |
257 | */ | 256 | */ |
258 | struct fc_seq_els_data { | 257 | struct fc_seq_els_data { |
259 | struct fc_frame *fp; | ||
260 | enum fc_els_rjt_reason reason; | 258 | enum fc_els_rjt_reason reason; |
261 | enum fc_els_rjt_explan explan; | 259 | enum fc_els_rjt_explan explan; |
262 | }; | 260 | }; |
@@ -519,12 +517,11 @@ struct libfc_function_template { | |||
519 | struct fc_frame *); | 517 | struct fc_frame *); |
520 | 518 | ||
521 | /* | 519 | /* |
522 | * Send an ELS response using infomation from a previous | 520 | * Send an ELS response using infomation from the received frame. |
523 | * exchange and sequence. | ||
524 | * | 521 | * |
525 | * STATUS: OPTIONAL | 522 | * STATUS: OPTIONAL |
526 | */ | 523 | */ |
527 | void (*seq_els_rsp_send)(struct fc_seq *, enum fc_els_cmd, | 524 | void (*seq_els_rsp_send)(struct fc_frame *, enum fc_els_cmd, |
528 | struct fc_seq_els_data *); | 525 | struct fc_seq_els_data *); |
529 | 526 | ||
530 | /* | 527 | /* |
@@ -583,8 +580,7 @@ struct libfc_function_template { | |||
583 | * | 580 | * |
584 | * STATUS: OPTIONAL | 581 | * STATUS: OPTIONAL |
585 | */ | 582 | */ |
586 | void (*lport_recv)(struct fc_lport *, struct fc_seq *, | 583 | void (*lport_recv)(struct fc_lport *, struct fc_frame *); |
587 | struct fc_frame *); | ||
588 | 584 | ||
589 | /* | 585 | /* |
590 | * Reset the local port. | 586 | * Reset the local port. |
@@ -646,8 +642,7 @@ struct libfc_function_template { | |||
646 | * | 642 | * |
647 | * STATUS: OPTIONAL | 643 | * STATUS: OPTIONAL |
648 | */ | 644 | */ |
649 | void (*rport_recv_req)(struct fc_seq *, struct fc_frame *, | 645 | void (*rport_recv_req)(struct fc_lport *, struct fc_frame *); |
650 | struct fc_lport *); | ||
651 | 646 | ||
652 | /* | 647 | /* |
653 | * lookup an rport by it's port ID. | 648 | * lookup an rport by it's port ID. |
@@ -693,8 +688,7 @@ struct libfc_function_template { | |||
693 | * | 688 | * |
694 | * STATUS: OPTIONAL | 689 | * STATUS: OPTIONAL |
695 | */ | 690 | */ |
696 | void (*disc_recv_req)(struct fc_seq *, struct fc_frame *, | 691 | void (*disc_recv_req)(struct fc_lport *, struct fc_frame *); |
697 | struct fc_lport *); | ||
698 | 692 | ||
699 | /* | 693 | /* |
700 | * Start discovery for a local port. | 694 | * Start discovery for a local port. |