@@ -366,6 +366,30 @@ impl Transport for PciTransport {
366
366
}
367
367
}
368
368
369
+ impl PciTransport {
370
+ /// Get the MSI-X vector for config.
371
+ pub fn get_config_msix_vector ( & self ) -> u16 {
372
+ field_shared ! ( self . common_cfg, config_msix_vector) . read ( )
373
+ }
374
+
375
+ /// Set the MSI-X vector for config.
376
+ pub fn set_config_msix_vector ( & mut self , vector : u16 ) {
377
+ field ! ( self . common_cfg, config_msix_vector) . write ( vector) ;
378
+ }
379
+
380
+ /// Get the MSI-X vector for a queue.
381
+ pub fn get_queue_msix_vector ( & mut self , queue : u16 ) -> u16 {
382
+ field ! ( self . common_cfg, queue_select) . write ( queue) ;
383
+ field_shared ! ( self . common_cfg, queue_msix_vector) . read ( )
384
+ }
385
+
386
+ /// Set the MSI-X vector for a queue.
387
+ pub fn set_queue_msix_vector ( & mut self , queue : u16 , vector : u16 ) {
388
+ field ! ( self . common_cfg, queue_select) . write ( queue) ;
389
+ field ! ( self . common_cfg, queue_msix_vector) . write ( vector) ;
390
+ }
391
+ }
392
+
369
393
// SAFETY: MMIO can be done from any thread or CPU core.
370
394
unsafe impl Send for PciTransport { }
371
395
@@ -388,7 +412,7 @@ pub(crate) struct CommonCfg {
388
412
pub device_feature : ReadPure < u32 > ,
389
413
pub driver_feature_select : ReadPureWrite < u32 > ,
390
414
pub driver_feature : ReadPureWrite < u32 > ,
391
- pub msix_config : ReadPureWrite < u16 > ,
415
+ pub config_msix_vector : ReadPureWrite < u16 > ,
392
416
pub num_queues : ReadPure < u16 > ,
393
417
pub device_status : ReadPureWrite < u8 > ,
394
418
pub config_generation : ReadPure < u8 > ,
0 commit comments