git: 53825afc5dd1 - main - nvme: There's 64 LBAF descriptors, not 16

From: Warner Losh <imp_at_FreeBSD.org>
Date: Fri, 10 Oct 2025 00:21:11 UTC
The branch main has been updated by imp:

URL: https://cgit.FreeBSD.org/src/commit/?id=53825afc5dd13f3d16c3db6727260d7184bcd581

commit 53825afc5dd13f3d16c3db6727260d7184bcd581
Author:     Warner Losh <imp@FreeBSD.org>
AuthorDate: 2025-10-10 00:16:47 +0000
Commit:     Warner Losh <imp@FreeBSD.org>
CommitDate: 2025-10-10 00:19:04 +0000

    nvme: There's 64 LBAF descriptors, not 16
    
    Older versions of the standard were limited to 16, but the actual limit
    is 64. Bump the limit to 64. This should be a #define, but there's no
    good standardized name, so I'm punting on that. All the places that use
    it, apart from the byte swapping code, do the right thing and use the
    nlbaf field to limit what to access.
    
    Sponsored by:           Netflix
---
 sys/dev/nvme/nvme.h | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/sys/dev/nvme/nvme.h b/sys/dev/nvme/nvme.h
index 17c5cdb4db87..57cb37907e65 100644
--- a/sys/dev/nvme/nvme.h
+++ b/sys/dev/nvme/nvme.h
@@ -1507,9 +1507,7 @@ struct nvme_namespace_data {
 	uint8_t			eui64[8];
 
 	/** lba format support */
-	uint32_t		lbaf[16];
-
-	uint8_t			reserved7[192];
+	uint32_t		lbaf[64];
 
 	uint8_t			vendor_specific[3712];
 } __packed __aligned(4);
@@ -2175,7 +2173,7 @@ void	nvme_namespace_data_swapbytes(struct nvme_namespace_data *s __unused)
 	s->anagrpid = le32toh(s->anagrpid);
 	s->nvmsetid = le16toh(s->nvmsetid);
 	s->endgid = le16toh(s->endgid);
-	for (i = 0; i < 16; i++)
+	for (i = 0; i < 64; i++)
 		s->lbaf[i] = le32toh(s->lbaf[i]);
 #endif
 }