diff options
author | Joe Eykholt <jeykholt@cisco.com> | 2009-08-25 17:00:55 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2009-09-10 13:07:41 -0400 |
commit | a46f327aa5caf2cce138e98ddd863b6cca0e71e2 (patch) | |
tree | dbb230e8d4e024085e126445e6d819d5088e0406 /drivers/scsi/libfc | |
parent | 9fb9d32831fd687e427ec5b147bb690f468b99a0 (diff) |
[SCSI] libfc: change elsct to use FC_ID instead of rdata
tt.elsct_send is used by both FCP and by the rport state machine.
After further patches, these two modules will use different
structures for the remote port.
So, change elsct_send to use the FC_ID instead of the fc_rport_priv
as its argument. It currently only uses the FC_ID anyway.
For CT requests the destination FC_ID is still implicitly 0xfffffc.
After further patches the did arg on CT requests will be used to
specify the FC_ID being inquired about for GPN_ID or other queries.
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/libfc')
-rw-r--r-- | drivers/scsi/libfc/fc_disc.c | 2 | ||||
-rw-r--r-- | drivers/scsi/libfc/fc_elsct.c | 11 | ||||
-rw-r--r-- | drivers/scsi/libfc/fc_fcp.c | 2 | ||||
-rw-r--r-- | drivers/scsi/libfc/fc_lport.c | 12 | ||||
-rw-r--r-- | drivers/scsi/libfc/fc_rport.c | 8 |
5 files changed, 18 insertions, 17 deletions
diff --git a/drivers/scsi/libfc/fc_disc.c b/drivers/scsi/libfc/fc_disc.c index 448ffc388656..4b1f9faf639a 100644 --- a/drivers/scsi/libfc/fc_disc.c +++ b/drivers/scsi/libfc/fc_disc.c | |||
@@ -526,7 +526,7 @@ static void fc_disc_gpn_ft_req(struct fc_disc *disc) | |||
526 | if (!fp) | 526 | if (!fp) |
527 | goto err; | 527 | goto err; |
528 | 528 | ||
529 | if (lport->tt.elsct_send(lport, NULL, fp, | 529 | if (lport->tt.elsct_send(lport, 0, fp, |
530 | FC_NS_GPN_FT, | 530 | FC_NS_GPN_FT, |
531 | fc_disc_gpn_ft_resp, | 531 | fc_disc_gpn_ft_resp, |
532 | disc, lport->e_d_tov)) | 532 | disc, lport->e_d_tov)) |
diff --git a/drivers/scsi/libfc/fc_elsct.c b/drivers/scsi/libfc/fc_elsct.c index 2b8a3bbc0399..5e8b011af50e 100644 --- a/drivers/scsi/libfc/fc_elsct.c +++ b/drivers/scsi/libfc/fc_elsct.c | |||
@@ -32,7 +32,7 @@ | |||
32 | * fc_elsct_send - sends ELS/CT frame | 32 | * fc_elsct_send - sends ELS/CT frame |
33 | */ | 33 | */ |
34 | static struct fc_seq *fc_elsct_send(struct fc_lport *lport, | 34 | static struct fc_seq *fc_elsct_send(struct fc_lport *lport, |
35 | struct fc_rport_priv *rdata, | 35 | u32 did, |
36 | struct fc_frame *fp, | 36 | struct fc_frame *fp, |
37 | unsigned int op, | 37 | unsigned int op, |
38 | void (*resp)(struct fc_seq *, | 38 | void (*resp)(struct fc_seq *, |
@@ -41,16 +41,17 @@ static struct fc_seq *fc_elsct_send(struct fc_lport *lport, | |||
41 | void *arg, u32 timer_msec) | 41 | void *arg, u32 timer_msec) |
42 | { | 42 | { |
43 | enum fc_rctl r_ctl; | 43 | enum fc_rctl r_ctl; |
44 | u32 did = FC_FID_NONE; | ||
45 | enum fc_fh_type fh_type; | 44 | enum fc_fh_type fh_type; |
46 | int rc; | 45 | int rc; |
47 | 46 | ||
48 | /* ELS requests */ | 47 | /* ELS requests */ |
49 | if ((op >= ELS_LS_RJT) && (op <= ELS_AUTH_ELS)) | 48 | if ((op >= ELS_LS_RJT) && (op <= ELS_AUTH_ELS)) |
50 | rc = fc_els_fill(lport, rdata, fp, op, &r_ctl, &did, &fh_type); | 49 | rc = fc_els_fill(lport, did, fp, op, &r_ctl, &fh_type); |
51 | else | 50 | else { |
52 | /* CT requests */ | 51 | /* CT requests */ |
53 | rc = fc_ct_fill(lport, fp, op, &r_ctl, &did, &fh_type); | 52 | rc = fc_ct_fill(lport, fp, op, &r_ctl, &fh_type); |
53 | did = FC_FID_DIR_SERV; | ||
54 | } | ||
54 | 55 | ||
55 | if (rc) | 56 | if (rc) |
56 | return NULL; | 57 | return NULL; |
diff --git a/drivers/scsi/libfc/fc_fcp.c b/drivers/scsi/libfc/fc_fcp.c index a622096eb315..59a4408b27b5 100644 --- a/drivers/scsi/libfc/fc_fcp.c +++ b/drivers/scsi/libfc/fc_fcp.c | |||
@@ -1308,7 +1308,7 @@ static void fc_fcp_rec(struct fc_fcp_pkt *fsp) | |||
1308 | fc_fill_fc_hdr(fp, FC_RCTL_ELS_REQ, rport->port_id, | 1308 | fc_fill_fc_hdr(fp, FC_RCTL_ELS_REQ, rport->port_id, |
1309 | fc_host_port_id(rp->local_port->host), FC_TYPE_ELS, | 1309 | fc_host_port_id(rp->local_port->host), FC_TYPE_ELS, |
1310 | FC_FC_FIRST_SEQ | FC_FC_END_SEQ | FC_FC_SEQ_INIT, 0); | 1310 | FC_FC_FIRST_SEQ | FC_FC_END_SEQ | FC_FC_SEQ_INIT, 0); |
1311 | if (lp->tt.elsct_send(lp, rport->dd_data, fp, ELS_REC, fc_fcp_rec_resp, | 1311 | if (lp->tt.elsct_send(lp, rport->port_id, fp, ELS_REC, fc_fcp_rec_resp, |
1312 | fsp, jiffies_to_msecs(FC_SCSI_REC_TOV))) { | 1312 | fsp, jiffies_to_msecs(FC_SCSI_REC_TOV))) { |
1313 | fc_fcp_pkt_hold(fsp); /* hold while REC outstanding */ | 1313 | fc_fcp_pkt_hold(fsp); /* hold while REC outstanding */ |
1314 | return; | 1314 | return; |
diff --git a/drivers/scsi/libfc/fc_lport.c b/drivers/scsi/libfc/fc_lport.c index 3c15abd35ffa..aa605d2012e0 100644 --- a/drivers/scsi/libfc/fc_lport.c +++ b/drivers/scsi/libfc/fc_lport.c | |||
@@ -1217,7 +1217,7 @@ static void fc_lport_enter_scr(struct fc_lport *lport) | |||
1217 | return; | 1217 | return; |
1218 | } | 1218 | } |
1219 | 1219 | ||
1220 | if (!lport->tt.elsct_send(lport, NULL, fp, ELS_SCR, | 1220 | if (!lport->tt.elsct_send(lport, FC_FID_FCTRL, fp, ELS_SCR, |
1221 | fc_lport_scr_resp, lport, lport->e_d_tov)) | 1221 | fc_lport_scr_resp, lport, lport->e_d_tov)) |
1222 | fc_lport_error(lport, fp); | 1222 | fc_lport_error(lport, fp); |
1223 | } | 1223 | } |
@@ -1258,7 +1258,7 @@ static void fc_lport_enter_rft_id(struct fc_lport *lport) | |||
1258 | return; | 1258 | return; |
1259 | } | 1259 | } |
1260 | 1260 | ||
1261 | if (!lport->tt.elsct_send(lport, NULL, fp, FC_NS_RFT_ID, | 1261 | if (!lport->tt.elsct_send(lport, FC_FID_DIR_SERV, fp, FC_NS_RFT_ID, |
1262 | fc_lport_rft_id_resp, | 1262 | fc_lport_rft_id_resp, |
1263 | lport, lport->e_d_tov)) | 1263 | lport, lport->e_d_tov)) |
1264 | fc_lport_error(lport, fp); | 1264 | fc_lport_error(lport, fp); |
@@ -1287,7 +1287,7 @@ static void fc_lport_enter_rpn_id(struct fc_lport *lport) | |||
1287 | return; | 1287 | return; |
1288 | } | 1288 | } |
1289 | 1289 | ||
1290 | if (!lport->tt.elsct_send(lport, NULL, fp, FC_NS_RPN_ID, | 1290 | if (!lport->tt.elsct_send(lport, FC_FID_DIR_SERV, fp, FC_NS_RPN_ID, |
1291 | fc_lport_rpn_id_resp, | 1291 | fc_lport_rpn_id_resp, |
1292 | lport, lport->e_d_tov)) | 1292 | lport, lport->e_d_tov)) |
1293 | fc_lport_error(lport, fp); | 1293 | fc_lport_error(lport, fp); |
@@ -1443,8 +1443,8 @@ static void fc_lport_enter_logo(struct fc_lport *lport) | |||
1443 | return; | 1443 | return; |
1444 | } | 1444 | } |
1445 | 1445 | ||
1446 | if (!lport->tt.elsct_send(lport, NULL, fp, ELS_LOGO, fc_lport_logo_resp, | 1446 | if (!lport->tt.elsct_send(lport, FC_FID_FLOGI, fp, ELS_LOGO, |
1447 | lport, lport->e_d_tov)) | 1447 | fc_lport_logo_resp, lport, lport->e_d_tov)) |
1448 | fc_lport_error(lport, fp); | 1448 | fc_lport_error(lport, fp); |
1449 | } | 1449 | } |
1450 | 1450 | ||
@@ -1567,7 +1567,7 @@ void fc_lport_enter_flogi(struct fc_lport *lport) | |||
1567 | if (!fp) | 1567 | if (!fp) |
1568 | return fc_lport_error(lport, fp); | 1568 | return fc_lport_error(lport, fp); |
1569 | 1569 | ||
1570 | if (!lport->tt.elsct_send(lport, NULL, fp, ELS_FLOGI, | 1570 | if (!lport->tt.elsct_send(lport, FC_FID_FLOGI, fp, ELS_FLOGI, |
1571 | fc_lport_flogi_resp, lport, lport->e_d_tov)) | 1571 | fc_lport_flogi_resp, lport, lport->e_d_tov)) |
1572 | fc_lport_error(lport, fp); | 1572 | fc_lport_error(lport, fp); |
1573 | } | 1573 | } |
diff --git a/drivers/scsi/libfc/fc_rport.c b/drivers/scsi/libfc/fc_rport.c index 13d3d758fb0e..20371b445bb1 100644 --- a/drivers/scsi/libfc/fc_rport.c +++ b/drivers/scsi/libfc/fc_rport.c | |||
@@ -593,7 +593,7 @@ static void fc_rport_enter_plogi(struct fc_rport_priv *rdata) | |||
593 | } | 593 | } |
594 | rdata->e_d_tov = lport->e_d_tov; | 594 | rdata->e_d_tov = lport->e_d_tov; |
595 | 595 | ||
596 | if (!lport->tt.elsct_send(lport, rdata, fp, ELS_PLOGI, | 596 | if (!lport->tt.elsct_send(lport, rport->port_id, fp, ELS_PLOGI, |
597 | fc_rport_plogi_resp, rdata, lport->e_d_tov)) | 597 | fc_rport_plogi_resp, rdata, lport->e_d_tov)) |
598 | fc_rport_error_retry(rdata, fp); | 598 | fc_rport_error_retry(rdata, fp); |
599 | else | 599 | else |
@@ -747,7 +747,7 @@ static void fc_rport_enter_prli(struct fc_rport_priv *rdata) | |||
747 | return; | 747 | return; |
748 | } | 748 | } |
749 | 749 | ||
750 | if (!lport->tt.elsct_send(lport, rdata, fp, ELS_PRLI, | 750 | if (!lport->tt.elsct_send(lport, rport->port_id, fp, ELS_PRLI, |
751 | fc_rport_prli_resp, rdata, lport->e_d_tov)) | 751 | fc_rport_prli_resp, rdata, lport->e_d_tov)) |
752 | fc_rport_error_retry(rdata, fp); | 752 | fc_rport_error_retry(rdata, fp); |
753 | else | 753 | else |
@@ -845,7 +845,7 @@ static void fc_rport_enter_rtv(struct fc_rport_priv *rdata) | |||
845 | return; | 845 | return; |
846 | } | 846 | } |
847 | 847 | ||
848 | if (!lport->tt.elsct_send(lport, rdata, fp, ELS_RTV, | 848 | if (!lport->tt.elsct_send(lport, rport->port_id, fp, ELS_RTV, |
849 | fc_rport_rtv_resp, rdata, lport->e_d_tov)) | 849 | fc_rport_rtv_resp, rdata, lport->e_d_tov)) |
850 | fc_rport_error_retry(rdata, fp); | 850 | fc_rport_error_retry(rdata, fp); |
851 | else | 851 | else |
@@ -876,7 +876,7 @@ static void fc_rport_enter_logo(struct fc_rport_priv *rdata) | |||
876 | return; | 876 | return; |
877 | } | 877 | } |
878 | 878 | ||
879 | if (!lport->tt.elsct_send(lport, rdata, fp, ELS_LOGO, | 879 | if (!lport->tt.elsct_send(lport, rport->port_id, fp, ELS_LOGO, |
880 | fc_rport_logo_resp, rdata, lport->e_d_tov)) | 880 | fc_rport_logo_resp, rdata, lport->e_d_tov)) |
881 | fc_rport_error_retry(rdata, fp); | 881 | fc_rport_error_retry(rdata, fp); |
882 | else | 882 | else |