<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from rtf -->
<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<font face="Calibri" size="2"><span style="font-size:10pt;">
<div>Hi,</div>
<div><font size="2"><span style="font-size:11pt;"> </span></font></div>
<div>I have a question and a little feedback:</div>
<div><font size="2"><span style="font-size:11pt;"> </span></font></div>
<ol style="margin:0;padding-left:36pt;">
<li>Currently,<font face="Courier New"> </font><font face="Courier New">SntiBuildFirmwareImageDownloadCmd</font> () always returns without generating valid PRPs due to the following code (numDwords is always zero): </li></ol>
<div style="padding-left:72pt;"><font size="2"><span style="font-size:11pt;"> </span></font></div>
<div style="padding-left:72pt;"><font size="2"><span style="font-size:9pt;"> <font color="blue">#define</font> DEBUG_CHECK</span></font></div>
<div style="padding-left:72pt;"><font size="2"><span style="font-size:9pt;"> <font color="blue">#ifdef</font> DEBUG_CHECK</span></font></div>
<div style="padding-left:72pt;"><font size="2"><span style="font-size:9pt;"> <font color="blue">if</font> ((pSgl->NumberOfElements * <font color="blue">sizeof</font>(STOR_SCATTER_GATHER_ELEMENT)) >=</span></font></div>
<div style="padding-left:72pt;"><font size="2"><span style="font-size:9pt;"> (numDwords/<font color="blue">sizeof</font>(UINT32))) { </span></font></div>
<div style="padding-left:72pt;"><font size="2"><span style="font-size:9pt;"> <font color="green">/* In this case, must fail the command or create a temp buffer... */</font></span></font></div>
<div style="padding-left:72pt;"><font size="2" color="green"><span style="font-size:9pt;"> </span></font></div>
<div style="padding-left:72pt;"><font size="2"><span style="font-size:9pt;"> ASSERT(FALSE);</span></font></div>
<div style="padding-left:72pt;"><font size="2"><span style="font-size:9pt;"> <font color="blue">return</font>;</span></font></div>
<div style="padding-left:72pt;"><font size="2"><span style="font-size:9pt;"> }</span></font></div>
<div style="padding-left:18pt;"><font size="2"><span style="font-size:9pt;"> <font color="blue">#endif</font> <font color="green">/* DEBUG_CHECK */</font></span></font></div>
<div> </div>
<div> It looks like the intention was for numDwords to have a valid value that would have allowed the function to continue as long as a temp buffer wasn’t needed but it was never set…is that the correct? </div>
<div style="padding-left:18pt;"><font size="2"><span style="font-size:11pt;"> </span></font></div>
<ol start="2" style="margin:0;padding-left:36pt;">
<font face="Courier New">
<li>SntiBuildFirmwareImageDownloadCmd<font face="Calibri"> </font><font face="Calibri">()</font><font face="Calibri"> also has no return value </font><font face="Calibri">and </font><font face="Calibri">the caller </font><font face="Calibri">is </font><font face="Calibri">assum</font><font face="Calibri">ing</font><font face="Calibri">
success , resulting in a malformed </font><font face="Calibri">NVMe command being generated</font><font face="Calibri"> (PRP</font><font face="Calibri">1 and PRP2 set all zeros)</font><font face="Calibri"> and sent out on behalf of SCSI write buffer. I </font><font face="Calibri">believe</font><font face="Calibri">
this function</font><font face="Calibri"> should</font><font face="Calibri"> </font><font face="Calibri">be changed to return </font><font face="Calibri">SNTI_TRANSLATION_STATUS</font><font face="Calibri"> </font><font face="Calibri">and</font><font face="Calibri">
</font>SntiTranslateWriteBuffer()<font face="Calibri"> </font><font face="Calibri">should </font><font face="Calibri">be modified to check for </font><font face="Calibri">success/failure</font><font face="Calibri"> rather than forging blindly ahead.</font></li></font>
</ol>
<div style="padding-left:18pt;"><font size="2"><span style="font-size:11pt;"> </span></font></div>
<ol start="3" style="margin:0;padding-left:36pt;">
<li>Seems like a few other routines which don’t have any <font size="2"><span style="font-size:11pt;">return value should also be changed to return </span></font><font face="Courier New">SNTI_TRANSLATION_STATUS</font><font face="Courier New"> </font><font size="2"><span style="font-size:11pt;">value(
and all functions which call these routines be modified to check for success/failure):</span></font></li></ol>
<div style="padding-left:4.8pt;"><font size="2" color="#1F497D"><span style="font-size:11pt;"> </span></font></div>
<div style="padding-left:4.8pt;"><font size="2" color="#1F497D"><span style="font-size:11pt;"> <font face="Courier New" size="2" color="black"><span style="font-size:10pt;">VOID SntiTranslateSglToPrp</span></font><font face="Courier New" size="2" color="black"><span style="font-size:10pt;">(</span></font><font face="Courier New" size="2" color="black"><span style="font-size:10pt;">)</span></font></span></font></div>
<div style="padding-left:4.8pt;"><font face="Courier New"> VOID SntiBuildFirmwareActivateCmd()</font></div>
<div style="padding-left:4.8pt;"><font face="Courier New"> VOID SntiBuildSecuritySendReceiveCmd()</font></div>
<div style="padding-left:4.8pt;"><font size="2" color="#1F497D"><span style="font-size:11pt;"> </span></font></div>
<div style="padding-left:4.8pt;"><font size="2" color="#1F497D"><span style="font-size:11pt;">Thanks,</span></font></div>
<div style="padding-left:4.8pt;"><font size="2" color="#1F497D"><span style="font-size:11pt;">Judy</span></font></div>
<div style="padding-left:4.8pt;"><font size="2"><span style="font-size:11pt;"> </span></font></div>
</span></font>
</body>
</html>