Include the offical Intel network driver header files in tools/testing/selftests/vfio/lib/drivers/igb/igb.c and refactor the driver to directly utilize standard E1000_ prefixed registers and macros found from those headers.
Delete tools/testing/selftests/vfio/lib/drivers/igb/registers.h as it only contains duplicate code found in the offical IGB header files. Assisted-by: Gemini:gemini-3.1-pro-preview Suggested-by: David Matlack <[email protected]> Signed-off-by: Josh Hilke <[email protected]> # Conflicts: # tools/testing/selftests/vfio/lib/drivers/igb/igb.c --- .../selftests/vfio/lib/drivers/igb/igb.c | 159 +++++++++--------- .../vfio/lib/drivers/igb/registers.h | 127 -------------- tools/testing/selftests/vfio/lib/libvfio.mk | 1 + 3 files changed, 83 insertions(+), 204 deletions(-) delete mode 100644 tools/testing/selftests/vfio/lib/drivers/igb/registers.h diff --git a/tools/testing/selftests/vfio/lib/drivers/igb/igb.c b/tools/testing/selftests/vfio/lib/drivers/igb/igb.c index 5568b463c2f2..74b423954554 100644 --- a/tools/testing/selftests/vfio/lib/drivers/igb/igb.c +++ b/tools/testing/selftests/vfio/lib/drivers/igb/igb.c @@ -5,14 +5,19 @@ #include <linux/io.h> #include <linux/pci_regs.h> #include <linux/pci_ids.h> +#include <linux/mii.h> #include <libvfio/vfio_pci_device.h> -#include "registers.h" +#include "e1000_regs.h" +#include "e1000_defines.h" +#include "e1000_82575.h" #define PCI_DEVICE_ID_INTEL_82576 0x10C9 #define IGB_MAX_CHUNK_SIZE 1024 #define MSIX_VECTOR 0 #define RING_SIZE 4096 /* Number of descriptors in ring */ +#define IGB_ETH_OVERHEAD_SZ 18 +#define IGB_JUMBO_FRAME_SIZE (IGB_MAX_CHUNK_SIZE + IGB_ETH_OVERHEAD_SZ) struct igb_tx_desc { union { @@ -76,23 +81,23 @@ static int igb_write_phy(struct igb *igb, u32 offset, u16 data) int i; mdic = (((u32)data) | - (offset << IGB_MDIC_REG_SHIFT) | - (1 << IGB_MDIC_PHY_SHIFT) | - IGB_MDIC_OP_WRITE); + (offset << E1000_MDIC_REG_SHIFT) | + (1 << E1000_MDIC_PHY_SHIFT) | + E1000_MDIC_OP_WRITE); - igb_write32(igb, IGB_MDIC, mdic); + igb_write32(igb, E1000_MDIC, mdic); for (i = 0; i < 1000; i++) { usleep(50); - mdic = igb_read32(igb, IGB_MDIC); - if (mdic & IGB_MDIC_READY) + mdic = igb_read32(igb, E1000_MDIC); + if (mdic & E1000_MDIC_READY) break; } - if (!(mdic & IGB_MDIC_READY)) + if (!(mdic & E1000_MDIC_READY)) return -1; - if (mdic & IGB_MDIC_ERROR) + if (mdic & E1000_MDIC_ERROR) return -1; return 0; @@ -125,14 +130,14 @@ static int igb_setup_loopback(struct igb *igb) * below clears the autoneg-enable bit, so this is effectively a * no-op there. */ - (void)igb_write_phy(igb, IGB_PHY_CTRL_REG_OFFSET, - IGB_PHY_CTRL_AN_ENABLE | IGB_PHY_CTRL_AN_RESTART); + (void)igb_write_phy(igb, MII_BMCR, + BMCR_ANENABLE | BMCR_ANRESTART); /* PHY control: loopback + 1Gb/s full duplex, autoneg disabled. */ - ret = igb_write_phy(igb, IGB_PHY_CTRL_REG_OFFSET, - IGB_PHY_CTRL_LOOPBACK | - IGB_PHY_CTRL_SPEED_1000 | - IGB_PHY_CTRL_FULL_DUPLEX); + ret = igb_write_phy(igb, MII_BMCR, + BMCR_LOOPBACK | + BMCR_SPEED1000 | + BMCR_FULLDPLX); if (ret) return ret; @@ -148,14 +153,14 @@ static int igb_setup_loopback(struct igb *igb) * the link state the descriptor engine does not run, since the chip * normally waits for a real negotiated link. */ - ctrl = igb_read32(igb, IGB_CTRL); - ctrl &= ~IGB_CTRL_SPD_SEL; - ctrl |= IGB_CTRL_FRCSPD | - IGB_CTRL_FRCDPX | - IGB_CTRL_SPD_1000 | - IGB_CTRL_FD | - IGB_CTRL_SLU; - igb_write32(igb, IGB_CTRL, ctrl); + ctrl = igb_read32(igb, E1000_CTRL); + ctrl &= ~E1000_CTRL_SPD_SEL; + ctrl |= E1000_CTRL_FRCSPD | + E1000_CTRL_FRCDPX | + E1000_CTRL_SPD_1000 | + E1000_CTRL_FD | + E1000_CTRL_SLU; + igb_write32(igb, E1000_CTRL, ctrl); /* * Settling delay matching the kernel ethtool selftest's msleep(500) @@ -189,15 +194,14 @@ static void igb_hw_init(struct vfio_pci_device *device) u16 cmd_reg; int retries; - - iova_tx = to_iova(device, igb->tx_ring); iova_rx = to_iova(device, igb->rx_ring); + /* Signal that the driver is loaded */ - ctrl = igb_read32(igb, IGB_CTRL_EXT); - ctrl |= IGB_CTRL_EXT_DRV_LOAD; - ctrl &= ~IGB_CTRL_EXT_LINK_MODE_MASK; - igb_write32(igb, IGB_CTRL_EXT, ctrl); + ctrl = igb_read32(igb, E1000_CTRL_EXT); + ctrl |= E1000_CTRL_EXT_DRV_LOAD; + ctrl &= ~E1000_CTRL_EXT_LINK_MODE_MASK; + igb_write32(igb, E1000_CTRL_EXT, ctrl); /* Enable PCI Bus Master. */ cmd_reg = vfio_pci_config_readw(device, PCI_COMMAND); @@ -214,27 +218,27 @@ static void igb_hw_init(struct vfio_pci_device *device) * retrying the failed read indefinitely, which keeps PCIe AER and * IOMMU error handling busy and interferes with reset recovery. */ - ctrl = igb_read32(igb, IGB_GCR); - ctrl &= ~IGB_GCR_CMPL_TMOUT_RESEND; - igb_write32(igb, IGB_GCR, ctrl); + ctrl = igb_read32(igb, E1000_GCR); + ctrl &= ~E1000_GCR_CMPL_TMOUT_RESEND; + igb_write32(igb, E1000_GCR, ctrl); /* Configure PHY internal loopback for testing. */ if (igb_setup_loopback(igb)) return; /* Configure TX and RX descriptor rings */ - igb_write32(igb, IGB_TDBAL0, (u32)iova_tx); - igb_write32(igb, IGB_TDBAH0, (u32)(iova_tx >> 32)); - igb_write32(igb, IGB_TDLEN0, RING_SIZE * sizeof(struct igb_tx_desc)); - igb_write32(igb, IGB_TDH0, 0); - igb_write32(igb, IGB_TDT0, 0); - igb_write32(igb, IGB_TXDCTL0, IGB_TXDCTL0_Q_EN); - - igb_write32(igb, IGB_RDBAL0, (u32)iova_rx); - igb_write32(igb, IGB_RDBAH0, (u32)(iova_rx >> 32)); - igb_write32(igb, IGB_RDLEN0, RING_SIZE * sizeof(struct igb_rx_desc)); - igb_write32(igb, IGB_RDH0, 0); - igb_write32(igb, IGB_RDT0, 0); + igb_write32(igb, E1000_TDBAL(0), (u32)iova_tx); + igb_write32(igb, E1000_TDBAH(0), (u32)(iova_tx >> 32)); + igb_write32(igb, E1000_TDLEN(0), RING_SIZE * sizeof(struct igb_tx_desc)); + igb_write32(igb, E1000_TDH(0), 0); + igb_write32(igb, E1000_TDT(0), 0); + igb_write32(igb, E1000_TXDCTL(0), E1000_TXDCTL_QUEUE_ENABLE); + + igb_write32(igb, E1000_RDBAL(0), (u32)iova_rx); + igb_write32(igb, E1000_RDBAH(0), (u32)(iova_rx >> 32)); + igb_write32(igb, E1000_RDLEN(0), RING_SIZE * sizeof(struct igb_rx_desc)); + igb_write32(igb, E1000_RDH(0), 0); + igb_write32(igb, E1000_RDT(0), 0); /* * Select the advanced one-buffer descriptor format. Per 82576 @@ -244,15 +248,15 @@ static void igb_hw_init(struct vfio_pci_device *device) * writeback layout (section 7.1.5.2), so polling rx.wb.status_error * requires this format. Section 8.10.2 specifies DESCTYPE[27:25]. */ - igb_write32(igb, IGB_SRRCTL0, IGB_SRRCTL_DESCTYPE_ADV_ONEBUF); + igb_write32(igb, E1000_SRRCTL(0), E1000_SRRCTL_DESCTYPE_ADV_ONEBUF); - igb_write32(igb, IGB_RXDCTL0, IGB_RXDCTL0_Q_EN); + igb_write32(igb, E1000_RXDCTL(0), E1000_RXDCTL_QUEUE_ENABLE); /* Wait for TX and RX queues to be enabled */ retries = 2000; while (retries-- > 0) { - if ((igb_read32(igb, IGB_TXDCTL0) & IGB_TXDCTL0_Q_EN) && - (igb_read32(igb, IGB_RXDCTL0) & IGB_RXDCTL0_Q_EN)) + if ((igb_read32(igb, E1000_TXDCTL(0)) & E1000_TXDCTL_QUEUE_ENABLE) && + (igb_read32(igb, E1000_RXDCTL(0)) & E1000_RXDCTL_QUEUE_ENABLE)) break; usleep(10); } @@ -270,13 +274,12 @@ static void igb_hw_init(struct vfio_pci_device *device) * selftest work on both real hardware and QEMU without conditional * code paths. */ - rctl = IGB_RCTL_EN | /* Receiver Enable */ - IGB_RCTL_UPE | /* Unicast Promiscuous (for dummy MAC) */ - IGB_RCTL_LBM_MAC | /* MAC Loopback - for QEMU emulation only */ - IGB_RCTL_SECRC; /* Strip CRC (needed for memcmp) */ - igb_write32(igb, IGB_RCTL, rctl); - igb_write32(igb, IGB_TCTL, IGB_TCTL_EN); - + rctl = E1000_RCTL_EN | /* Receiver Enable */ + E1000_RCTL_UPE | /* Unicast Promiscuous (for dummy MAC) */ + E1000_RCTL_LBM_MAC | /* MAC Loopback - for QEMU emulation only */ + E1000_RCTL_SECRC; /* Strip CRC (needed for memcmp) */ + igb_write32(igb, E1000_RCTL, rctl); + igb_write32(igb, E1000_TCTL, E1000_TCTL_EN); /* * Program MSI-X interrupt routing per 82576 datasheet: * @@ -297,15 +300,15 @@ static void igb_hw_init(struct vfio_pci_device *device) * IVAR (section 7.3.1.2, register definition in 8.8.13): map RX * cause 0 to MSI-X vector 0 and mark the entry valid. */ - igb_write32(igb, IGB_GPIE, IGB_GPIE_MULTIPLE_MSIX | IGB_GPIE_EIAME); - igb_write32(igb, IGB_EIAC, IGB_EICR_VEC0); - igb_write32(igb, IGB_EIAM, IGB_EICR_VEC0); + igb_write32(igb, E1000_GPIE, E1000_GPIE_MSIX_MODE | E1000_GPIE_EIAME); + igb_write32(igb, E1000_EIAC, E1000_EICR_RX_QUEUE0); + igb_write32(igb, E1000_EIAM, E1000_EICR_RX_QUEUE0); /* Enable interrupts on vector 0 */ - igb_write32(igb, IGB_EIMS, IGB_EICR_VEC0); + igb_write32(igb, E1000_EIMS, E1000_EICR_RX_QUEUE0); /* Map vector 0 to interrupt cause 0 and mark it valid */ - igb_write32(igb, IGB_IVAR0, IGB_IVAR_VALID); + igb_write32(igb, E1000_IVAR0, E1000_IVAR_VALID); /* Initialize driver state and capability limits */ igb->tx_tail = 0; @@ -316,6 +319,7 @@ static void igb_hw_init(struct vfio_pci_device *device) device->driver.msi = MSIX_VECTOR; } + static void igb_init(struct vfio_pci_device *device) { struct igb *igb = to_igb_state(device); @@ -325,9 +329,9 @@ static void igb_init(struct vfio_pci_device *device) igb->bar0 = device->bars[0].vaddr; /* Reset device and disable all interrupts. */ - igb_write32(igb, IGB_CTRL, igb_read32(igb, IGB_CTRL) | IGB_CTRL_RST); + igb_write32(igb, E1000_CTRL, igb_read32(igb, E1000_CTRL) | E1000_CTRL_RST); usleep(20000); - igb_write32(igb, IGB_IMC, 0xFFFFFFFF); + igb_write32(igb, E1000_IMC, 0xFFFFFFFF); /* * Enable MSI-X via VFIO before device-side register programming. @@ -341,24 +345,26 @@ static void igb_init(struct vfio_pci_device *device) igb_hw_init(device); } + + static void igb_remove(struct vfio_pci_device *device) { struct igb *igb = to_igb_state(device); vfio_pci_msix_disable(device); - igb_write32(igb, IGB_RCTL, 0); - igb_write32(igb, IGB_TCTL, 0); - igb_write32(igb, IGB_CTRL, igb_read32(igb, IGB_CTRL) | IGB_CTRL_RST); + igb_write32(igb, E1000_RCTL, 0); + igb_write32(igb, E1000_TCTL, 0); + igb_write32(igb, E1000_CTRL, igb_read32(igb, E1000_CTRL) | E1000_CTRL_RST); } static void igb_irq_disable(struct igb *igb) { - igb_write32(igb, IGB_EIMC, IGB_EICR_VEC0); + igb_write32(igb, E1000_EIMC, E1000_EICR_RX_QUEUE0); } static void igb_irq_enable(struct igb *igb) { - igb_write32(igb, IGB_EIMS, IGB_EICR_VEC0); + igb_write32(igb, E1000_EIMS, E1000_EICR_RX_QUEUE0); } static void igb_irq_clear(struct igb *igb) @@ -370,7 +376,7 @@ static void igb_irq_clear(struct igb *igb) * the read-to-clear path in 7.3.4.3. Bits not in EIAC are still * cleared by writing 1. */ - igb_write32(igb, IGB_EICR, 0xFFFFFFFF); + igb_write32(igb, E1000_EICR, 0xFFFFFFFF); } static void igb_memcpy_start(struct vfio_pci_device *device, iova_t src, @@ -404,23 +410,23 @@ static void igb_memcpy_start(struct vfio_pci_device *device, iova_t src, * in bits 15:0 of cmd_type_len. */ tx->read.cmd_type_len = (uint32_t)size | - IGB_ADVTXD_DTYP_DATA | - IGB_ADVTXD_DCMD_DEXT | - IGB_ADVTXD_DCMD_IFCS | - IGB_ADVTXD_DCMD_EOP; + E1000_ADVTXD_DTYP_DATA | + E1000_ADVTXD_DCMD_DEXT | + E1000_ADVTXD_DCMD_IFCS | + E1000_ADVTXD_DCMD_EOP; /* * PAYLEN (section 7.2.2.3.11) is the total payload size * in olinfo_status[31:14]. */ tx->read.olinfo_status = - (uint32_t)size << IGB_ADVTXD_PAYLEN_SHIFT; + (uint32_t)size << E1000_ADVTXD_PAYLEN_SHIFT; igb->tx_tail = (igb->tx_tail + 1) % RING_SIZE; igb->rx_tail = (igb->rx_tail + 1) % RING_SIZE; } - igb_write32(igb, IGB_RDT0, igb->rx_tail); - igb_write32(igb, IGB_TDT0, igb->tx_tail); + igb_write32(igb, E1000_RDT(0), igb->rx_tail); + igb_write32(igb, E1000_TDT(0), igb->tx_tail); } /* @@ -474,7 +480,6 @@ static int igb_memcpy_wait(struct vfio_pci_device *device) } igb_irq_clear(igb); - igb_irq_enable(igb); if (rx->wb.status_error & 1) @@ -505,7 +510,7 @@ static void igb_send_msi(struct vfio_pci_device *device) { struct igb *igb = to_igb_state(device); - igb_write32(igb, IGB_EICS, 1); + igb_write32(igb, E1000_EICS, 1); } const struct vfio_pci_driver_ops igb_ops = { diff --git a/tools/testing/selftests/vfio/lib/drivers/igb/registers.h b/tools/testing/selftests/vfio/lib/drivers/igb/registers.h deleted file mode 100644 index 3f04bcaa44ba..000000000000 --- a/tools/testing/selftests/vfio/lib/drivers/igb/registers.h +++ /dev/null @@ -1,127 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ - -#ifndef _IGB_REGISTERS_H_ -#define _IGB_REGISTERS_H_ - -#include <linux/bits.h> - -/* Register Offsets (Intel 82576EB Datasheet) */ -#define IGB_CTRL 0x00000 /* Device Control */ -#define IGB_STATUS 0x00008 /* Device Status */ -#define IGB_CTRL_EXT 0x00018 /* Extended Device Control */ -#define IGB_MDIC 0x00020 /* MDI Control */ -#define IGB_RCTL 0x00100 /* Receive Control */ -#define IGB_TCTL 0x00400 /* Transmit Control */ -#define IGB_SCTL 0x00420 /* SerDes Control */ - -/* Interrupt Registers */ -#define IGB_IMC 0x0150C /* Interrupt Mask Clear */ -#define IGB_IVAR0 0x01700 /* Interrupt Vector Allocation Register 0 */ - -/* Rx Ring 0 Registers */ -#define IGB_RDBAL0 0x0C000 /* Rx Desc Base Address Low */ -#define IGB_RDBAH0 0x0C004 /* Rx Desc Base Address High */ -#define IGB_RDLEN0 0x0C008 /* Rx Desc Length */ -#define IGB_SRRCTL0 0x0C00C /* Split and Replication Receive Control Q0 */ -#define IGB_RDH0 0x0C010 /* Rx Desc Head */ -#define IGB_RDT0 0x0C018 /* Rx Desc Tail */ -#define IGB_RXDCTL0 0x0C028 /* Rx Desc Control */ - -/* SRRCTL fields per 82576 datasheet section 8.10.2 */ -#define IGB_SRRCTL_DESCTYPE_ADV_ONEBUF (1u << 25) /* 001b: advanced one-buffer */ - -/* Tx Ring 0 Registers */ -#define IGB_TDBAL0 0x0E000 /* Tx Desc Base Address Low */ -#define IGB_TDBAH0 0x0E004 /* Tx Desc Base Address High */ -#define IGB_TDLEN0 0x0E008 /* Tx Desc Length */ -#define IGB_TDH0 0x0E010 /* Tx Desc Head */ -#define IGB_TDT0 0x0E018 /* Tx Desc Tail */ -#define IGB_TXDCTL0 0x0E028 /* Tx Desc Control */ - -/* Control Bit Definitions */ -/* CTRL */ -#define IGB_CTRL_FD (1 << 0) /* Full Duplex */ -#define IGB_CTRL_SLU (1 << 6) /* Set Link Up */ -#define IGB_CTRL_SPD_SEL (3 << 8) /* Speed Select Mask */ -#define IGB_CTRL_SPD_1000 (2 << 8) /* Force 1000 Mb/s */ -#define IGB_CTRL_FRCSPD (1 << 11) /* Force Speed */ -#define IGB_CTRL_FRCDPX (1 << 12) /* Force Duplex */ -#define IGB_CTRL_RST (1 << 26) /* Device Reset */ -#define IGB_CTRL_EXT_LINK_MODE_MASK (3 << 22) - -/* CTRL_EXT */ -#define IGB_CTRL_EXT_DRV_LOAD (1 << 28) /* Driver Loaded */ - -/* RCTL */ -#define IGB_RCTL_EN (1 << 1) /* Receiver Enable */ -#define IGB_RCTL_UPE (1 << 3) /* Unicast Promiscuous Enabled */ -#define IGB_RCTL_LPE (1 << 5) /* Long Packet Reception Enable */ -#define IGB_RCTL_LBM_MAC (1 << 6) /* Loopback Mode - MAC (set as QEMU-only accommodation) */ -#define IGB_RCTL_SECRC (1 << 26) /* Strip Ethernet CRC */ - -/* TCTL */ -#define IGB_TCTL_EN (1 << 1) /* Transmit Enable */ - -/* SCTL */ -#define IGB_SCTL_DISABLE_SERDES_LOOPBACK (1 << 6) - -/* MDIC */ -#define IGB_MDIC_OP_WRITE (1 << 26) -#define IGB_MDIC_OP_READ (2 << 26) - -#define IGB_EICR 0x01580 /* Extended Interrupt Cause Read */ - -#define IGB_RAH0 0x05404 /* Receive Address High 0 */ -#define IGB_VMOLR0 0x05AD0 /* VM Offload Layout Register 0 */ -#define IGB_GCR 0x05B00 /* PCIe Control */ -#define IGB_GCR_CMPL_TMOUT_RESEND BIT(16) /* Re-send on completion timeout */ - -#define IGB_VMOLR_LPE 0x00010000 /* Long Packet Enable */ -#define IGB_VMOLR_BAM 0x08000000 /* Broadcast Accept Mode */ -#define IGB_RAH_POOL_1 0x00040000 /* Pool 1 assignment */ - -#define IGB_EICS 0x01520 /* Extended Interrupt Cause Set */ -#define IGB_EIMS 0x01524 /* Extended Interrupt Mask Set */ -#define IGB_EIMC 0x01528 /* Extended Interrupt Mask Clear */ -#define IGB_EIAC 0x0152C /* Extended Interrupt Auto Clear */ -#define IGB_EIAM 0x01530 /* Extended Interrupt Auto Mask Enable */ -#define IGB_EICR_VEC0 BIT(0) /* MSI-X cause/vector 0 */ -#define IGB_CTRL_GIO_MASTER_DISABLE (1 << 2) /* GIO Master Disable */ -#define IGB_STATUS_GIO_MASTER_ENABLE (1 << 19) /* GIO Master Enable */ -#define IGB_GPIE 0x01514 /* General Purpose Interrupt Enable */ -/* GPIE fields per 82576 datasheet section 7.3.2.11, Table 7-47 */ -#define IGB_GPIE_MULTIPLE_MSIX BIT(4) /* Multi-vector MSI-X mode */ -#define IGB_GPIE_EIAME BIT(30) /* Apply EIAM on MSI-X assertion */ -#define IGB_TXDCTL0_Q_EN (1 << 25) /* Transmit Queue Enable */ -#define IGB_RXDCTL0_Q_EN (1 << 25) /* Receive Queue Enable */ -#define IGB_MRQC 0x05818 /* Multiple Receive Queues Command */ - -#define IGB_MDIC_PHY_SHIFT 21 /* PHY Address Shift */ -#define IGB_MDIC_REG_SHIFT 16 /* Register Address Shift */ -#define IGB_MDIC_READY (1 << 28) /* MDI Data Ready */ -#define IGB_MDIC_ERROR (1 << 29) /* MDI Error */ - -/* PHY register 0 (Control), per 82576 datasheet section 3.5.6.3.1 */ -#define IGB_PHY_CTRL_REG_OFFSET 0 -#define IGB_PHY_CTRL_AN_RESTART 0x0200 /* bit 9 */ -#define IGB_PHY_CTRL_AN_ENABLE 0x1000 /* bit 12 */ -#define IGB_PHY_CTRL_SPEED_1000 0x0040 /* bit 6 set, bit 13 clear */ -#define IGB_PHY_CTRL_FULL_DUPLEX 0x0100 /* bit 8 */ -#define IGB_PHY_CTRL_LOOPBACK 0x4000 /* bit 14 */ - -#define IGB_IVAR_VALID 0x80 /* Valid bit for IVAR register */ - -/* - * Advanced TX Data Descriptor fields per 82576 datasheet section 7.2.2.3. - * The cmd_type_len word holds: DTALEN[15:0], MAC[19:18], DTYP[23:20], - * DCMD[31:24]. The olinfo_status word holds: STA[3:0], IDX[6:4], - * POPTS[13:8], PAYLEN[31:14]. - */ -#define IGB_ADVTXD_DTYP_DATA (0x3u << 20) /* DTYP=0011b: advanced data */ -#define IGB_ADVTXD_DCMD_EOP (1u << 24) /* DCMD bit 0: End of Packet */ -#define IGB_ADVTXD_DCMD_IFCS (1u << 25) /* DCMD bit 1: Insert FCS */ -#define IGB_ADVTXD_DCMD_RS (1u << 27) /* DCMD bit 3: Report Status */ -#define IGB_ADVTXD_DCMD_DEXT (1u << 29) /* DCMD bit 5: 1b for advanced */ -#define IGB_ADVTXD_PAYLEN_SHIFT 14 /* PAYLEN bit position */ - -#endif /* _IGB_REGISTERS_H_ */ diff --git a/tools/testing/selftests/vfio/lib/libvfio.mk b/tools/testing/selftests/vfio/lib/libvfio.mk index 1f13cca04348..0075749e2f12 100644 --- a/tools/testing/selftests/vfio/lib/libvfio.mk +++ b/tools/testing/selftests/vfio/lib/libvfio.mk @@ -23,6 +23,7 @@ LIBVFIO_O_DIRS := $(shell dirname $(LIBVFIO_O) | uniq) $(shell mkdir -p $(LIBVFIO_O_DIRS)) CFLAGS += -I$(LIBVFIO_SRCDIR)/include +CFLAGS += -I$(top_srcdir)/drivers/net/ethernet/intel/igb $(LIBVFIO_O): $(LIBVFIO_OUTPUT)/%.o : $(LIBVFIO_SRCDIR)/%.c $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@ -- 2.54.0.794.g4f17f83d09-goog

