You need implement tran_getcap() routine, and set SCSI_CAP_DMA_MAX 
capability.
sample code is as below:
------%<------
xxx_attach() {
....
    hba_tran->tran_getcap        =xxx_scsi_getcap;
...
}
static int
xxx_tran_getcap(struct scsi_address *ap, char *cap, int tgtonly) {
    switch (ckey) {
    case SCSI_CAP_DMA_MAX:
        rval = (int)xxx->dma_attr.dma_attr_maxxfer;
        break;
    default:
        rval = UNDEFINED;
        break;
}

------%<------
Javen
ram vegesna wrote:
>
> Hi,
>          
>           How can we tell the OS (scsi midlayer) to limit of I/O size 
> that the device can handle?
> So, that OS will split any bigger size IO request into chunks of the 
> specified size.
>
>           Please, let me know if I have to change some parameter in 
> ddi_dma_attr_t structure.
>
>   Note : I am using Solaris 10 x86
>
> Thanks,
> Ram
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> driver-discuss mailing list
> driver-discuss@opensolaris.org
> http://mail.opensolaris.org/mailman/listinfo/driver-discuss
>   

_______________________________________________
driver-discuss mailing list
driver-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/driver-discuss

Reply via email to