I think max IO size, at iSER initiator, depends on
"max_fast_reg_page_list_len".
currently, below are the supported "max_fast_reg_page_list_len" of
various iwarp drivers:
iw_cxgb4: 128 pages
Softiwarp: 256 pages
i40iw: 512 pages
qedr: couldn't find.
For iwarp case, if 512 is the max pages supported by all iwarp drivers,
then provisioning a gigantic MR pool at target(to accommodate never used
16MiB IO) wouldn't be a overkill?
For RoCE/IB Mellanox HCAs we support 16MiB IO size and even more. We
limited to 16MiB in iSER/iSERT.
Sagi,
what about adding a module parameter for this as we did in iSER initiator ?
I don't think we have any other choice...
Sagi,
I didn't read whole thread and know little about ULPs, but wonder if isn't
it possible to check device type (iWARP/RoCE) during iSERT initialization
and create MR pool only after device is recognized?
Its already done this way. The problem is that there is no handshake
procedure in iSER between the host and the target for what the maximum
transfer size would be, so currently isert sets up to a worse case of
16MB. This has implications on memory requirements.
In the absence of a handshake we should have the user choose with a
param... Ideally that would be a configfs parameter, but a modparam can
work as well here.