aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2022-03-17 12:37:45 +0000
committerMichael Brown <mcb30@ipxe.org>2022-08-12 13:03:12 +0100
commit06467ee70fd4750ecd2ae324f66055ff261cb713 (patch)
treef57911f9506a7e425225b12a97d07d5fd78ea435
parentd6e36a2d736efaa9e44784bc58f4d90356774971 (diff)
downloadipxe-06467ee70fd4750ecd2ae324f66055ff261cb713.zip
ipxe-06467ee70fd4750ecd2ae324f66055ff261cb713.tar.gz
ipxe-06467ee70fd4750ecd2ae324f66055ff261cb713.tar.bz2
[intelxl] Defer fetching MAC address until after opening admin queue
Allow for the MAC address to be fetched using an admin queue command, instead of reading the PRTPM_SA[HL] registers directly. Signed-off-by: Michael Brown <mcb30@ipxe.org>
-rw-r--r--src/drivers/net/intelxl.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/drivers/net/intelxl.c b/src/drivers/net/intelxl.c
index 0f5e70d..438657f 100644
--- a/src/drivers/net/intelxl.c
+++ b/src/drivers/net/intelxl.c
@@ -1688,10 +1688,6 @@ static int intelxl_probe ( struct pci_device *pci ) {
intelxl, intelxl->pf, intelxl->port, intelxl->base,
INTELXL_PFLAN_QALLOC_LASTQ ( pflan_qalloc ) );
- /* Fetch MAC address and maximum frame size */
- if ( ( rc = intelxl_fetch_mac ( intelxl, netdev ) ) != 0 )
- goto err_fetch_mac;
-
/* Enable MSI-X dummy interrupt */
if ( ( rc = intelxl_msix_enable ( intelxl, pci,
INTELXL_MSIX_VECTOR ) ) != 0 )
@@ -1725,6 +1721,10 @@ static int intelxl_probe ( struct pci_device *pci ) {
if ( ( rc = intelxl_admin_promisc ( intelxl ) ) != 0 )
goto err_admin_promisc;
+ /* Fetch MAC address and maximum frame size */
+ if ( ( rc = intelxl_fetch_mac ( intelxl, netdev ) ) != 0 )
+ goto err_fetch_mac;
+
/* Configure queue register addresses */
intelxl->tx.reg = INTELXL_QTX ( intelxl->queue );
intelxl->tx.tail = ( intelxl->tx.reg + INTELXL_QXX_TAIL );
@@ -1756,6 +1756,7 @@ static int intelxl_probe ( struct pci_device *pci ) {
unregister_netdev ( netdev );
err_register_netdev:
+ err_fetch_mac:
err_admin_promisc:
err_admin_vsi:
err_admin_switch:
@@ -1766,7 +1767,6 @@ static int intelxl_probe ( struct pci_device *pci ) {
err_open_admin:
intelxl_msix_disable ( intelxl, pci, INTELXL_MSIX_VECTOR );
err_msix:
- err_fetch_mac:
pci_reset ( pci, intelxl->exp );
err_exp:
iounmap ( intelxl->regs );