freebsd_network: Add pci_msix_table_bar().
Needed by the e1000 driver from FreeBSD 13. Tested in QEMU with e1000e.
This commit is contained in:
@@ -846,6 +846,24 @@ pci_release_msi(device_t dev)
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
pci_msix_table_bar(device_t dev)
|
||||
{
|
||||
pci_info *info = &((struct root_device_softc *)dev->root->softc)->pci_info;
|
||||
|
||||
uint8 capability_offset;
|
||||
if (gPci->find_pci_capability(info->bus, info->device, info->function,
|
||||
PCI_cap_id_msix, &capability_offset) != B_OK)
|
||||
return -1;
|
||||
|
||||
uint32 table_value = gPci->read_pci_config(info->bus, info->device, info->function,
|
||||
capability_offset + PCI_msix_table, 4);
|
||||
|
||||
uint32 bar = table_value & PCI_msix_bir_mask;
|
||||
return PCIR_BAR(bar);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
pci_msix_count(device_t dev)
|
||||
{
|
||||
|
||||
@@ -51,6 +51,8 @@ int pci_find_extcap(device_t dev, int capability, int *capreg);
|
||||
int pci_msi_count(device_t dev);
|
||||
int pci_alloc_msi(device_t dev, int *count);
|
||||
int pci_release_msi(device_t dev);
|
||||
|
||||
int pci_msix_table_bar(device_t dev);
|
||||
int pci_msix_count(device_t dev);
|
||||
int pci_alloc_msix(device_t dev, int *count);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user