From nobody Fri May 3 00:15:40 2024 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4VVrtN65Gdz5KJyF; Fri, 3 May 2024 00:15:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4VVrtN5GzTz4QVl; Fri, 3 May 2024 00:15:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1714695340; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jg5K6DrotXCgaIlAj6ESK/MNJ9apyEDvxC5P9KeAmvU=; b=X1qvIc8y/mbeOILJpPP2bd7qYEZGowc7AFZQfXDiLvuajQYYqkRWm3uDGue6LavKf1Ky1d +IPFVzf3wPTVjIY8ZuY+ocWV1vX0tYQO3EgoC2zrsyCWYtRYx/TNaYdbA0p4J1nVMy7NqS H8PAMBar5gWVI/0sXJtfH7yl9WZ4R6Axi+blvd7SKe8XtUrRbFTfx6cXoswHF3JgUqFEKT iCxfy0u7JAE2Sw+rgqaliy0wK0vnawoQGQVur68qZfyGrNn7CdOicIJzoMUSye7ekpStrp IXCBzqrDDw8lZXVhhPEE99GZNHvidI/BxWMcH9Zao8m2iU9/eNYjR2jmUwAYtQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1714695340; a=rsa-sha256; cv=none; b=o/SYt5xgj5ldCqYkSl8yxKP6spwSx+lBe44B8cW2q4SfzDsnAfBsyEUlXQTlYJrOLCU1zy tmlpRUOcCK1SvGCriCYm+lWzYdLgLuSeAS2yamsYksV1i49pR0/QnK4rpiY+11OpNQoOOC RYAAuLl8+MnBx7m0bui39GhT850Fur7OBrBnmFUFzniIENz3ReYEcxINSgg5ch+Mg2MQoe LOJm7TS9UcbG7gExpwhmavar2JwTIvZzywg0owdLMASJKJDgFPikDzCqeX3Feq3RksviIW 6eW5jEv58ssjDekTEOU3BOZ6ccuFKIEwTieRiiz//aUyvTNXrcGAyJolWjw51A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1714695340; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jg5K6DrotXCgaIlAj6ESK/MNJ9apyEDvxC5P9KeAmvU=; b=yn7Gi0sTrU6KJueUzNFvLSsSG3XkSGa222OXpuOn/2kd/hahX2aZVeQ/jnZAmiFPchnmDn ueTQqMcdikx+fBU/2lL21rxUKVUQNRXXFT2mAPVYgLE0IVF8U7SGAtBzrKwvOSCNYLwca+ v2V/SkQsTodkX1AKsd7Cd1jW7JYX2rZPWuxu4gfbC5WmocGJBsv/yMKV59fc51BUcqvtLg lnwBcsoi+nOQwX6K2tKbHybpRMzny0wN/jLW86lUA8Au7ZLY7IZnlXTePqDL+XLZ4s6txx dgv5kXjHZIwvOsda3aUzaJ6jMF5BG6BZ1F6RAB3jqSJ5/MfLq9EDwzl3EhUIUQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4VVrtN4sD1zNnG; Fri, 3 May 2024 00:15:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 4430FeGK078784; Fri, 3 May 2024 00:15:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 4430FepX078781; Fri, 3 May 2024 00:15:40 GMT (envelope-from git) Date: Fri, 3 May 2024 00:15:40 GMT Message-Id: <202405030015.4430FepX078781@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: d86edc181ab2 - main - nvmf.h: New header defining ioctls for NVMe over Fabrics List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d86edc181ab2c14df7f1411dd15f7ee7accbd027 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=d86edc181ab2c14df7f1411dd15f7ee7accbd027 commit d86edc181ab2c14df7f1411dd15f7ee7accbd027 Author: John Baldwin AuthorDate: 2024-05-02 23:27:13 +0000 Commit: John Baldwin CommitDate: 2024-05-02 23:27:13 +0000 nvmf.h: New header defining ioctls for NVMe over Fabrics This defines structures, ioctl commands, and related constants used for both the Fabrics host and controller. Reviewed by: imp Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D44706 --- sys/dev/nvme/nvme.h | 2 ++ sys/dev/nvmf/nvmf.h | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) diff --git a/sys/dev/nvme/nvme.h b/sys/dev/nvme/nvme.h index 409d1f006cad..9775f5f945d6 100644 --- a/sys/dev/nvme/nvme.h +++ b/sys/dev/nvme/nvme.h @@ -44,6 +44,8 @@ #define NVME_IO_TEST _IOWR('n', 100, struct nvme_io_test) #define NVME_BIO_TEST _IOWR('n', 101, struct nvme_io_test) +/* NB: Fabrics-specific ioctls defined in nvmf.h start at 200. */ + /* * Macros to deal with NVME revisions, as defined VS register */ diff --git a/sys/dev/nvmf/nvmf.h b/sys/dev/nvmf/nvmf.h new file mode 100644 index 000000000000..1f1ecd437c7e --- /dev/null +++ b/sys/dev/nvmf/nvmf.h @@ -0,0 +1,79 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2022-2024 Chelsio Communications, Inc. + * Written by: John Baldwin + */ + +#ifndef __NVMF_H__ +#define __NVMF_H__ + +#include +#ifndef _KERNEL +#include +#endif + +/* + * Default settings in Fabrics controllers. These match values used by the + * Linux target. + */ +#define NVMF_MAX_IO_ENTRIES (1024) +#define NVMF_CC_EN_TIMEOUT (15) /* In 500ms units */ + +/* Allows for a 16k data buffer + SQE */ +#define NVMF_IOCCSZ (sizeof(struct nvme_command) + 16 * 1024) +#define NVMF_IORCSZ (sizeof(struct nvme_completion)) + +#define NVMF_NN (1024) + +struct nvmf_handoff_qpair_params { + bool admin; + bool sq_flow_control; + u_int qsize; + uint16_t sqhd; + uint16_t sqtail; /* host only */ + union { + struct { + int fd; + uint8_t rxpda; + uint8_t txpda; + bool header_digests; + bool data_digests; + uint32_t maxr2t; + uint32_t maxh2cdata; + uint32_t max_icd; + } tcp; + }; +}; + +struct nvmf_handoff_host { + u_int trtype; + u_int num_io_queues; + u_int kato; + struct nvmf_handoff_qpair_params admin; + struct nvmf_handoff_qpair_params *io; + const struct nvme_controller_data *cdata; +}; + +struct nvmf_reconnect_params { + uint16_t cntlid; + char subnqn[256]; +}; + +struct nvmf_handoff_controller_qpair { + u_int trtype; + struct nvmf_handoff_qpair_params params; + const struct nvmf_fabric_connect_cmd *cmd; + const struct nvmf_fabric_connect_data *data; +}; + +/* Operations on /dev/nvmf */ +#define NVMF_HANDOFF_HOST _IOW('n', 200, struct nvmf_handoff_host) +#define NVMF_DISCONNECT_HOST _IOW('n', 201, const char *) +#define NVMF_DISCONNECT_ALL _IO('n', 202) + +/* Operations on /dev/nvmeX */ +#define NVMF_RECONNECT_PARAMS _IOR('n', 203, struct nvmf_reconnect_params) +#define NVMF_RECONNECT_HOST _IOW('n', 204, struct nvmf_handoff_host) + +#endif /* !__NVMF_H__ */