Skip to content

Commit 15fcafc

Browse files
committed
nvme: Convert SanitizeStatus to deku bits
Signed-off-by: Andrew Jeffery <andrew@codeconstruct.com.au>
1 parent a7f06ef commit 15fcafc

2 files changed

Lines changed: 21 additions & 19 deletions

File tree

src/nvme.rs

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,13 @@ flags! {
309309
}
310310

311311
// Base v2.1, 5.1.12.1.33, Figure 291, SSTAT, SOS
312-
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
312+
#[derive(Clone, Copy, Debug, Default, DekuRead, DekuWrite, Eq, PartialEq)]
313+
#[deku(
314+
bits = "bits.0",
315+
ctx = "endian: Endian, bits: BitSize",
316+
endian = "endian",
317+
id_type = "u8"
318+
)]
313319
#[repr(u8)]
314320
pub enum SanitizeOperationStatus {
315321
#[default]
@@ -322,21 +328,17 @@ pub enum SanitizeOperationStatus {
322328
unsafe impl crate::Discriminant<u8> for SanitizeOperationStatus {}
323329

324330
// Base v2.1, 5.1.12.1.33, Figure 291, SSTAT
325-
#[derive(Clone, Copy, Debug, Default)]
331+
#[derive(Clone, Copy, Debug, Default, DekuRead, DekuWrite)]
332+
#[deku(ctx = "endian: Endian", endian = "endian")]
326333
pub struct SanitizeStatus {
327-
sos: SanitizeOperationStatus,
334+
#[deku(bits = "5")]
328335
opc: u8,
329-
gde: bool,
336+
#[deku(bits = "3")]
337+
sos: SanitizeOperationStatus,
338+
#[deku(bits = "1", pad_bits_before = "6")]
330339
mvcncled: bool,
331-
}
332-
333-
impl From<SanitizeStatus> for u16 {
334-
fn from(value: SanitizeStatus) -> Self {
335-
((value.mvcncled as u16) << 9)
336-
| ((value.gde as u16) << 8)
337-
| ((value.opc & ((1 << 6) - 1)) << 3) as u16
338-
| value.sos.id() as u16
339-
}
340+
#[deku(bits = "1")]
341+
gde: bool,
340342
}
341343

342344
// Base v2.1, 5.12.1.33, Fgure 291, SSI, SANS
@@ -373,7 +375,7 @@ impl From<SanitizeStateInformation> for u8 {
373375
#[deku(endian = "little")]
374376
struct SanitizeStatusLogPageResponse {
375377
sprog: u16,
376-
sstat: u16,
378+
sstat: SanitizeStatus,
377379
scdw10: u32,
378380
eto: u32,
379381
etbe: u32,

src/nvme/mi/dev.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1276,7 +1276,7 @@ impl RequestHandler for AdminGetLogPageRequest {
12761276

12771277
let sslpr = SanitizeStatusLogPageResponse {
12781278
sprog: u16::MAX,
1279-
sstat: subsys.sstat.into(),
1279+
sstat: subsys.sstat,
12801280
scdw10: {
12811281
if let Some(sconf) = subsys.sconf {
12821282
sconf.into()
@@ -1955,10 +1955,10 @@ impl RequestHandler for AdminSanitizeRequest {
19551955
fails: 0,
19561956
};
19571957
subsys.sstat = SanitizeStatus {
1958-
sos: SanitizeOperationStatus::Sanitized,
19591958
opc: 0,
1960-
gde: true,
1959+
sos: SanitizeOperationStatus::Sanitized,
19611960
mvcncled: false,
1961+
gde: true,
19621962
};
19631963
subsys.sconf = Some(self.config.try_into()?);
19641964

@@ -1970,10 +1970,10 @@ impl RequestHandler for AdminSanitizeRequest {
19701970
fails: 0,
19711971
};
19721972
subsys.sstat = SanitizeStatus {
1973-
sos: SanitizeOperationStatus::Sanitized,
19741973
opc: config.owpass,
1975-
gde: true,
1974+
sos: SanitizeOperationStatus::Sanitized,
19761975
mvcncled: false,
1976+
gde: true,
19771977
};
19781978
subsys.sconf = Some(self.config.try_into()?);
19791979

0 commit comments

Comments
 (0)