iPXE
|
Exablaze ExaNIC driver. More...
#include <stdint.h>
#include <ipxe/pci.h>
#include <ipxe/ethernet.h>
#include <ipxe/uaccess.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_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_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 | ) |