[PATCH mptcp-next v4 09/10] nvme-tcp: support IPv6 traffic class
Geliang Tang <[email protected]> Thu, 30 Jul 2026 10:54:02 +0800
| Newsgroups | dev.linux.lists.mptcp |
|---|---|
| Message-ID | <938a9ae9f52e27a496db53948fc07138b9acfb3e.1785378180.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..cabbf67d24f8 100644 --- a/drivers/nvme/host/tcp.c +++ b/drivers/nvme/host/tcp.c @@ -1837,6 +1837,11 @@ 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 IS_ENABLED(CONFIG_IPV6) + if (nctrl->opts->tclass >= 0 && + queue->sock->sk->sk_family == AF_INET6) + ip6_sock_set_tclass(queue->sock->sk, nctrl->opts->tclass); +#endif /* 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