面壁UNH IOL NVMe一致性测试之2 – Set/Get Feature Command

原创内容,转载请注明:  [http://www.ssdfans.com]  谢谢!

Group 1 Admin Command Set的第二项是Set/Get Feature command测试。

DW10的Feature Identifier (FID) 字段用于指定Feature,有效的Feature ID包括:

Set/Get Feature command一共有五个case:

Case1: SEL=000b;

Case2:SEL=001b;

Case3:SEL=010b;

Case4:SEL=011b;

Case5:SEL=Reserve Value;

PS:SEL指的是Get Feature Command Dword 10的 [10:8],如下图

各个case的具体方式如下:

Case1: SEL=000b;

  • 测试方法:
    • 针对每一个feature
  1. Host发送Get Feature command,将SEL设置为000b,并将FID字段设置为对应的feature ID;
  2. 对于允许修改的Feature,Host发送Set Feature command进行设置;
  3. Host发送第二个Get Feature command,同样将SEL设置为000b;
  • 期望结果:
    • 针对每一个Get/Set Feature command,SSD正确返回CQ
    • 针对每一个Feature发送的Get Feature command,检查SSD返回的Feature信息是否正确
    • 检查第二个Get Feature command获取的信息与前面Set Feature command设置的匹配
    • 所有返回数据里Reserved字段应该为”0”

Case2:SEL=001b;

  • 测试方法:
    • 首先检查ONCS(Optional NVM Command Support )字段的bit4:
      • 如果该bit为1,说明SSD支持将Set Feature command的Save字段以及Get Feature Command的Select字段设置为非0值;
      • 如果该bit为0,本case无效
    • 针对每一个feature
  1. Host发送Get Feature command,将SEL设置为000b,并将FID字段设置为对应的feature ID;
  2. Host发送Get Feature command,将SEL设置为001b,并将FID字段设置为对应的feature ID;
  3. 对于允许修改的Feature,Host发送Set Feature command进行设置
  4. Host发送Get Feature command,将SEL设置为000b,并将FID字段设置为对应的feature ID;
  5. Host发送Get Feature command,将SEL设置为001b,并将FID字段设置为对应的feature ID;
  • 期望结果:
    • 针对每一个Get/Set Feature command,SSD正确返回CQ
    • 针对每一个Feature发送的Get Feature command,检查SSD返回的Feature信息是否正确
    • 步骤b和步骤d返回值应该不同
    • 步骤c和步骤e返回值应该相同
    • 所有返回数据里Reserved字段应该为”0”

Case3:SEL=010b;

  • 测试方法:
    • 首先检查ONCS(Optional NVM Command Support )字段的bit4:
      • 如果该bit为1,说明SSD支持将Set Feature command的Save字段以及Get Feature Command的Select字段设置为非0值;
      • 如果该bit为0,本case无效
    • 确定SSD的各个Feature是否支持Save,如果没有任何Feature支持Save功能,本case无效
  1. Host发送Get Feature command,将SEL设置为000b,并将FID字段设置为对应的feature ID;
  2. 对于允许修改的Feature,Host发送Set Feature command (将SV字段设为1)进行设置 (覆盖所有可能值)
  3. Host发送Get Feature command,将SEL设置为010b,并将FID字段设置为对应的feature ID;
  4. Reset SSD;
  5. Host发送Get Feature command,将SEL设置为010b,并将FID字段设置为对应的feature ID;
  • 期望结果:
    • 针对每一个Get/Set Feature command,SSD正确返回CQ
    • 针对每一个Feature发送的Get Feature command,检查SSD返回的Feature信息是否正确
    • 第二个Get Feature Command返回的Feature信息,与前面Set Feature command设置的匹配,并且重启之后值不变;
    • 所有返回数据里Reserved字段应该为”0”

Case4:SEL=011b;

  • 测试方法:
    • 首先检查ONCS(Optional NVM Command Support )字段的bit4:
      • 如果该bit为1,说明SSD支持将Set Feature command的Save字段以及Get Feature Command的Select字段设置为非0值;
      • 如果该bit为0,本case无效
    • 针对每一个feature
  1. Host发送Get Feature command,将SEL设置为011b,并将FID字段设置为对应的feature ID;记录Dword 0的bit 0,1,2并返回;
  2. Host发送Set Feature command (将SV字段设为1)进行设置;
  3. Host发送Get Feature command,将SEL设置为000b,并将NSID设置为1;
  4. Host发送Get Feature command,将SEL设置为000b,并将NSID设置为0;
  5. Host发送一个有效的Get Feature command,将SEL设置为000b,然后发送一个有效的Set Feature command修改该Feature
  • 期望结果:
    • 针对每一个Get/Set Feature command,SSD正确返回CQ
    • 针对step b, 如果CQ的Dword 0的bit 0为0,SSD返回 “Invalid Field’”,如果bit 0为1,命令应该执行成功;
    • 针对step c,如果CQ的Dword 0的bit 1为0,SSD返回 “Invalid Field’”,如果bit 1为0,命令应该执行成功;
    • 针对step d,如果CQ的Dword 0的bit 1为0,SSD返回 “Invalid Field’”,如果bit 1为0,命令应该执行成功;
    • 针对step e,如果CQ的Dword 0的bit 2为0,SSD返回 “Invalid Field’”,如果bit 2为1,命令应该执行成功;

Case5:SEL=Reserve Value;

  • 测试方法:
    • 针对每一个feature,Host发送Get Feature command,将SEL设置为111b
  • 期望结果:

SSD返回CQ,Status Code =02h (”Invalid Field in command”)

分类目录 存储, 技术文章.
扫一扫二维码或者微信搜索公众号ssdfans关注(添加朋友->点最下面的公众号->搜索ssdfans),可以经常看到SSD技术和产业的文章(SSD Fans只推送干货)。
ssdfans微信群介绍
技术讨论群 覆盖2000多位中国和世界华人圈SSD以及存储技术精英
固件、软件、测试群 固件、软件和测试技术讨论
异构计算群 讨论人工智能和GPU、FPGA、CPU异构计算
ASIC-FPGA群 芯片和FPGA硬件技术讨论群
闪存器件群 NAND、3D XPoint等固态存储介质技术讨论
企业级 企业级SSD、企业级存储
销售群 全国SSD供应商都在这里,砍砍价,会比某东便宜20%
工作求职群 存储行业换工作,发招聘,要关注各大公司招聘信息,赶快来
高管群 各大SSD相关存储公司高管和创始人、投资人

想加入这些群,请微信扫描下面二维码,或搜索nanoarchplus,加阿呆为微信好友,介绍你的昵称-单位-职务,注明群名,拉你进群。SSD业界需要什么帮助,也可以找阿呆聊。