[PATCH 2/3] nvme-tcp: support IPv6 traffic class
Geliang Tang <[email protected]> Mon, 27 Jul 2026 11:19:02 +0800
| Newsgroups | org.infradead.lists.linux-nvme |
|---|---|
| Message-ID | <549f83b446749c1d40494db5b3df68f0e6a6ab61.1785122120.git.tanggeliang@kylinos.cn> |
From: Geliang Tang <[email protected]> The fabrics layer now supports parsing the tclass option, but the NVMe/TCP transport does not currently advertise or apply it. Allow NVMe/TCP to use NVMF_OPT_TCLASS and set IPV6_TCLASS on each queue socket when a traffic class is specified. Keep the existing IPv4 TOS handling unchanged. Signed-off-by: Geliang Tang <[email protected]> --- drivers/nvme/host/tcp.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/nvme/host/tcp.c b/drivers/nvme/host/tcp.c index ba5c7b3e2a7c..f35c047ea02b 100644 --- a/drivers/nvme/host/tcp.c +++ b/drivers/nvme/host/tcp.c @@ -1779,6 +1779,7 @@ static int nvme_tcp_alloc_queue(struct nvme_ctrl *nctrl, int qid, { struct nvme_tcp_ctrl *ctrl = to_tcp_ctrl(nctrl); struct nvme_tcp_queue *queue = &ctrl->queues[qid]; + int tclass = nctrl->opts->tclass; int ret, rcv_pdu_size; struct file *sock_file; @@ -1837,6 +1838,10 @@ static int nvme_tcp_alloc_queue(struct nvme_ctrl *nctrl, int qid, /* Set socket type of service */ if (nctrl->opts->tos >= 0) ip_sock_set_tos(queue->sock->sk, nctrl->opts->tos); + if (tclass >= 0) + sock_common_setsockopt(queue->sock->sk->sk_socket, SOL_IPV6, + IPV6_TCLASS, KERNEL_SOCKPTR(&tclass), + sizeof(tclass)); /* Set 10 seconds timeout for icresp recvmsg */ queue->sock->sk->sk_rcvtimeo = 10 * HZ; @@ -3041,7 +3046,8 @@ static struct nvmf_transport_ops nvme_tcp_transport = { NVMF_OPT_HOST_TRADDR | NVMF_OPT_CTRL_LOSS_TMO | NVMF_OPT_HDR_DIGEST | NVMF_OPT_DATA_DIGEST | NVMF_OPT_NR_WRITE_QUEUES | NVMF_OPT_NR_POLL_QUEUES | - NVMF_OPT_TOS | NVMF_OPT_HOST_IFACE | NVMF_OPT_TLS | + NVMF_OPT_TOS | NVMF_OPT_TCLASS | + NVMF_OPT_HOST_IFACE | NVMF_OPT_TLS | NVMF_OPT_KEYRING | NVMF_OPT_TLS_KEY | NVMF_OPT_CONCAT, .create_ctrl = nvme_tcp_create_ctrl, }; -- 2.53.0