|
iPXE
|
Exablaze ExaNIC driver. More...
#include <stdint.h>#include <ipxe/pci.h>#include <ipxe/ethernet.h>#include <ipxe/retry.h>#include <ipxe/i2c.h>#include <ipxe/bitbash.h>Go to the source code of this file.
Data Structures | |
| struct | exanic_tx_descriptor |
| An ExaNIC transmit chunk descriptor. More... | |
| struct | exanic_tx_chunk |
| An ExaNIC transmit chunk. More... | |
| struct | exanic_rx_descriptor |
| An ExaNIC receive chunk descriptor. More... | |
| struct | exanic_rx_chunk |
| An ExaNIC receive chunk. More... | |
| struct | exanic_i2c_config |
| An ExaNIC I2C bus configuration. More... | |
| struct | exanic_port |
| An ExaNIC port. More... | |
| struct | exanic |
| An ExaNIC. More... | |
Macros | |
| #define | EXANIC_MAX_PORTS 8 |
| Maximum number of ports. More... | |
| #define | EXANIC_REGS_BAR PCI_BASE_ADDRESS_0 |
| Register BAR. More... | |
| #define | EXANIC_TX_BAR PCI_BASE_ADDRESS_2 |
| Transmit region BAR. More... | |
| #define | EXANIC_ALIGN 0x1000 |
| Alignment for DMA regions. More... | |
| #define | EXANIC_DMA_32_BIT 0x00000001UL |
| Flag for 32-bit DMA addresses. More... | |
| #define | EXANIC_REGS_LEN 0x2000 |
| Register set length. More... | |
| #define | EXANIC_TXF_LEN 0x1000 |
| Transmit feedback region length. More... | |
| #define | EXANIC_TXF_SLOT(index) ( 0x40 * (index) ) |
| Transmit feedback slot. More... | |
| #define | EXANIC_RX_LEN 0x200000 |
| Receive region length. More... | |
| #define | EXANIC_TXF_BASE 0x0014 |
| Transmit feedback base address register. More... | |
| #define | EXANIC_CAPS 0x0038 |
| Capabilities register. More... | |
| #define | EXANIC_CAPS_100M 0x01000000UL |
| 100Mbps supported More... | |
| #define | EXANIC_CAPS_1G 0x02000000UL |
| 1Gbps supported More... | |
| #define | EXANIC_CAPS_10G 0x04000000UL |
| 10Gbps supported More... | |
| #define | EXANIC_CAPS_40G 0x08000000UL |
| 40Gbps supported More... | |
| #define | EXANIC_CAPS_100G 0x10000000UL |
| 100Gbps supported More... | |
| #define | EXANIC_CAPS_SPEED_MASK 0x1f000000UL |
| Supported speeds mask. More... | |
| #define | EXANIC_I2C 0x012c |
| I2C GPIO register. More... | |
| #define | EXANIC_POWER 0x0138 |
| Power control register. More... | |
| #define | EXANIC_POWER_ON 0x000000f0UL |
| Power on PHYs. More... | |
| #define | EXANIC_PORT_REGS(index) ( 0x0200 + ( 0x40 * (index) ) ) |
| Port register offset. More... | |
| #define | EXANIC_PORT_ENABLE 0x0000 |
| Port enable register. More... | |
| #define | EXANIC_PORT_ENABLE_ENABLED 0x00000001UL |
| Port is enabled. More... | |
| #define | EXANIC_PORT_SPEED 0x0004 |
| Port speed register. More... | |
| #define | EXANIC_PORT_STATUS 0x0008 |
| Port status register. More... | |
| #define | EXANIC_PORT_STATUS_LINK 0x00000008UL |
| Link is up. More... | |
| #define | EXANIC_PORT_STATUS_ABSENT 0x80000000UL |
| Port is not present. More... | |
| #define | EXANIC_PORT_MAC 0x000c |
| Port MAC address (second half) register. More... | |
| #define | EXANIC_PORT_FLAGS 0x0010 |
| Port flags register. More... | |
| #define | EXANIC_PORT_FLAGS_PROMISC 0x00000001UL |
| Promiscuous mode. More... | |
| #define | EXANIC_PORT_RX_BASE 0x0014 |
| Port receive chunk base address register. More... | |
| #define | EXANIC_PORT_TX_COMMAND 0x0020 |
| Port transmit command register. More... | |
| #define | EXANIC_PORT_TX_OFFSET 0x0024 |
| Port transmit region offset register. More... | |
| #define | EXANIC_PORT_TX_LEN 0x0028 |
| Port transmit region length register. More... | |
| #define | EXANIC_PORT_OUI 0x0030 |
| Port MAC address (first half) register. More... | |
| #define | EXANIC_PORT_IRQ 0x0034 |
| Port interrupt configuration register. More... | |
| #define | EXANIC_TYPE_RAW 0x01 |
| Raw Ethernet frame type. More... | |
| #define | EXANIC_STATUS_ERROR_MASK 0x0f |
| Receive status error mask. More... | |
| #define | EXANIC_RX_COUNT ( EXANIC_RX_LEN / sizeof ( struct exanic_rx_chunk ) ) |
| Number of receive chunks. More... | |
| #define | EXANIC_EEPROM_ADDRESS 0x50 |
| EEPROM address. More... | |
| #define | EXANIC_MAX_TX_LEN ( 256 * sizeof ( struct exanic_tx_chunk ) ) |
| Maximum used length of transmit region. More... | |
| #define | EXANIC_MAX_RX_LEN ( ETH_FRAME_LEN + 4 /* VLAN */ + 4 /* CRC */ ) |
| Maximum length of received packet. More... | |
| #define | EXANIC_LINK_INTERVAL ( 1 * TICKS_PER_SEC ) |
| Interval between link state checks. More... | |
Functions | |
| FILE_LICENCE (GPL2_OR_LATER_OR_UBDL) | |
Exablaze ExaNIC driver.
Definition in file exanic.h.
| #define EXANIC_REGS_BAR PCI_BASE_ADDRESS_0 |
| #define EXANIC_TX_BAR PCI_BASE_ADDRESS_2 |
| #define EXANIC_DMA_32_BIT 0x00000001UL |
| #define EXANIC_TXF_LEN 0x1000 |
| #define EXANIC_TXF_SLOT | ( | index | ) | ( 0x40 * (index) ) |
| #define EXANIC_TXF_BASE 0x0014 |
| #define EXANIC_CAPS_SPEED_MASK 0x1f000000UL |
| #define EXANIC_PORT_REGS | ( | index | ) | ( 0x0200 + ( 0x40 * (index) ) ) |
| #define EXANIC_PORT_ENABLE_ENABLED 0x00000001UL |
| #define EXANIC_PORT_STATUS_ABSENT 0x80000000UL |
| #define EXANIC_PORT_MAC 0x000c |
| #define EXANIC_PORT_FLAGS_PROMISC 0x00000001UL |
| #define EXANIC_PORT_RX_BASE 0x0014 |
| #define EXANIC_PORT_TX_COMMAND 0x0020 |
| #define EXANIC_PORT_TX_OFFSET 0x0024 |
| #define EXANIC_PORT_TX_LEN 0x0028 |
| #define EXANIC_PORT_OUI 0x0030 |
| #define EXANIC_PORT_IRQ 0x0034 |
| #define EXANIC_STATUS_ERROR_MASK 0x0f |
| #define EXANIC_RX_COUNT ( EXANIC_RX_LEN / sizeof ( struct exanic_rx_chunk ) ) |
| #define EXANIC_MAX_TX_LEN ( 256 * sizeof ( struct exanic_tx_chunk ) ) |
| #define EXANIC_MAX_RX_LEN ( ETH_FRAME_LEN + 4 /* VLAN */ + 4 /* CRC */ ) |
| #define EXANIC_LINK_INTERVAL ( 1 * TICKS_PER_SEC ) |
| FILE_LICENCE | ( | GPL2_OR_LATER_OR_UBDL | ) |
1.8.15