zfcp: Report scatter gather limit for DIX protection information
authorChristof Schmitt <christof.schmitt@de.ibm.com>
Fri, 10 Sep 2010 18:50:40 +0000 (20:50 +0200)
committerJens Axboe <axboe@carl.home.kernel.dk>
Fri, 10 Sep 2010 18:50:40 +0000 (20:50 +0200)
When sending DIX integrity segments with an I/O request, the
restriction for the maximum number of segments is still the same for
the zfcp hardware. Report the new sg_prot_tablesize for the SCSI host,
so that the number of integrity segments plus the number of data
segments is not larger than the hardware limit. This results in using
half of the hardware segments for integrity data and the other half
for regular data.

Reviewed-by: Swen Schillig <swen@vnet.ibm.com>
Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com>
Signed-off-by: Jens Axboe <axboe@carl.home.kernel.dk>
drivers/s390/scsi/zfcp_scsi.c

index cb000c9833bbcee0bf687cc5f31eccf90769ae0b..208256e39def9e1d6dd7ce19724724d6e99bada4 100644 (file)
@@ -681,6 +681,7 @@ void zfcp_scsi_set_prot(struct zfcp_adapter *adapter)
            adapter->adapter_features & FSF_FEATURE_DIX_PROT_TCPIP) {
                mask |= SHOST_DIX_TYPE1_PROTECTION;
                scsi_host_set_guard(shost, SHOST_DIX_GUARD_IP);
+               shost->sg_prot_tablesize = ZFCP_QDIO_MAX_SBALES_PER_REQ / 2;
                shost->sg_tablesize = ZFCP_QDIO_MAX_SBALES_PER_REQ / 2;
                shost->max_sectors = ZFCP_QDIO_MAX_SBALES_PER_REQ * 8 / 2;
        }