aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/fcoe
diff options
context:
space:
mode:
authorJoe Eykholt <jeykholt@cisco.com>2010-07-20 18:21:12 -0400
committerJames Bottomley <James.Bottomley@suse.de>2010-07-28 10:06:02 -0400
commit922611569572d3c1aa0ed6491d21583fb3fcca22 (patch)
treef7cb42bf5519d1c42853808f2f784188afe1bc2e /drivers/scsi/fcoe
parent239e81048b7dcd27448db40c845f88ac7c68424e (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.c9
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 */
2349static void fcoe_ctlr_disc_recv(struct fc_seq *seq, struct fc_frame *fp, 2350static 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