aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/fcoe
diff options
context:
space:
mode:
authorJoe Eykholt <jeykholt@cisco.com>2010-07-20 15:21:12 -0700
committerJames Bottomley <James.Bottomley@suse.de>2010-07-28 09:06:02 -0500
commit922611569572d3c1aa0ed6491d21583fb3fcca22 (patch)
treef7cb42bf5519d1c42853808f2f784188afe1bc2e /drivers/scsi/fcoe
parent239e81048b7dcd27448db40c845f88ac7c68424e (diff)
downloadkernel_samsung_smdk4412-922611569572d3c1aa0ed6491d21583fb3fcca22.zip
kernel_samsung_smdk4412-922611569572d3c1aa0ed6491d21583fb3fcca22.tar.gz
kernel_samsung_smdk4412-922611569572d3c1aa0ed6491d21583fb3fcca22.tar.bz2
[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 4de8ced..2c265fe 100644
--- a/drivers/scsi/fcoe/libfcoe.c
+++ b/drivers/scsi/fcoe/libfcoe.c
@@ -2341,20 +2341,19 @@ drop:
/**
* fcoe_ctlr_disc_recv - discovery receive handler for VN2VN mode.
- * @fip: The FCoE controller
+ * @lport: The local port
+ * @fp: The received frame
*
* This should never be called since we don't see RSCNs or other
* fabric-generated ELSes.
*/
-static void fcoe_ctlr_disc_recv(struct fc_seq *seq, struct fc_frame *fp,
- struct fc_lport *lport)
+static void fcoe_ctlr_disc_recv(struct fc_lport *lport, struct fc_frame *fp)
{
struct fc_seq_els_data rjt_data;
- rjt_data.fp = NULL;
rjt_data.reason = ELS_RJT_UNSUP;
rjt_data.explan = ELS_EXPL_NONE;
- lport->tt.seq_els_rsp_send(seq, ELS_LS_RJT, &rjt_data);
+ lport->tt.seq_els_rsp_send(fp, ELS_LS_RJT, &rjt_data);
fc_frame_free(fp);
}