@@ -8,7 +8,7 @@ use heapless::Vec;
88use log:: debug;
99use mctp:: { AsyncRespChannel , MsgIC } ;
1010
11- use crate :: nvme:: mi:: PortCapabilityFlags ;
11+ use crate :: nvme:: mi:: { NvmSubsystemStatusFlags , PortCapabilityFlags } ;
1212use crate :: {
1313 CommandEffect , CommandEffectError , Controller , ControllerError , ControllerType , Discriminant ,
1414 MAX_CONTROLLERS , MAX_NAMESPACES , NamespaceId , NamespaceIdDisposition , SubsystemError ,
@@ -224,17 +224,21 @@ impl RequestHandler for NvmeMiCommandRequestHeader {
224224 let pdlu = core:: cmp:: min ( 255 , 100 * ctlr. write_age / ctlr. write_lifespan ) ;
225225
226226 let nvmshds = NvmSubsystemHealthDataStructureResponse {
227- nss : ( subsys. health . nss . atf as u8 ) << 7
228- | ( subsys. health . nss . sfm as u8 ) << 6
229- | ( subsys. health . nss . df as u8 ) << 5
230- | ( subsys. health . nss . rnr as u8 ) << 4
231- | ( ( pprt. cls != crate :: pcie:: LinkSpeed :: Inactive ) as u8 ) << 3 // P0LA
232- | ( false as u8 ) << 2 , // P1LA
227+ nss : {
228+ let mut flags = subsys. health . nss ;
229+
230+ if pprt. cls != crate :: pcie:: LinkSpeed :: Inactive {
231+ flags |= NvmSubsystemStatusFlags :: P0la ;
232+ }
233+
234+ flags
235+ }
236+ . into ( ) ,
233237 #[ allow( clippy:: nonminimal_bool) ]
234238 sw : ( !false as u8 ) << 5 // PMRRO
235239 | ( !false as u8 ) << 4 // VMBF
236240 | ( !ctlr. ro as u8 ) << 3 // AMRO
237- | ( !subsys . health . nss . rd as u8 ) << 2 // NDR
241+ | ( !ctlr . ro as u8 ) << 2 // NDR
238242 | ( !( ctlr. temp_range . lower <= ctlr. temp && ctlr. temp <= ctlr. temp_range . upper ) as u8 ) << 1 // TTC
239243 | ( !( ( 100 * ctlr. spare / ctlr. capacity ) < ctlr. spare_range . lower ) as u8 ) ,
240244 ctemp : ctemp as u8 ,
0 commit comments