From 45aad652a927d642929c790281c5b9dfbb9bc7f3 Mon Sep 17 00:00:00 2001 From: jeff-lien-sndk Date: Wed, 5 Nov 2025 15:13:59 -0600 Subject: [PATCH] plugins/sandisk: Use Correct PCI Vendor ID for SNESSD1 Drives The current Sandisk plugin code is using the Western Digital PCI vendor id for the SNESSD1 drives. It should be using the Sandisk Vendor ID (0x15B7) instead. The wdc plugin code also needs to be updated to recognize this new Sandisk device. Signed-off-by: jeff-lien-sndk Reviewed-by: brandon-paupore-sndk --- plugins/sandisk/sandisk-nvme.c | 2 +- plugins/sandisk/sandisk-utils.c | 36 ++++++++++++++++----------------- plugins/wdc/wdc-nvme.c | 33 +++++++++++++++++++++++++++++- 3 files changed, 51 insertions(+), 20 deletions(-) diff --git a/plugins/sandisk/sandisk-nvme.c b/plugins/sandisk/sandisk-nvme.c index c2615c8913..022df96562 100644 --- a/plugins/sandisk/sandisk-nvme.c +++ b/plugins/sandisk/sandisk-nvme.c @@ -1022,7 +1022,7 @@ static int sndk_capabilities(int argc, char **argv, /* get capabilities */ ret = nvme_scan_topology(ctx, NULL, NULL); - if (ret || sndk_check_device(ctx, hdl)) + if (ret || !sndk_check_device(ctx, hdl)) return -1; capabilities = sndk_get_drive_capabilities(ctx, hdl); diff --git a/plugins/sandisk/sandisk-utils.c b/plugins/sandisk/sandisk-utils.c index b9d47b57c4..4029f7898b 100644 --- a/plugins/sandisk/sandisk-utils.c +++ b/plugins/sandisk/sandisk-utils.c @@ -549,24 +549,6 @@ __u64 sndk_get_drive_capabilities(struct nvme_global_ctx *ctx, SNDK_DRIVE_CAP_SET_LATENCY_MONITOR); break; - case SNDK_NVME_SNESSD1_DEV_ID_E1L: - case SNDK_NVME_SNESSD1_DEV_ID_E2: - case SNDK_NVME_SNESSD1_DEV_ID_E3S: - case SNDK_NVME_SNESSD1_DEV_ID_E3L: - case SNDK_NVME_SNESSD1_DEV_ID_U2: - capabilities |= (SNDK_DRIVE_CAP_C0_LOG_PAGE | - SNDK_DRIVE_CAP_C3_LOG_PAGE | - SNDK_DRIVE_CAP_CA_LOG_PAGE | - SNDK_DRIVE_CAP_OCP_C4_LOG_PAGE | - SNDK_DRIVE_CAP_OCP_C5_LOG_PAGE | - SNDK_DRIVE_CAP_UDUI | - SNDK_DRIVE_CAP_VU_FID_CLEAR_PCIE | - SNDK_DRIVE_CAP_CLOUD_SSD_VERSION | - SNDK_DRIVE_CAP_LOG_PAGE_DIR | - SNDK_DRIVE_CAP_DRIVE_STATUS | - SNDK_DRIVE_CAP_SET_LATENCY_MONITOR); - break; - case SNDK_NVME_SN861_DEV_ID_E1S: capabilities |= (SNDK_DRIVE_CAP_C0_LOG_PAGE | SNDK_DRIVE_CAP_C3_LOG_PAGE | @@ -610,6 +592,24 @@ __u64 sndk_get_drive_capabilities(struct nvme_global_ctx *ctx, case SNDK_NVME_SNDK_VID: switch (read_device_id) { + case SNDK_NVME_SNESSD1_DEV_ID_E1L: + case SNDK_NVME_SNESSD1_DEV_ID_E2: + case SNDK_NVME_SNESSD1_DEV_ID_E3S: + case SNDK_NVME_SNESSD1_DEV_ID_E3L: + case SNDK_NVME_SNESSD1_DEV_ID_U2: + capabilities |= (SNDK_DRIVE_CAP_C0_LOG_PAGE | + SNDK_DRIVE_CAP_C3_LOG_PAGE | + SNDK_DRIVE_CAP_CA_LOG_PAGE | + SNDK_DRIVE_CAP_OCP_C4_LOG_PAGE | + SNDK_DRIVE_CAP_OCP_C5_LOG_PAGE | + SNDK_DRIVE_CAP_UDUI | + SNDK_DRIVE_CAP_VU_FID_CLEAR_PCIE | + SNDK_DRIVE_CAP_CLOUD_SSD_VERSION | + SNDK_DRIVE_CAP_LOG_PAGE_DIR | + SNDK_DRIVE_CAP_DRIVE_STATUS | + SNDK_DRIVE_CAP_SET_LATENCY_MONITOR); + break; + case SNDK_NVME_SN7150_DEV_ID_1: case SNDK_NVME_SN7150_DEV_ID_2: case SNDK_NVME_SN7150_DEV_ID_3: diff --git a/plugins/wdc/wdc-nvme.c b/plugins/wdc/wdc-nvme.c index fd7bf11520..1ffc088064 100644 --- a/plugins/wdc/wdc-nvme.c +++ b/plugins/wdc/wdc-nvme.c @@ -92,6 +92,12 @@ #define WDC_NVME_SNTMP_DEV_ID 0x2761 #define WDC_NVME_SNTMP_DEV_ID_1 0x2763 +#define WDC_NVME_SNESSD1_DEV_ID_E1L 0x2765 +#define WDC_NVME_SNESSD1_DEV_ID_E2 0x2766 +#define WDC_NVME_SNESSD1_DEV_ID_E3S 0x2767 +#define WDC_NVME_SNESSD1_DEV_ID_E3L 0x2768 +#define WDC_NVME_SNESSD1_DEV_ID_U2 0x2769 + /* This id's are no longer supported, delete ?? */ #define WDC_NVME_SN550_DEV_ID 0x2708 @@ -190,7 +196,9 @@ #define WDC_DRIVE_CAP_OCP_C5_LOG_PAGE 0x0000008000000000 #define WDC_DRIVE_CAP_DEVICE_WAF 0x0000010000000000 #define WDC_DRIVE_CAP_SET_LATENCY_MONITOR 0x0000020000000000 -#define WDC_DRIVE_CAP_RESERVED1 0x0000040000000000 +#define WDC_DRIVE_CAP_UDUI 0x0000040000000000 +#define WDC_DRIVE_CAP_RESIZE_SN861 0x0000080000000000 + /* Any new capability flags should be added to the SNDK plugin */ #define WDC_DRIVE_CAP_SMART_LOG_MASK (WDC_DRIVE_CAP_C0_LOG_PAGE | \ @@ -1958,6 +1966,24 @@ static __u64 wdc_get_drive_capabilities(struct nvme_global_ctx *ctx, struct nvme case WDC_NVME_SNDK_VID: switch (read_device_id) { + case WDC_NVME_SNESSD1_DEV_ID_E1L: + case WDC_NVME_SNESSD1_DEV_ID_E2: + case WDC_NVME_SNESSD1_DEV_ID_E3S: + case WDC_NVME_SNESSD1_DEV_ID_E3L: + case WDC_NVME_SNESSD1_DEV_ID_U2: + capabilities |= (WDC_DRIVE_CAP_C0_LOG_PAGE | + WDC_DRIVE_CAP_C3_LOG_PAGE | + WDC_DRIVE_CAP_CA_LOG_PAGE | + WDC_DRIVE_CAP_OCP_C4_LOG_PAGE | + WDC_DRIVE_CAP_OCP_C5_LOG_PAGE | + WDC_DRIVE_CAP_UDUI | + WDC_DRIVE_CAP_VU_FID_CLEAR_PCIE | + WDC_DRIVE_CAP_CLOUD_SSD_VERSION | + WDC_DRIVE_CAP_LOG_PAGE_DIR | + WDC_DRIVE_CAP_DRIVE_STATUS | + WDC_DRIVE_CAP_SET_LATENCY_MONITOR); + break; + case WDC_NVME_SXSLCL_DEV_ID: capabilities = WDC_DRIVE_CAP_DRIVE_ESSENTIALS; break; @@ -7257,6 +7283,11 @@ static int wdc_get_c0_log_page(struct nvme_global_ctx *ctx, struct nvme_transpor case WDC_NVME_SN655_DEV_ID_1: case WDC_NVME_SNTMP_DEV_ID: case WDC_NVME_SNTMP_DEV_ID_1: + case WDC_NVME_SNESSD1_DEV_ID_E1L: + case WDC_NVME_SNESSD1_DEV_ID_E2: + case WDC_NVME_SNESSD1_DEV_ID_E3S: + case WDC_NVME_SNESSD1_DEV_ID_E3L: + case WDC_NVME_SNESSD1_DEV_ID_U2: if (uuid_index == 0) { ret = nvme_get_print_ocp_cloud_smart_log(hdl, uuid_index,