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 /drivers/scsi/fcoe | |
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 'drivers/scsi/fcoe')
-rw-r--r-- | drivers/scsi/fcoe/libfcoe.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/scsi/fcoe/libfcoe.c b/drivers/scsi/fcoe/libfcoe.c index 4de8ced1fee7..2c265fe9ab32 100644 --- a/drivers/scsi/fcoe/libfcoe.c +++ b/drivers/scsi/fcoe/libfcoe.c | |||
@@ -2341,20 +2341,19 @@ drop: | |||
2341 | 2341 | ||
2342 | /** | 2342 | /** |
2343 | * fcoe_ctlr_disc_recv - discovery receive handler for VN2VN mode. | 2343 | * fcoe_ctlr_disc_recv - discovery receive handler for VN2VN mode. |
2344 | * @fip: The FCoE controller | 2344 | * @lport: The local port |
2345 | * @fp: The received frame | ||
2345 | * | 2346 | * |
2346 | * This should never be called since we don't see RSCNs or other | 2347 | * This should never be called since we don't see RSCNs or other |
2347 | * fabric-generated ELSes. | 2348 | * fabric-generated ELSes. |
2348 | */ | 2349 | */ |
2349 | static void fcoe_ctlr_disc_recv(struct fc_seq *seq, struct fc_frame *fp, | 2350 | static void fcoe_ctlr_disc_recv(struct fc_lport *lport, struct fc_frame *fp) |
2350 | struct fc_lport *lport) | ||
2351 | { | 2351 | { |
2352 | struct fc_seq_els_data rjt_data; | 2352 | struct fc_seq_els_data rjt_data; |
2353 | 2353 | ||
2354 | rjt_data.fp = NULL; | ||
2355 | rjt_data.reason = ELS_RJT_UNSUP; | 2354 | rjt_data.reason = ELS_RJT_UNSUP; |
2356 | rjt_data.explan = ELS_EXPL_NONE; | 2355 | rjt_data.explan = ELS_EXPL_NONE; |
2357 | lport->tt.seq_els_rsp_send(seq, ELS_LS_RJT, &rjt_data); | 2356 | lport->tt.seq_els_rsp_send(fp, ELS_LS_RJT, &rjt_data); |
2358 | fc_frame_free(fp); | 2357 | fc_frame_free(fp); |
2359 | } | 2358 | } |
2360 | 2359 | ||