1. A method of generating length parameters, comprising the steps of: reading a data stream from a host, wherein said data stream comprises a plurality of list definitions including modes: (i) DMA, (ii) DMA data only, (iii) interleaved, or (iv) Data Integrity Field (DIF) only; detecting whether the data stream needs an inline data integrity field (DIF) or a separate data integrity field; calculating a number of blocks to be transferred based on a first length parameter of a first scattered gather list; and selecting one of said plurality of list definitions to generate a second length parameter used in a second scattered gather list in response to: (a) said detecting whether the data stream needs the inline data integrity field (DIF) or the separate data integrity field and (b) said first length parameter of said first scattered gather list and said calculated number of blocks.