|
iPXE
|
Intel 10/100/1000 network card driver. More...
Go to the source code of this file.
Data Structures | |
| struct | intel_descriptor |
| A packet descriptor. More... | |
| union | intel_receive_address |
| Receive address. More... | |
| struct | intel_ring |
| An Intel descriptor ring. More... | |
| struct | intel_mailbox |
| An Intel virtual function mailbox. More... | |
| struct | intel_nic |
| An Intel network card. More... | |
Macros | |
| #define | INTEL_BAR_SIZE ( 128 * 1024 ) |
| Intel BAR size. | |
| #define | INTEL_DESC_FL_DTYP(dtyp) |
| Descriptor type. | |
| #define | INTEL_DESC_FL_DTYP_DATA INTEL_DESC_FL_DTYP ( 0x03 ) |
| #define | INTEL_DESC_CMD_DEXT 0x20 |
| Descriptor extension. | |
| #define | INTEL_DESC_CMD_RS 0x08 |
| Report status. | |
| #define | INTEL_DESC_CMD_IFCS 0x02 |
| Insert frame checksum (CRC) | |
| #define | INTEL_DESC_CMD_EOP 0x01 |
| End of packet. | |
| #define | INTEL_DESC_STATUS_DD 0x00000001UL |
| Descriptor done. | |
| #define | INTEL_DESC_STATUS_RXE 0x00000100UL |
| Receive error. | |
| #define | INTEL_DESC_STATUS_PAYLEN(len) |
| Payload length. | |
| #define | INTEL_CTRL 0x00000UL |
| Device Control Register. | |
| #define | INTEL_CTRL_LRST 0x00000008UL |
| Link reset. | |
| #define | INTEL_CTRL_ASDE 0x00000020UL |
| Auto-speed detection. | |
| #define | INTEL_CTRL_SLU 0x00000040UL |
| Set link up. | |
| #define | INTEL_CTRL_FRCSPD 0x00000800UL |
| Force speed. | |
| #define | INTEL_CTRL_FRCDPLX 0x00001000UL |
| Force duplex. | |
| #define | INTEL_CTRL_RST 0x04000000UL |
| Device reset. | |
| #define | INTEL_CTRL_PHY_RST 0x80000000UL |
| PHY reset. | |
| #define | INTEL_RESET_DELAY_MS 20 |
| Time to delay for device reset, in milliseconds. | |
| #define | INTEL_STATUS 0x00008UL |
| Device Status Register. | |
| #define | INTEL_STATUS_LU 0x00000002UL |
| Link up. | |
| #define | INTEL_EERD 0x00014UL |
| EEPROM Read Register. | |
| #define | INTEL_EERD_START 0x00000001UL |
| Start read. | |
| #define | INTEL_EERD_DONE_SMALL 0x00000010UL |
| Read done (small EERD) | |
| #define | INTEL_EERD_DONE_LARGE 0x00000002UL |
| Read done (large EERD) | |
| #define | INTEL_EERD_ADDR_SHIFT_SMALL 8 |
| Address shift (small) | |
| #define | INTEL_EERD_ADDR_SHIFT_LARGE 2 |
| Address shift (large) | |
| #define | INTEL_EERD_DATA(value) |
| Read data. | |
| #define | INTEL_EEPROM_MAX_WAIT_MS 100 |
| Maximum time to wait for EEPROM read, in milliseconds. | |
| #define | INTEL_EEPROM_WORD_LEN_LOG2 1 |
| EEPROM word length. | |
| #define | INTEL_EEPROM_MIN_SIZE_WORDS 64 |
| Minimum EEPROM size, in words. | |
| #define | INTEL_EEPROM_MAC 0x00 |
| Offset of MAC address within EEPROM. | |
| #define | INTEL_ICR 0x000c0UL |
| Interrupt Cause Read Register. | |
| #define | INTEL_IRQ_TXDW 0x00000001UL |
| Transmit descriptor done. | |
| #define | INTEL_IRQ_TXQE 0x00000002UL |
| Transmit queue empty. | |
| #define | INTEL_IRQ_LSC 0x00000004UL |
| Link status change. | |
| #define | INTEL_IRQ_RXDMT0 0x00000010UL |
| Receive queue low. | |
| #define | INTEL_IRQ_RXO 0x00000040UL |
| Receive overrun. | |
| #define | INTEL_IRQ_RXT0 0x00000080UL |
| Receive timer. | |
| #define | INTEL_IMS 0x000d0UL |
| Interrupt Mask Set/Read Register. | |
| #define | INTEL_IMC 0x000d8UL |
| Interrupt Mask Clear Register. | |
| #define | INTEL_RCTL 0x00100UL |
| Receive Control Register. | |
| #define | INTEL_RCTL_EN 0x00000002UL |
| Receive enable. | |
| #define | INTEL_RCTL_UPE 0x00000008UL |
| Unicast promiscuous mode. | |
| #define | INTEL_RCTL_MPE 0x00000010UL |
| Multicast promiscuous. | |
| #define | INTEL_RCTL_BAM 0x00008000UL |
| Broadcast accept mode. | |
| #define | INTEL_RCTL_BSIZE_BSEX(bsex, bsize) |
| Buffer size. | |
| #define | INTEL_RCTL_BSIZE_2048 INTEL_RCTL_BSIZE_BSEX ( 0, 0 ) |
| #define | INTEL_RCTL_BSIZE_BSEX_MASK INTEL_RCTL_BSIZE_BSEX ( 1, 3 ) |
| #define | INTEL_RCTL_SECRC 0x04000000UL |
| Strip CRC. | |
| #define | INTEL_TCTL 0x00400UL |
| Transmit Control Register. | |
| #define | INTEL_TCTL_EN 0x00000002UL |
| Transmit enable. | |
| #define | INTEL_TCTL_PSP 0x00000008UL |
| Pad short packets. | |
| #define | INTEL_TCTL_CT(x) |
| Collision threshold. | |
| #define | INTEL_TCTL_CT_DEFAULT INTEL_TCTL_CT ( 0x0f ) |
| #define | INTEL_TCTL_CT_MASK INTEL_TCTL_CT ( 0xff ) |
| #define | INTEL_TCTL_COLD(x) |
| Collision distance. | |
| #define | INTEL_TCTL_COLD_DEFAULT INTEL_TCTL_COLD ( 0x040 ) |
| #define | INTEL_TCTL_COLD_MASK INTEL_TCTL_COLD ( 0x3ff ) |
| #define | INTEL_PBA 0x01000UL |
| Packet Buffer Allocation. | |
| #define | INTEL_PBS 0x01008UL |
| Packet Buffer Size. | |
| #define | INTEL_RXPBS 0x02404UL |
| Receive packet buffer size. | |
| #define | INTEL_RXPBS_I210 0x000000a2UL |
| I210 power-up default. | |
| #define | INTEL_RD 0x02800UL |
| Receive Descriptor register block. | |
| #define | INTEL_NUM_RX_DESC 16 |
| Number of receive descriptors. | |
| #define | INTEL_RX_FILL 8 |
| Receive descriptor ring fill level. | |
| #define | INTEL_RX_MAX_LEN 2048 |
| Receive buffer length. | |
| #define | INTEL_TXPBS 0x03404UL |
| Transmit packet buffer size. | |
| #define | INTEL_TXPBS_I210 0x04000014UL |
| I210 power-up default. | |
| #define | INTEL_TD 0x03800UL |
| Transmit Descriptor register block. | |
| #define | INTEL_NUM_TX_DESC 16 |
| Number of transmit descriptors. | |
| #define | INTEL_TX_FILL ( INTEL_NUM_TX_DESC - 1 ) |
| Transmit descriptor ring maximum fill level. | |
| #define | INTEL_xDBAL 0x00 |
| Receive/Transmit Descriptor Base Address Low (offset) | |
| #define | INTEL_xDBAH 0x04 |
| Receive/Transmit Descriptor Base Address High (offset) | |
| #define | INTEL_xDLEN 0x08 |
| Receive/Transmit Descriptor Length (offset) | |
| #define | INTEL_xDH 0x10 |
| Receive/Transmit Descriptor Head (offset) | |
| #define | INTEL_xDT 0x18 |
| Receive/Transmit Descriptor Tail (offset) | |
| #define | INTEL_xDCTL 0x28 |
| Receive/Transmit Descriptor Control (offset) | |
| #define | INTEL_xDCTL_ENABLE 0x02000000UL |
| Queue enable. | |
| #define | INTEL_DISABLE_MAX_WAIT_MS 100 |
| Maximum time to wait for queue disable, in milliseconds. | |
| #define | INTEL_RAL0 0x05400UL |
| Receive Address Low. | |
| #define | INTEL_RAH0 0x05404UL |
| Receive Address High. | |
| #define | INTEL_RAH0_AV 0x80000000UL |
| Address valid. | |
| #define | INTEL_FEXTNVM11 0x05bbcUL |
| Future Extended NVM register 11. | |
| #define | INTEL_FEXTNVM11_WTF 0x00002000UL |
| Don't ask. | |
| #define | INTEL_I219 ( INTEL_NO_PHY_RST | INTEL_RST_HANG ) |
| The i219 has a seriously broken reset mechanism. | |
Enumerations | |
| enum | intel_flags { INTEL_PBS_ERRATA = 0x0001 , INTEL_VMWARE = 0x0002 , INTEL_NO_PHY_RST = 0x0004 , INTEL_NO_ASDE = 0x0008 , INTEL_RST_HANG = 0x0010 , INTEL_PBSIZE_RST = 0x0020 } |
| Driver flags. More... | |
Functions | |
| FILE_LICENCE (GPL2_OR_LATER_OR_UBDL) | |
| FILE_SECBOOT (PERMITTED) | |
| static void | intel_init_ring (struct intel_ring *ring, unsigned int count, unsigned int reg, void(*describe)(struct intel_descriptor *desc, physaddr_t addr, size_t len)) |
| Initialise descriptor ring. | |
| static void | intel_init_mbox (struct intel_mailbox *mbox, unsigned int ctrl, unsigned int mem) |
| Initialise mailbox. | |
| static void | intel_diag (struct intel_nic *intel) |
| Dump diagnostic information. | |
| void | intel_describe_tx (struct intel_descriptor *tx, physaddr_t addr, size_t len) |
| Populate transmit descriptor. | |
| void | intel_describe_tx_adv (struct intel_descriptor *tx, physaddr_t addr, size_t len) |
| Populate advanced transmit descriptor. | |
| void | intel_describe_rx (struct intel_descriptor *rx, physaddr_t addr, size_t len) |
| Populate receive descriptor. | |
| void | intel_reset_ring (struct intel_nic *intel, unsigned int reg) |
| Reset descriptor ring. | |
| int | intel_create_ring (struct intel_nic *intel, struct intel_ring *ring) |
| Create descriptor ring. | |
| void | intel_destroy_ring (struct intel_nic *intel, struct intel_ring *ring) |
| Destroy descriptor ring. | |
| void | intel_refill_rx (struct intel_nic *intel) |
| Refill receive descriptor ring. | |
| void | intel_empty_rx (struct intel_nic *intel) |
| Discard unused receive I/O buffers. | |
| int | intel_transmit (struct net_device *netdev, struct io_buffer *iobuf) |
| Transmit packet. | |
| void | intel_poll_tx (struct net_device *netdev) |
| Poll for completed packets. | |
| void | intel_poll_rx (struct net_device *netdev) |
| Poll for received packets. | |
Intel 10/100/1000 network card driver.
Definition in file intel.h.
| #define INTEL_BAR_SIZE ( 128 * 1024 ) |
Intel BAR size.
Definition at line 19 of file intel.h.
Referenced by intel_probe(), and intelx_probe().
| #define INTEL_DESC_FL_DTYP | ( | dtyp | ) |
| #define INTEL_DESC_FL_DTYP_DATA INTEL_DESC_FL_DTYP ( 0x03 ) |
Definition at line 37 of file intel.h.
Referenced by intel_describe_tx_adv().
| #define INTEL_DESC_CMD_DEXT 0x20 |
| #define INTEL_DESC_CMD_RS 0x08 |
Report status.
Definition at line 43 of file intel.h.
Referenced by intel_describe_tx(), and intel_describe_tx_adv().
| #define INTEL_DESC_CMD_IFCS 0x02 |
Insert frame checksum (CRC)
Definition at line 46 of file intel.h.
Referenced by intel_describe_tx(), and intel_describe_tx_adv().
| #define INTEL_DESC_CMD_EOP 0x01 |
End of packet.
Definition at line 49 of file intel.h.
Referenced by intel_describe_tx(), and intel_describe_tx_adv().
| #define INTEL_DESC_STATUS_DD 0x00000001UL |
Descriptor done.
Definition at line 52 of file intel.h.
Referenced by intel_poll_rx(), and intel_poll_tx().
| #define INTEL_DESC_STATUS_RXE 0x00000100UL |
| #define INTEL_DESC_STATUS_PAYLEN | ( | len | ) |
Payload length.
Definition at line 58 of file intel.h.
Referenced by intel_describe_tx_adv().
| #define INTEL_CTRL 0x00000UL |
| #define INTEL_CTRL_LRST 0x00000008UL |
| #define INTEL_CTRL_ASDE 0x00000020UL |
| #define INTEL_CTRL_SLU 0x00000040UL |
| #define INTEL_CTRL_FRCSPD 0x00000800UL |
| #define INTEL_CTRL_FRCDPLX 0x00001000UL |
| #define INTEL_CTRL_RST 0x04000000UL |
| #define INTEL_CTRL_PHY_RST 0x80000000UL |
| #define INTEL_RESET_DELAY_MS 20 |
Time to delay for device reset, in milliseconds.
Definition at line 71 of file intel.h.
Referenced by intel_reset().
| #define INTEL_STATUS 0x00008UL |
Device Status Register.
Definition at line 74 of file intel.h.
Referenced by intel_check_link(), and intel_reset().
| #define INTEL_STATUS_LU 0x00000002UL |
Link up.
Definition at line 75 of file intel.h.
Referenced by intel_check_link(), and intel_reset().
| #define INTEL_EERD 0x00014UL |
EEPROM Read Register.
Definition at line 78 of file intel.h.
Referenced by intel_init_eeprom(), and intel_read_eeprom().
| #define INTEL_EERD_START 0x00000001UL |
Start read.
Definition at line 79 of file intel.h.
Referenced by intel_init_eeprom(), and intel_read_eeprom().
| #define INTEL_EERD_DONE_SMALL 0x00000010UL |
| #define INTEL_EERD_DONE_LARGE 0x00000002UL |
| #define INTEL_EERD_ADDR_SHIFT_SMALL 8 |
| #define INTEL_EERD_ADDR_SHIFT_LARGE 2 |
| #define INTEL_EERD_DATA | ( | value | ) |
| #define INTEL_EEPROM_MAX_WAIT_MS 100 |
Maximum time to wait for EEPROM read, in milliseconds.
Definition at line 87 of file intel.h.
Referenced by intel_init_eeprom(), and intel_read_eeprom().
| #define INTEL_EEPROM_WORD_LEN_LOG2 1 |
| #define INTEL_EEPROM_MIN_SIZE_WORDS 64 |
Minimum EEPROM size, in words.
Definition at line 93 of file intel.h.
Referenced by intel_init_eeprom().
| #define INTEL_EEPROM_MAC 0x00 |
Offset of MAC address within EEPROM.
Definition at line 96 of file intel.h.
Referenced by intel_fetch_mac_eeprom().
| #define INTEL_ICR 0x000c0UL |
| #define INTEL_IRQ_TXDW 0x00000001UL |
Transmit descriptor done.
Definition at line 100 of file intel.h.
Referenced by intel_irq(), and intel_poll().
| #define INTEL_IRQ_TXQE 0x00000002UL |
| #define INTEL_IRQ_LSC 0x00000004UL |
Link status change.
Definition at line 102 of file intel.h.
Referenced by intel_irq(), and intel_poll().
| #define INTEL_IRQ_RXDMT0 0x00000010UL |
| #define INTEL_IRQ_RXO 0x00000040UL |
| #define INTEL_IRQ_RXT0 0x00000080UL |
Receive timer.
Definition at line 105 of file intel.h.
Referenced by intel_irq(), intel_open(), and intel_poll().
| #define INTEL_IMS 0x000d0UL |
Interrupt Mask Set/Read Register.
Definition at line 108 of file intel.h.
Referenced by intel_irq().
| #define INTEL_IMC 0x000d8UL |
| #define INTEL_RCTL 0x00100UL |
Receive Control Register.
Definition at line 114 of file intel.h.
Referenced by intel_close(), and intel_open().
| #define INTEL_RCTL_EN 0x00000002UL |
| #define INTEL_RCTL_UPE 0x00000008UL |
| #define INTEL_RCTL_MPE 0x00000010UL |
| #define INTEL_RCTL_BAM 0x00008000UL |
| #define INTEL_RCTL_BSIZE_BSEX | ( | bsex, | |
| bsize ) |
| #define INTEL_RCTL_BSIZE_2048 INTEL_RCTL_BSIZE_BSEX ( 0, 0 ) |
Definition at line 121 of file intel.h.
Referenced by intel_open().
| #define INTEL_RCTL_BSIZE_BSEX_MASK INTEL_RCTL_BSIZE_BSEX ( 1, 3 ) |
Definition at line 122 of file intel.h.
Referenced by intel_open().
| #define INTEL_RCTL_SECRC 0x04000000UL |
| #define INTEL_TCTL 0x00400UL |
Transmit Control Register.
Definition at line 126 of file intel.h.
Referenced by intel_close(), and intel_open().
| #define INTEL_TCTL_EN 0x00000002UL |
| #define INTEL_TCTL_PSP 0x00000008UL |
| #define INTEL_TCTL_CT_DEFAULT INTEL_TCTL_CT ( 0x0f ) |
Definition at line 130 of file intel.h.
Referenced by intel_open().
| #define INTEL_TCTL_CT_MASK INTEL_TCTL_CT ( 0xff ) |
Definition at line 131 of file intel.h.
Referenced by intel_open().
| #define INTEL_TCTL_COLD | ( | x | ) |
| #define INTEL_TCTL_COLD_DEFAULT INTEL_TCTL_COLD ( 0x040 ) |
Definition at line 133 of file intel.h.
Referenced by intel_open().
| #define INTEL_TCTL_COLD_MASK INTEL_TCTL_COLD ( 0x3ff ) |
Definition at line 134 of file intel.h.
Referenced by intel_open().
| #define INTEL_PBA 0x01000UL |
| #define INTEL_PBS 0x01008UL |
| #define INTEL_RXPBS 0x02404UL |
| #define INTEL_RXPBS_I210 0x000000a2UL |
| #define INTEL_RD 0x02800UL |
Receive Descriptor register block.
Definition at line 147 of file intel.h.
Referenced by intel_probe().
| #define INTEL_NUM_RX_DESC 16 |
Number of receive descriptors.
Minimum value is 8, since the descriptor ring length must be a multiple of 128.
Definition at line 154 of file intel.h.
Referenced by intel_empty_rx(), intel_poll_rx(), intel_probe(), intel_refill_rx(), intelx_probe(), and intelxvf_probe().
| #define INTEL_RX_FILL 8 |
Receive descriptor ring fill level.
Definition at line 157 of file intel.h.
Referenced by intel_refill_rx().
| #define INTEL_RX_MAX_LEN 2048 |
| #define INTEL_TXPBS 0x03404UL |
| #define INTEL_TXPBS_I210 0x04000014UL |
| #define INTEL_TD 0x03800UL |
Transmit Descriptor register block.
Definition at line 167 of file intel.h.
Referenced by intel_probe().
| #define INTEL_NUM_TX_DESC 16 |
Number of transmit descriptors.
Descriptor ring length must be a multiple of 16. ICH8/9/10 requires a minimum of 16 TX descriptors.
Definition at line 174 of file intel.h.
Referenced by intel_poll_tx(), intel_probe(), intel_transmit(), intelx_probe(), and intelxvf_probe().
| #define INTEL_TX_FILL ( INTEL_NUM_TX_DESC - 1 ) |
Transmit descriptor ring maximum fill level.
Definition at line 177 of file intel.h.
Referenced by intel_transmit().
| #define INTEL_xDBAL 0x00 |
Receive/Transmit Descriptor Base Address Low (offset)
Definition at line 180 of file intel.h.
Referenced by intel_create_ring(), and intel_reset_ring().
| #define INTEL_xDBAH 0x04 |
Receive/Transmit Descriptor Base Address High (offset)
Definition at line 183 of file intel.h.
Referenced by intel_create_ring(), and intel_reset_ring().
| #define INTEL_xDLEN 0x08 |
Receive/Transmit Descriptor Length (offset)
Definition at line 186 of file intel.h.
Referenced by intel_create_ring(), and intel_reset_ring().
| #define INTEL_xDH 0x10 |
Receive/Transmit Descriptor Head (offset)
Definition at line 189 of file intel.h.
Referenced by intel_create_ring(), intel_diag(), and intel_reset_ring().
| #define INTEL_xDT 0x18 |
Receive/Transmit Descriptor Tail (offset)
Definition at line 192 of file intel.h.
Referenced by intel_create_ring(), intel_diag(), intel_refill_rx(), intel_reset_ring(), and intel_transmit().
| #define INTEL_xDCTL 0x28 |
Receive/Transmit Descriptor Control (offset)
Definition at line 195 of file intel.h.
Referenced by intel_create_ring(), intel_disable_ring(), and intelxvf_open().
| #define INTEL_xDCTL_ENABLE 0x02000000UL |
Queue enable.
Definition at line 196 of file intel.h.
Referenced by intel_create_ring(), and intel_disable_ring().
| #define INTEL_DISABLE_MAX_WAIT_MS 100 |
Maximum time to wait for queue disable, in milliseconds.
Definition at line 199 of file intel.h.
Referenced by intel_disable_ring().
| #define INTEL_RAL0 0x05400UL |
Receive Address Low.
Definition at line 202 of file intel.h.
Referenced by intel_fetch_mac(), and intel_open().
| #define INTEL_RAH0 0x05404UL |
Receive Address High.
Definition at line 205 of file intel.h.
Referenced by intel_fetch_mac(), and intel_open().
| #define INTEL_RAH0_AV 0x80000000UL |
| #define INTEL_FEXTNVM11 0x05bbcUL |
Future Extended NVM register 11.
Definition at line 209 of file intel.h.
Referenced by intel_open().
| #define INTEL_FEXTNVM11_WTF 0x00002000UL |
| #define INTEL_I219 ( INTEL_NO_PHY_RST | INTEL_RST_HANG ) |
| enum intel_flags |
Driver flags.
Definition at line 320 of file intel.h.
| FILE_LICENCE | ( | GPL2_OR_LATER_OR_UBDL | ) |
| FILE_SECBOOT | ( | PERMITTED | ) |
|
inlinestatic |
Initialise descriptor ring.
| ring | Descriptor ring |
| count | Number of descriptors |
| reg | Descriptor register block |
| describe | Method to populate descriptor |
Definition at line 256 of file intel.h.
References addr, count, desc, intel_ring::desc, intel_ring::describe, intel_ring::len, len, intel_ring::reg, and reg.
Referenced by intel_probe(), intelx_probe(), and intelxvf_probe().
|
inlinestatic |
Initialise mailbox.
| mbox | Mailbox |
| ctrl | Mailbox control register |
| mem | Mailbox memory register base |
Definition at line 281 of file intel.h.
References ctrl.
Referenced by intelxvf_probe().
|
inlinestatic |
Dump diagnostic information.
| intel | Intel device |
Definition at line 343 of file intel.h.
References intel_ring::cons, DBGC, INTEL_xDH, INTEL_xDT, intel_ring::prod, readl, intel_ring::reg, intel_nic::regs, intel_nic::rx, and intel_nic::tx.
|
extern |
Populate transmit descriptor.
| tx | Transmit descriptor |
| addr | Data buffer address |
| len | Length of data |
Definition at line 396 of file intel.c.
References addr, cpu_to_le16, cpu_to_le64, INTEL_DESC_CMD_EOP, INTEL_DESC_CMD_IFCS, INTEL_DESC_CMD_RS, len, and tx.
Referenced by intel_probe(), and intelx_probe().
|
extern |
Populate advanced transmit descriptor.
| tx | Transmit descriptor |
| addr | Data buffer address |
| len | Length of data |
Definition at line 415 of file intel.c.
References addr, cpu_to_le16, cpu_to_le32, cpu_to_le64, INTEL_DESC_CMD_DEXT, INTEL_DESC_CMD_EOP, INTEL_DESC_CMD_IFCS, INTEL_DESC_CMD_RS, INTEL_DESC_FL_DTYP_DATA, INTEL_DESC_STATUS_PAYLEN, len, and tx.
Referenced by intelxvf_probe().
|
extern |
Populate receive descriptor.
| rx | Receive descriptor |
| addr | Data buffer address |
| len | Length of data |
Definition at line 434 of file intel.c.
References __unused, addr, cpu_to_le64, len, and rx.
Referenced by intel_probe(), intelx_probe(), and intelxvf_probe().
|
extern |
Reset descriptor ring.
| intel | Intel device |
| reg | Register block |
| rc | Return status code |
Definition at line 488 of file intel.c.
References intel_disable_ring(), INTEL_xDBAH, INTEL_xDBAL, INTEL_xDH, INTEL_xDLEN, INTEL_xDT, reg, intel_nic::regs, and writel.
Referenced by intel_destroy_ring(), and intelxvf_open().
|
extern |
Create descriptor ring.
| intel | Intel device |
| ring | Descriptor ring |
| rc | Return status code |
Definition at line 512 of file intel.c.
References address, DBGC, intel_ring::desc, dma(), intel_nic::dma, dma_alloc(), ENOMEM, INTEL_xDBAH, INTEL_xDBAL, INTEL_xDCTL, INTEL_xDCTL_ENABLE, INTEL_xDH, INTEL_xDLEN, INTEL_xDT, intel_ring::len, intel_ring::map, memset(), readl, intel_ring::reg, intel_nic::regs, and writel.
Referenced by intel_open(), intelx_open(), and intelxvf_open().
|
extern |
Destroy descriptor ring.
| intel | Intel device |
| ring | Descriptor ring |
Definition at line 564 of file intel.c.
References intel_ring::cons, intel_ring::desc, dma_free(), intel_reset_ring(), intel_ring::len, intel_ring::map, NULL, intel_ring::prod, and intel_ring::reg.
Referenced by intel_close(), intel_open(), intelx_close(), intelx_open(), intelxvf_close(), and intelxvf_open().
|
extern |
Refill receive descriptor ring.
| intel | Intel device |
Definition at line 581 of file intel.c.
References alloc_rx_iob(), assert, intel_ring::cons, io_buffer::data, DBGC2, intel_ring::desc, intel_ring::describe, intel_nic::dma, INTEL_NUM_RX_DESC, INTEL_RX_FILL, INTEL_RX_MAX_LEN, INTEL_xDT, iob_dma(), NULL, intel_ring::prod, profile_exclude(), profile_start(), profile_stop(), intel_ring::reg, intel_nic::regs, intel_nic::rx, rx, intel_nic::rx_iobuf, wmb, and writel.
Referenced by intel_open(), intel_poll(), intelx_open(), intelx_poll(), intelxvf_open(), and intelxvf_poll().
|
extern |
Discard unused receive I/O buffers.
| intel | Intel device |
Definition at line 631 of file intel.c.
References free_rx_iob(), INTEL_NUM_RX_DESC, NULL, and intel_nic::rx_iobuf.
Referenced by intel_close(), intelx_close(), and intelxvf_close().
|
extern |
Transmit packet.
| netdev | Network device |
| iobuf | I/O buffer |
| rc | Return status code |
Definition at line 753 of file intel.c.
References intel_ring::cons, io_buffer::data, DBGC, DBGC2, intel_ring::desc, intel_ring::describe, ENOBUFS, INTEL_NUM_TX_DESC, INTEL_TX_FILL, INTEL_xDT, iob_dma(), iob_len(), len, netdev, intel_ring::prod, profile_exclude(), profile_start(), profile_stop(), intel_ring::reg, intel_nic::regs, intel_nic::tx, tx, wmb, and writel.
|
extern |
Poll for completed packets.
| netdev | Network device |
Definition at line 792 of file intel.c.
References intel_ring::cons, cpu_to_le32, DBGC2, intel_ring::desc, INTEL_DESC_STATUS_DD, INTEL_NUM_TX_DESC, netdev, netdev_tx_complete_next(), intel_ring::prod, intel_nic::tx, and tx.
Referenced by intel_poll(), intelx_poll(), and intelxvf_poll().
|
extern |
Poll for received packets.
| netdev | Network device |
Definition at line 821 of file intel.c.
References intel_ring::cons, cpu_to_le32, DBGC, DBGC2, intel_ring::desc, EIO, INTEL_DESC_STATUS_DD, INTEL_DESC_STATUS_RXE, INTEL_NUM_RX_DESC, iob_put, le16_to_cpu, le32_to_cpu, len, netdev, netdev_rx(), netdev_rx_err(), NULL, intel_ring::prod, intel_nic::rx, rx, and intel_nic::rx_iobuf.
Referenced by intel_poll(), intelx_poll(), and intelxvf_poll().