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
- Host发送Get Feature command,将SEL设置为000b,并将FID字段设置为对应的feature ID;
- 对于允许修改的Feature,Host发送Set Feature command进行设置;
- 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
- 首先检查ONCS(Optional NVM Command Support )字段的bit4:
- Host发送Get Feature command,将SEL设置为000b,并将FID字段设置为对应的feature ID;
- Host发送Get Feature command,将SEL设置为001b,并将FID字段设置为对应的feature ID;
- 对于允许修改的Feature,Host发送Set Feature command进行设置
- Host发送Get Feature command,将SEL设置为000b,并将FID字段设置为对应的feature ID;
- 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无效
- 首先检查ONCS(Optional NVM Command Support )字段的bit4:
- Host发送Get Feature command,将SEL设置为000b,并将FID字段设置为对应的feature ID;
- 对于允许修改的Feature,Host发送Set Feature command (将SV字段设为1)进行设置 (覆盖所有可能值)
- Host发送Get Feature command,将SEL设置为010b,并将FID字段设置为对应的feature ID;
- Reset SSD;
- 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
- 首先检查ONCS(Optional NVM Command Support )字段的bit4:
- Host发送Get Feature command,将SEL设置为011b,并将FID字段设置为对应的feature ID;记录Dword 0的bit 0,1,2并返回;
- Host发送Set Feature command (将SV字段设为1)进行设置;
- Host发送Get Feature command,将SEL设置为000b,并将NSID设置为1;
- Host发送Get Feature command,将SEL设置为000b,并将NSID设置为0;
- 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”)