• Varun Prakash's avatar
    nvme-tcp: send H2CData PDUs based on MAXH2CDATA · c2700d28
    Varun Prakash authored
    As per NVMe/TCP specification (revision 1.0a, section 3.6.2.3)
    Maximum Host to Controller Data length (MAXH2CDATA): Specifies the
    maximum number of PDU-Data bytes per H2CData PDU in bytes. This value
    is a multiple of dwords and should be no less than 4,096.
    
    Current code sets H2CData PDU data_length to r2t_length,
    it does not check MAXH2CDATA value. Fix this by setting H2CData PDU
    data_length to min(req->h2cdata_left, queue->maxh2cdata).
    
    Also validate MAXH2CDATA value returned by target in ICResp PDU,
    if it is not a multiple of dword or if it is less than 4096 return
    -EINVAL from nvme_tcp_init_connection().
    Signed-off-by: default avatarVarun Prakash <varun@chelsio.com>
    Reviewed-by: default avatarSagi Grimberg <sagi@grimberg.me>
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    c2700d28
tcp.c 67.6 KB