git: ce6c84abe6c2 - stable/14 - camcontrol: add support for Toshiba drive firmware update

From: Kenneth D. Merry <ken_at_FreeBSD.org>
Date: Wed, 03 Jan 2024 15:34:06 UTC
The branch stable/14 has been updated by ken:

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

commit ce6c84abe6c2bc70c547dfa4ff6ed33917138f1d
Author:     Kenneth D. Merry <ken@FreeBSD.org>
AuthorDate: 2023-12-29 19:23:51 +0000
Commit:     Kenneth D. Merry <ken@FreeBSD.org>
CommitDate: 2024-01-03 15:33:12 +0000

    camcontrol: add support for Toshiba drive firmware update
    
    Thanks to Toshiba for providing the SCSI spec for their latest
    generation drives so I could confirm how they operate.
    
    The firmware download works in a pretty standard way, so this
    is a straightforward table addition.
    
    sbin/camcontrol/camcontrol.8:
            Document that Toshiba drives are supported for fwdownload,
            and that it was tested on TOSHIBA MG10SFA22TE 22TB drives.
    
    sbin/camcontrol/fwdownload.c:
            Add TOSHIBA to the known SCSI vendors list for fwdownload.
    
    Sponsored by:   Spectra Logic
    
    (cherry picked from commit cd95f18c477ca30c3ba6f98577d321f56b1e8439)
---
 sbin/camcontrol/camcontrol.8 | 2 ++
 sbin/camcontrol/fwdownload.c | 3 +++
 2 files changed, 5 insertions(+)

diff --git a/sbin/camcontrol/camcontrol.8 b/sbin/camcontrol/camcontrol.8
index ec9af63be63d..065dfbe8a1b4 100644
--- a/sbin/camcontrol/camcontrol.8
+++ b/sbin/camcontrol/camcontrol.8
@@ -1700,6 +1700,8 @@ Tested with Constellation ES (ST32000444SS), ES.2 (ST33000651SS) and
 ES.3 (ST1000NM0023) drives.
 .It SmrtStor
 Tested with 400GB Optimus SSDs (TXA2D20400GA6001).
+.It TOSHIBA
+Tested with 22TB MG10SFA22TE SAS drives.
 .El
 .Pp
 .Em WARNING! WARNING! WARNING!
diff --git a/sbin/camcontrol/fwdownload.c b/sbin/camcontrol/fwdownload.c
index 25b98c804e3e..cfb8b70ccb76 100644
--- a/sbin/camcontrol/fwdownload.c
+++ b/sbin/camcontrol/fwdownload.c
@@ -84,6 +84,7 @@ typedef enum {
 	VENDOR_SAMSUNG,
 	VENDOR_SEAGATE,
 	VENDOR_SMART,
+	VENDOR_TOSHIBA,
 	VENDOR_ATA,
 	VENDOR_UNKNOWN
 } fw_vendor_t;
@@ -213,6 +214,8 @@ static struct fw_vendor vendors_list[] = {
 	0x8000, 0x07, 0x07, 0, 1, FW_TUR_READY, WB_TIMEOUT, FW_TIMEOUT_DEFAULT},
 	{VENDOR_SMART,		"SmrtStor",	T_DIRECT,
 	0x8000, 0x07, 0x07, 0, 1, FW_TUR_READY, WB_TIMEOUT, FW_TIMEOUT_DEFAULT},
+	{VENDOR_TOSHIBA,	"TOSHIBA",	T_DIRECT,
+	0x8000, 0x07, 0x07, 0, 1, FW_TUR_READY, WB_TIMEOUT, FW_TIMEOUT_DEFAULT},
 	{VENDOR_HGST,	 	"WD",		T_DIRECT,
 	0x1000, 0x07, 0x07, 1, 0, FW_TUR_READY, WB_TIMEOUT, FW_TIMEOUT_DEFAULT},
 	{VENDOR_HGST,	 	"WDC",		T_DIRECT,