pms: handle maximum size IO with any alignment

Define the maximum numbers of segments to allow for non-page alignment
at the beginning and end of a maxphys size transfer.  Also set
ccb_pathinq.maxio consistent with maxphys.

Reviewed by:	imp
Sponsored by:	Dell EMC Isilon
Differential Revision:	https://reviews.freebsd.org/D28043
This commit is contained in:
Ryan Libby 2021-01-20 13:59:49 -08:00
parent 84ab9074d4
commit e54a1d5751
2 changed files with 3 additions and 2 deletions

View File

@ -62,7 +62,7 @@ EW 09-17-2004 1.0.0 Constant definitions
#define AGTIAPI_MAX_DEVICE_7H 256 /*Max devices per channel in 7H */
#define AGTIAPI_MAX_DEVICE_8H 512 /*Max devices per channel in 8H*/
#define AGTIAPI_MAX_CAM_Q_DEPTH 1024
#define AGTIAPI_NSEGS (maxphys / PAGE_SIZE)
#define AGTIAPI_NSEGS (btoc(maxphys) + 1)
/*
** Adapter specific defines
*/

View File

@ -1833,7 +1833,8 @@ static void agtiapi_cam_action( struct cam_sim *sim, union ccb * ccb )
cpi->hba_eng_cnt = 0;
cpi->max_target = maxTargets - 1;
cpi->max_lun = AGTIAPI_MAX_LUN;
cpi->maxio = 1024 *1024; /* Max supported I/O size, in bytes. */
/* Max supported I/O size, in bytes. */
cpi->maxio = ulmin(1024 * 1024, maxphys);
cpi->initiator_id = 255;
strlcpy(cpi->sim_vid, "FreeBSD", SIM_IDLEN);
strlcpy(cpi->hba_vid, "PMC", HBA_IDLEN);