diff options
Diffstat (limited to 'drivers/scsi/libfc/fc_fcp.c')
-rw-r--r-- | drivers/scsi/libfc/fc_fcp.c | 56 |
1 files changed, 28 insertions, 28 deletions
diff --git a/drivers/scsi/libfc/fc_fcp.c b/drivers/scsi/libfc/fc_fcp.c index 404e63ff46b8..2a631d7dbcec 100644 --- a/drivers/scsi/libfc/fc_fcp.c +++ b/drivers/scsi/libfc/fc_fcp.c | |||
@@ -161,7 +161,7 @@ static struct fc_fcp_pkt *fc_fcp_pkt_alloc(struct fc_lport *lp, gfp_t gfp) | |||
161 | } | 161 | } |
162 | 162 | ||
163 | /** | 163 | /** |
164 | * fc_fcp_pkt_release - release hold on scsi_pkt packet | 164 | * fc_fcp_pkt_release() - release hold on scsi_pkt packet |
165 | * @fsp: fcp packet struct | 165 | * @fsp: fcp packet struct |
166 | * | 166 | * |
167 | * This is used by upper layer scsi driver. | 167 | * This is used by upper layer scsi driver. |
@@ -183,8 +183,7 @@ static void fc_fcp_pkt_hold(struct fc_fcp_pkt *fsp) | |||
183 | } | 183 | } |
184 | 184 | ||
185 | /** | 185 | /** |
186 | * fc_fcp_pkt_destory - release hold on scsi_pkt packet | 186 | * fc_fcp_pkt_destory() - release hold on scsi_pkt packet |
187 | * | ||
188 | * @seq: exchange sequence | 187 | * @seq: exchange sequence |
189 | * @fsp: fcp packet struct | 188 | * @fsp: fcp packet struct |
190 | * | 189 | * |
@@ -199,7 +198,7 @@ static void fc_fcp_pkt_destroy(struct fc_seq *seq, void *fsp) | |||
199 | } | 198 | } |
200 | 199 | ||
201 | /** | 200 | /** |
202 | * fc_fcp_lock_pkt - lock a packet and get a ref to it. | 201 | * fc_fcp_lock_pkt() - lock a packet and get a ref to it. |
203 | * @fsp: fcp packet | 202 | * @fsp: fcp packet |
204 | * | 203 | * |
205 | * We should only return error if we return a command to scsi-ml before | 204 | * We should only return error if we return a command to scsi-ml before |
@@ -291,9 +290,7 @@ static void fc_fcp_recv_data(struct fc_fcp_pkt *fsp, struct fc_frame *fp) | |||
291 | buf = fc_frame_payload_get(fp, 0); | 290 | buf = fc_frame_payload_get(fp, 0); |
292 | 291 | ||
293 | if (offset + len > fsp->data_len) { | 292 | if (offset + len > fsp->data_len) { |
294 | /* | 293 | /* this should never happen */ |
295 | * this should never happen | ||
296 | */ | ||
297 | if ((fr_flags(fp) & FCPHF_CRC_UNCHECKED) && | 294 | if ((fr_flags(fp) & FCPHF_CRC_UNCHECKED) && |
298 | fc_frame_crc_check(fp)) | 295 | fc_frame_crc_check(fp)) |
299 | goto crc_err; | 296 | goto crc_err; |
@@ -387,8 +384,8 @@ crc_err: | |||
387 | fc_fcp_complete_locked(fsp); | 384 | fc_fcp_complete_locked(fsp); |
388 | } | 385 | } |
389 | 386 | ||
390 | /* | 387 | /** |
391 | * fc_fcp_send_data - Send SCSI data to target. | 388 | * fc_fcp_send_data() - Send SCSI data to target. |
392 | * @fsp: ptr to fc_fcp_pkt | 389 | * @fsp: ptr to fc_fcp_pkt |
393 | * @sp: ptr to this sequence | 390 | * @sp: ptr to this sequence |
394 | * @offset: starting offset for this data request | 391 | * @offset: starting offset for this data request |
@@ -610,8 +607,8 @@ static void fc_fcp_abts_resp(struct fc_fcp_pkt *fsp, struct fc_frame *fp) | |||
610 | } | 607 | } |
611 | } | 608 | } |
612 | 609 | ||
613 | /* | 610 | /** |
614 | * fc_fcp_reduce_can_queue - drop can_queue | 611 | * fc_fcp_reduce_can_queue() - drop can_queue |
615 | * @lp: lport to drop queueing for | 612 | * @lp: lport to drop queueing for |
616 | * | 613 | * |
617 | * If we are getting memory allocation failures, then we may | 614 | * If we are getting memory allocation failures, then we may |
@@ -642,9 +639,11 @@ done: | |||
642 | spin_unlock_irqrestore(lp->host->host_lock, flags); | 639 | spin_unlock_irqrestore(lp->host->host_lock, flags); |
643 | } | 640 | } |
644 | 641 | ||
645 | /* | 642 | /** |
646 | * exch mgr calls this routine to process scsi | 643 | * fc_fcp_recv() - Reveive FCP frames |
647 | * exchanges. | 644 | * @seq: The sequence the frame is on |
645 | * @fp: The FC frame | ||
646 | * @arg: The related FCP packet | ||
648 | * | 647 | * |
649 | * Return : None | 648 | * Return : None |
650 | * Context : called from Soft IRQ context | 649 | * Context : called from Soft IRQ context |
@@ -832,7 +831,7 @@ err: | |||
832 | } | 831 | } |
833 | 832 | ||
834 | /** | 833 | /** |
835 | * fc_fcp_complete_locked - complete processing of a fcp packet | 834 | * fc_fcp_complete_locked() - complete processing of a fcp packet |
836 | * @fsp: fcp packet | 835 | * @fsp: fcp packet |
837 | * | 836 | * |
838 | * This function may sleep if a timer is pending. The packet lock must be | 837 | * This function may sleep if a timer is pending. The packet lock must be |
@@ -900,7 +899,7 @@ static void fc_fcp_cleanup_cmd(struct fc_fcp_pkt *fsp, int error) | |||
900 | } | 899 | } |
901 | 900 | ||
902 | /** | 901 | /** |
903 | * fc_fcp_cleanup_each_cmd - run fn on each active command | 902 | * fc_fcp_cleanup_each_cmd() - Cleanup active commads |
904 | * @lp: logical port | 903 | * @lp: logical port |
905 | * @id: target id | 904 | * @id: target id |
906 | * @lun: lun | 905 | * @lun: lun |
@@ -952,7 +951,7 @@ static void fc_fcp_abort_io(struct fc_lport *lp) | |||
952 | } | 951 | } |
953 | 952 | ||
954 | /** | 953 | /** |
955 | * fc_fcp_pkt_send - send a fcp packet to the lower level. | 954 | * fc_fcp_pkt_send() - send a fcp packet to the lower level. |
956 | * @lp: fc lport | 955 | * @lp: fc lport |
957 | * @fsp: fc packet. | 956 | * @fsp: fc packet. |
958 | * | 957 | * |
@@ -1621,7 +1620,7 @@ out: | |||
1621 | static inline int fc_fcp_lport_queue_ready(struct fc_lport *lp) | 1620 | static inline int fc_fcp_lport_queue_ready(struct fc_lport *lp) |
1622 | { | 1621 | { |
1623 | /* lock ? */ | 1622 | /* lock ? */ |
1624 | return (lp->state == LPORT_ST_READY) && (lp->link_status & FC_LINK_UP); | 1623 | return (lp->state == LPORT_ST_READY) && lp->link_up && !lp->qfull; |
1625 | } | 1624 | } |
1626 | 1625 | ||
1627 | /** | 1626 | /** |
@@ -1727,7 +1726,7 @@ out: | |||
1727 | EXPORT_SYMBOL(fc_queuecommand); | 1726 | EXPORT_SYMBOL(fc_queuecommand); |
1728 | 1727 | ||
1729 | /** | 1728 | /** |
1730 | * fc_io_compl - Handle responses for completed commands | 1729 | * fc_io_compl() - Handle responses for completed commands |
1731 | * @fsp: scsi packet | 1730 | * @fsp: scsi packet |
1732 | * | 1731 | * |
1733 | * Translates a error to a Linux SCSI error. | 1732 | * Translates a error to a Linux SCSI error. |
@@ -1810,12 +1809,12 @@ static void fc_io_compl(struct fc_fcp_pkt *fsp) | |||
1810 | sc_cmd->result = DID_ERROR << 16; | 1809 | sc_cmd->result = DID_ERROR << 16; |
1811 | break; | 1810 | break; |
1812 | case FC_DATA_UNDRUN: | 1811 | case FC_DATA_UNDRUN: |
1813 | if (fsp->cdb_status == 0) { | 1812 | if ((fsp->cdb_status == 0) && !(fsp->req_flags & FC_SRB_READ)) { |
1814 | /* | 1813 | /* |
1815 | * scsi status is good but transport level | 1814 | * scsi status is good but transport level |
1816 | * underrun. for read it should be an error?? | 1815 | * underrun. |
1817 | */ | 1816 | */ |
1818 | sc_cmd->result = (DID_OK << 16) | fsp->cdb_status; | 1817 | sc_cmd->result = DID_OK << 16; |
1819 | } else { | 1818 | } else { |
1820 | /* | 1819 | /* |
1821 | * scsi got underrun, this is an error | 1820 | * scsi got underrun, this is an error |
@@ -1857,7 +1856,7 @@ static void fc_io_compl(struct fc_fcp_pkt *fsp) | |||
1857 | } | 1856 | } |
1858 | 1857 | ||
1859 | /** | 1858 | /** |
1860 | * fc_fcp_complete - complete processing of a fcp packet | 1859 | * fc_fcp_complete() - complete processing of a fcp packet |
1861 | * @fsp: fcp packet | 1860 | * @fsp: fcp packet |
1862 | * | 1861 | * |
1863 | * This function may sleep if a fsp timer is pending. | 1862 | * This function may sleep if a fsp timer is pending. |
@@ -1874,9 +1873,10 @@ void fc_fcp_complete(struct fc_fcp_pkt *fsp) | |||
1874 | EXPORT_SYMBOL(fc_fcp_complete); | 1873 | EXPORT_SYMBOL(fc_fcp_complete); |
1875 | 1874 | ||
1876 | /** | 1875 | /** |
1877 | * fc_eh_abort - Abort a command...from scsi host template | 1876 | * fc_eh_abort() - Abort a command |
1878 | * @sc_cmd: scsi command to abort | 1877 | * @sc_cmd: scsi command to abort |
1879 | * | 1878 | * |
1879 | * From scsi host template. | ||
1880 | * send ABTS to the target device and wait for the response | 1880 | * send ABTS to the target device and wait for the response |
1881 | * sc_cmd is the pointer to the command to be aborted. | 1881 | * sc_cmd is the pointer to the command to be aborted. |
1882 | */ | 1882 | */ |
@@ -1890,7 +1890,7 @@ int fc_eh_abort(struct scsi_cmnd *sc_cmd) | |||
1890 | lp = shost_priv(sc_cmd->device->host); | 1890 | lp = shost_priv(sc_cmd->device->host); |
1891 | if (lp->state != LPORT_ST_READY) | 1891 | if (lp->state != LPORT_ST_READY) |
1892 | return rc; | 1892 | return rc; |
1893 | else if (!(lp->link_status & FC_LINK_UP)) | 1893 | else if (!lp->link_up) |
1894 | return rc; | 1894 | return rc; |
1895 | 1895 | ||
1896 | spin_lock_irqsave(lp->host->host_lock, flags); | 1896 | spin_lock_irqsave(lp->host->host_lock, flags); |
@@ -1920,7 +1920,7 @@ release_pkt: | |||
1920 | EXPORT_SYMBOL(fc_eh_abort); | 1920 | EXPORT_SYMBOL(fc_eh_abort); |
1921 | 1921 | ||
1922 | /** | 1922 | /** |
1923 | * fc_eh_device_reset: Reset a single LUN | 1923 | * fc_eh_device_reset() Reset a single LUN |
1924 | * @sc_cmd: scsi command | 1924 | * @sc_cmd: scsi command |
1925 | * | 1925 | * |
1926 | * Set from scsi host template to send tm cmd to the target and wait for the | 1926 | * Set from scsi host template to send tm cmd to the target and wait for the |
@@ -1973,7 +1973,7 @@ out: | |||
1973 | EXPORT_SYMBOL(fc_eh_device_reset); | 1973 | EXPORT_SYMBOL(fc_eh_device_reset); |
1974 | 1974 | ||
1975 | /** | 1975 | /** |
1976 | * fc_eh_host_reset - The reset function will reset the ports on the host. | 1976 | * fc_eh_host_reset() - The reset function will reset the ports on the host. |
1977 | * @sc_cmd: scsi command | 1977 | * @sc_cmd: scsi command |
1978 | */ | 1978 | */ |
1979 | int fc_eh_host_reset(struct scsi_cmnd *sc_cmd) | 1979 | int fc_eh_host_reset(struct scsi_cmnd *sc_cmd) |
@@ -1999,7 +1999,7 @@ int fc_eh_host_reset(struct scsi_cmnd *sc_cmd) | |||
1999 | EXPORT_SYMBOL(fc_eh_host_reset); | 1999 | EXPORT_SYMBOL(fc_eh_host_reset); |
2000 | 2000 | ||
2001 | /** | 2001 | /** |
2002 | * fc_slave_alloc - configure queue depth | 2002 | * fc_slave_alloc() - configure queue depth |
2003 | * @sdev: scsi device | 2003 | * @sdev: scsi device |
2004 | * | 2004 | * |
2005 | * Configures queue depth based on host's cmd_per_len. If not set | 2005 | * Configures queue depth based on host's cmd_per_len. If not set |