diff options
author | Joe Eykholt <jeykholt@cisco.com> | 2009-08-25 17:04:03 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2009-09-10 13:08:03 -0400 |
commit | 1d490ce33ee8b93638d09e471a3bc66ae33b6606 (patch) | |
tree | 67a8da5a99d3918beb5e803d49bd5cdeb56f7e37 /drivers/scsi | |
parent | 2ab7e1ecb81ce35ed8e8df512e3fc6338a4c55bb (diff) |
[SCSI] libfc: don't swap OX_ID and RX_ID when sending BA_RJT
I saw an lport debug message from the exchange manager saying:
"lport 70500: Received response for out of range oxid:ffff"
A trace showed this was a BA_RJT sent due to an incoming ABTS
which arrived on an unknown exchange. So, the sender of the
BA_RJT was in error, but in this case, both the initiator and
responder were the same machine.
The OX_ID and RX_ID should not have been reversed in this case.
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')
-rw-r--r-- | drivers/scsi/libfc/fc_exch.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c index b51db15a3876..c1c15748220c 100644 --- a/drivers/scsi/libfc/fc_exch.c +++ b/drivers/scsi/libfc/fc_exch.c | |||
@@ -1017,8 +1017,8 @@ static void fc_exch_send_ba_rjt(struct fc_frame *rx_fp, | |||
1017 | */ | 1017 | */ |
1018 | memcpy(fh->fh_s_id, rx_fh->fh_d_id, 3); | 1018 | memcpy(fh->fh_s_id, rx_fh->fh_d_id, 3); |
1019 | memcpy(fh->fh_d_id, rx_fh->fh_s_id, 3); | 1019 | memcpy(fh->fh_d_id, rx_fh->fh_s_id, 3); |
1020 | fh->fh_ox_id = rx_fh->fh_rx_id; | 1020 | fh->fh_ox_id = rx_fh->fh_ox_id; |
1021 | fh->fh_rx_id = rx_fh->fh_ox_id; | 1021 | fh->fh_rx_id = rx_fh->fh_rx_id; |
1022 | fh->fh_seq_cnt = rx_fh->fh_seq_cnt; | 1022 | fh->fh_seq_cnt = rx_fh->fh_seq_cnt; |
1023 | fh->fh_r_ctl = FC_RCTL_BA_RJT; | 1023 | fh->fh_r_ctl = FC_RCTL_BA_RJT; |
1024 | fh->fh_type = FC_TYPE_BLS; | 1024 | fh->fh_type = FC_TYPE_BLS; |