diff --git a/pcid/src/pci_header.rs b/pcid/src/pci_header.rs index e777689696..9ae20ba2df 100644 --- a/pcid/src/pci_header.rs +++ b/pcid/src/pci_header.rs @@ -109,94 +109,3 @@ impl PciEndpointHeader { &self.shared.full_device_id } } - -#[cfg(test)] -mod test { - use std::convert::TryInto; - - use pci_types::device_type::DeviceType; - use pci_types::{ConfigRegionAccess, PciAddress}; - - use super::{PciHeader, PciHeaderError}; - - struct TestCfgAccess<'a> { - addr: PciAddress, - bytes: &'a [u8], - } - - impl ConfigRegionAccess for TestCfgAccess<'_> { - unsafe fn read(&self, addr: PciAddress, offset: u16) -> u32 { - assert_eq!(addr, self.addr); - let offset = offset as usize; - assert!(offset < self.bytes.len()); - u32::from_le_bytes(self.bytes[offset..offset + 4].try_into().unwrap()) - } - - unsafe fn write(&self, _addr: PciAddress, _offset: u16, _value: u32) { - unreachable!("should not write during tests"); - } - } - - #[rustfmt::skip] - const IGB_DEV_BYTES: [u8; 256] = [ - 0x86, 0x80, 0x33, 0x15, 0x07, 0x04, 0x10, 0x00, 0x03, 0x00, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x50, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x58, 0xf7, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0x15, 0x33, 0x15, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, - 0x01, 0x50, 0x23, 0xc8, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x70, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x11, 0xa0, 0x04, 0x80, 0x03, 0x00, 0x00, 0x00, 0x03, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, - 0x10, 0x00, 0x02, 0x00, 0xc2, 0x8c, 0x00, 0x10, 0x0f, 0x28, 0x19, 0x00, 0x11, 0x5c, 0x42, 0x00, - 0x42, 0x00, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ]; - - #[test] - fn tset_parse_igb_dev() { - let header = PciHeader::from_reader( - &TestCfgAccess { - addr: PciAddress::new(0, 2, 4, 0), - bytes: &IGB_DEV_BYTES, - }, - PciAddress::new(0, 2, 4, 0), - ) - .unwrap(); - match header { - PciHeader::General { .. } => {} - _ => panic!("wrong header type"), - } - assert_eq!(header.full_device_id().device_id, 0x1533); - assert_eq!(header.full_device_id().vendor_id, 0x8086); - assert_eq!(header.full_device_id().revision, 3); - assert_eq!(header.full_device_id().interface, 0); - assert_eq!( - DeviceType::from(( - header.full_device_id().class, - header.full_device_id().subclass - )), - DeviceType::EthernetController - ); - assert_eq!(header.full_device_id().subclass, 0); - } - - #[test] - fn test_parse_nonexistent() { - let bytes = &[0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]; - assert_eq!( - PciHeader::from_reader( - &TestCfgAccess { - addr: PciAddress::new(0, 2, 4, 0), - bytes, - }, - PciAddress::new(0, 2, 4, 0), - ), - Err(PciHeaderError::NoDevice) - ); - } -}