ocs_fc: Increase maximum supported SG elements to support larger transfer sizes.
Reported by: ken@kdm.org Reviewed by: mav, ken
This commit is contained in:
parent
3bf42363b0
commit
322dbb8ce8
@ -1704,7 +1704,7 @@ ocs_target_io(struct ocs_softc *ocs, union ccb *ccb)
|
||||
rc = ocs_scsi_send_resp(io, 0, &resp, ocs_scsi_target_io_cb, ccb);
|
||||
|
||||
} else if (xferlen != 0) {
|
||||
ocs_scsi_sgl_t sgl[OCS_FC_MAX_SGL];
|
||||
ocs_scsi_sgl_t *sgl;
|
||||
int32_t sgl_count = 0;
|
||||
|
||||
io->tgt_io.state = OCS_CAM_IO_DATA;
|
||||
@ -1712,7 +1712,9 @@ ocs_target_io(struct ocs_softc *ocs, union ccb *ccb)
|
||||
if (sendstatus)
|
||||
io->tgt_io.sendresp = 1;
|
||||
|
||||
sgl_count = ocs_build_scsi_sgl(ocs, ccb, io, sgl, ARRAY_SIZE(sgl));
|
||||
sgl = io->sgl;
|
||||
|
||||
sgl_count = ocs_build_scsi_sgl(ocs, ccb, io, sgl, io->sgl_allocated);
|
||||
if (sgl_count > 0) {
|
||||
if (cam_dir == CAM_DIR_IN) {
|
||||
rc = ocs_scsi_send_rd_data(io, 0, NULL, sgl,
|
||||
@ -1785,7 +1787,7 @@ ocs_initiator_io(struct ocs_softc *ocs, union ccb *ccb)
|
||||
struct ccb_hdr *ccb_h = &csio->ccb_h;
|
||||
ocs_node_t *node = NULL;
|
||||
ocs_io_t *io = NULL;
|
||||
ocs_scsi_sgl_t sgl[OCS_FC_MAX_SGL];
|
||||
ocs_scsi_sgl_t *sgl;
|
||||
int32_t flags, sgl_count;
|
||||
ocs_fcport *fcp;
|
||||
|
||||
@ -1828,8 +1830,9 @@ ocs_initiator_io(struct ocs_softc *ocs, union ccb *ccb)
|
||||
|
||||
csio->ccb_h.ccb_ocs_ptr = ocs;
|
||||
csio->ccb_h.ccb_io_ptr = io;
|
||||
sgl = io->sgl;
|
||||
|
||||
sgl_count = ocs_build_scsi_sgl(ocs, ccb, io, sgl, ARRAY_SIZE(sgl));
|
||||
sgl_count = ocs_build_scsi_sgl(ocs, ccb, io, sgl, io->sgl_allocated);
|
||||
if (sgl_count < 0) {
|
||||
ocs_scsi_io_free(io);
|
||||
device_printf(ocs->dev, "%s: building SGL failed\n", __func__);
|
||||
@ -2068,7 +2071,8 @@ ocs_action(struct cam_sim *sim, union ccb *ccb)
|
||||
|
||||
/* Calculate the max IO supported
|
||||
* Worst case would be an OS page per SGL entry */
|
||||
cpi->maxio = PAGE_SIZE *
|
||||
|
||||
cpi->maxio = PAGE_SIZE *
|
||||
(ocs_scsi_get_property(ocs, OCS_SCSI_MAX_SGL) - 1);
|
||||
|
||||
strncpy(cpi->sim_vid, "FreeBSD", SIM_IDLEN);
|
||||
|
@ -55,7 +55,7 @@
|
||||
* @brief Defines the number of SGLs allocated on each IO object
|
||||
*/
|
||||
#ifndef OCS_FC_MAX_SGL
|
||||
#define OCS_FC_MAX_SGL 128
|
||||
#define OCS_FC_MAX_SGL 256
|
||||
#endif
|
||||
|
||||
/***************************************************************************
|
||||
|
Loading…
Reference in New Issue
Block a user