Re: [PATCH v23 05/20] nvme-tcp: Add DDP offload control path

Aurelien Aptel
2024-03-07T15:43:38Z

Sagi Grimberg <sagi@grimberg.me> writes:
>> +
>> +static int nvme_tcp_offload_socket(struct nvme_tcp_queue *queue)
>> +{
>> + struct ulp_ddp_config config = {.type = ULP_DDP_NVME};
>> + int ret;
>> +
>> + config.nvmeotcp.pfv = NVME_TCP_PFV_1_0;
>> + config.nvmeotcp.cpda = 0;
>> + config.nvmeotcp.dgst =
>> + queue->hdr_digest ? NVME_TCP_HDR_DIGEST_ENABLE : 0;
>> + config.nvmeotcp.dgst |=
>> + queue->data_digest ? NVME_TCP_DATA_DIGEST_ENABLE : 0;
>> + config.nvmeotcp.queue_size = queue->ctrl->ctrl.sqsize + 1;
>> + config.nvmeotcp.queue_id = nvme_tcp_queue_id(queue);
>
> I forget, why is the queue_id needed? it does not travel the wire outside
> of the connect cmd.

You're right it is not needed, we will remove it.

>> +static void nvme_tcp_ddp_apply_limits(struct nvme_tcp_ctrl *ctrl)
>> +{
>> + ctrl->ctrl.max_segments = ctrl->ddp_limits.max_ddp_sgl_len;
>> + ctrl->ctrl.max_hw_sectors =
>> + ctrl->ddp_limits.max_ddp_sgl_len << (ilog2(SZ_4K) - SECTOR_SHIFT);
>
> I think you can use NVME_CTRL_PAGE_SHIFT instead of ilog2(SZ_4K)?

Yes both seems to be 12. We will use NVME_CTRL_PAGE_SHIFT.

Thanks