svn commit: r315823 - stable/11/sys/dev/mpt
Alexander Motin
mav at FreeBSD.org
Thu Mar 23 06:50:15 UTC 2017
Author: mav
Date: Thu Mar 23 06:50:13 2017
New Revision: 315823
URL: https://svnweb.freebsd.org/changeset/base/315823
Log:
MFC r315002: Improve residuals reporting in target mode.
Modified:
stable/11/sys/dev/mpt/mpt.h
stable/11/sys/dev/mpt/mpt_cam.c
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/sys/dev/mpt/mpt.h
==============================================================================
--- stable/11/sys/dev/mpt/mpt.h Thu Mar 23 06:49:36 2017 (r315822)
+++ stable/11/sys/dev/mpt/mpt.h Thu Mar 23 06:50:13 2017 (r315823)
@@ -331,8 +331,8 @@ typedef struct mpt_config_params {
/**************************** MPI Target State Info ***************************/
typedef struct {
uint32_t reply_desc; /* current reply descriptor */
- uint32_t resid; /* current data residual */
uint32_t bytes_xfered; /* current relative offset */
+ int resid; /* current data residual */
union ccb *ccb; /* pointer to currently active ccb */
request_t *req; /* pointer to currently active assist request */
uint32_t
Modified: stable/11/sys/dev/mpt/mpt_cam.c
==============================================================================
--- stable/11/sys/dev/mpt/mpt_cam.c Thu Mar 23 06:49:36 2017 (r315822)
+++ stable/11/sys/dev/mpt/mpt_cam.c Thu Mar 23 06:50:13 2017 (r315823)
@@ -4430,6 +4430,7 @@ mpt_target_start_io(struct mpt_softc *mp
/*
* XXX Should be done after data transfer completes?
*/
+ csio->resid = csio->dxfer_len - ta->DataLength;
tgt->resid -= csio->dxfer_len;
tgt->bytes_xfered += csio->dxfer_len;
@@ -4732,7 +4733,11 @@ mpt_scsi_tgt_status(struct mpt_softc *mp
#ifndef WE_TRUST_AUTO_GOOD_STATUS
resplen = MIN_FCP_RESPONSE_SIZE;
#endif
- if (tgt->resid) {
+ if (tgt->resid < 0) {
+ rsp[2] |= htobe32(0x400); /* XXXX NEED MNEMONIC!!!! */
+ rsp[3] = htobe32(-tgt->resid);
+ resplen = MIN_FCP_RESPONSE_SIZE;
+ } else if (tgt->resid > 0) {
rsp[2] |= htobe32(0x800); /* XXXX NEED MNEMONIC!!!! */
rsp[3] = htobe32(tgt->resid);
resplen = MIN_FCP_RESPONSE_SIZE;
More information about the svn-src-stable
mailing list