mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
iavf(4): Get MSI-X BAR index at runtime instead of hardcoding it
This allows iavf to load on E830 devices since those devices place their MSI-X BAR at a different location than in previous 800 series products. Signed-off-by: Eric Joyner <erj@FreeBSD.org> Sponsored by: Intel Corporation Differential Revision: https://reviews.freebsd.org/D46952 (cherry picked from commit e53a21abdf2953714e44e3c54b4bb78557cb096c)
This commit is contained in:
parent
1e8db1f74e
commit
b8ab635de4
2 changed files with 6 additions and 5 deletions
|
|
@ -1,5 +1,5 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause */
|
||||
/* Copyright (c) 2021, Intel Corporation
|
||||
/* Copyright (c) 2024, Intel Corporation
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -1479,10 +1479,11 @@ iavf_update_msix_devinfo(device_t dev)
|
|||
{
|
||||
struct pci_devinfo *dinfo;
|
||||
u32 msix_ctrl;
|
||||
u8 msix_location;
|
||||
|
||||
dinfo = (struct pci_devinfo *)device_get_ivars(dev);
|
||||
/* We can hardcode this offset since we know the device */
|
||||
msix_ctrl = pci_read_config(dev, 0x70 + PCIR_MSIX_CTRL, 2);
|
||||
msix_location = dinfo->cfg.msix.msix_location;
|
||||
msix_ctrl = pci_read_config(dev, msix_location + PCIR_MSIX_CTRL, 2);
|
||||
dinfo->cfg.msix.msix_ctrl = msix_ctrl;
|
||||
dinfo->cfg.msix.msix_msgnum = (msix_ctrl & PCIM_MSIXCTRL_TABLE_SIZE) + 1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause */
|
||||
/* Copyright (c) 2021, Intel Corporation
|
||||
/* Copyright (c) 2024, Intel Corporation
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -370,7 +370,7 @@ iavf_if_attach_pre(if_ctx_t ctx)
|
|||
}
|
||||
scctx->isc_rxqsizes[0] = roundup2(scctx->isc_nrxd[0]
|
||||
* sizeof(union iavf_32byte_rx_desc), DBA_ALIGN);
|
||||
scctx->isc_msix_bar = PCIR_BAR(IAVF_MSIX_BAR);
|
||||
scctx->isc_msix_bar = pci_msix_table_bar(dev);
|
||||
scctx->isc_tx_nsegments = IAVF_MAX_TX_SEGS;
|
||||
scctx->isc_tx_tso_segments_max = IAVF_MAX_TSO_SEGS;
|
||||
scctx->isc_tx_tso_size_max = IAVF_TSO_SIZE;
|
||||
|
|
|
|||
Loading…
Reference in a new issue