iPXE
|
Google Virtual Ethernet network driver. More...
#include <stdint.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <assert.h>
#include <byteswap.h>
#include <ipxe/netdevice.h>
#include <ipxe/ethernet.h>
#include <ipxe/if_ether.h>
#include <ipxe/iobuf.h>
#include <ipxe/dma.h>
#include <ipxe/pci.h>
#include <ipxe/fault.h>
#include "gve.h"
Go to the source code of this file.
Functions | |
FILE_LICENCE (GPL2_OR_LATER_OR_UBDL) | |
static int | gve_reset (struct gve_nic *gve) |
Reset hardware. More... | |
static int | gve_admin_alloc (struct gve_nic *gve) |
Allocate admin queue. More... | |
static void | gve_admin_free (struct gve_nic *gve) |
Free admin queue. More... | |
static void | gve_admin_enable (struct gve_nic *gve) |
Enable admin queue. More... | |
static union gve_admin_command * | gve_admin_command (struct gve_nic *gve) |
Get next available admin queue command slot. More... | |
static int | gve_admin_wait (struct gve_nic *gve) |
Wait for admin queue command to complete. More... | |
static int | gve_admin (struct gve_nic *gve) |
Issue admin queue command. More... | |
static int | gve_admin_simple (struct gve_nic *gve, unsigned int opcode, unsigned int id) |
Issue simple admin queue command. More... | |
static int | gve_describe (struct gve_nic *gve) |
Get device descriptor. More... | |
static int | gve_configure (struct gve_nic *gve) |
Configure device resources. More... | |
static int | gve_deconfigure (struct gve_nic *gve) |
Deconfigure device resources. More... | |
static int | gve_register (struct gve_nic *gve, struct gve_qpl *qpl) |
Register queue page list. More... | |
static int | gve_unregister (struct gve_nic *gve, struct gve_qpl *qpl) |
Unregister page list. More... | |
static void | gve_create_tx_param (struct gve_queue *queue, union gve_admin_command *cmd) |
Construct command to create transmit queue. More... | |
static void | gve_create_rx_param (struct gve_queue *queue, union gve_admin_command *cmd) |
Construct command to create receive queue. More... | |
static int | gve_create_queue (struct gve_nic *gve, struct gve_queue *queue) |
Create transmit or receive queue. More... | |
static int | gve_destroy_queue (struct gve_nic *gve, struct gve_queue *queue) |
Destroy transmit or receive queue. More... | |
static int | gve_alloc_shared (struct gve_nic *gve) |
Allocate shared queue resources. More... | |
static void | gve_free_shared (struct gve_nic *gve) |
Free shared queue resources. More... | |
static int | gve_alloc_qpl (struct gve_nic *gve, struct gve_qpl *qpl, uint32_t id, unsigned int buffers) |
Allocate queue page list. More... | |
static void | gve_free_qpl (struct gve_nic *nic __unused, struct gve_qpl *qpl) |
Free queue page list. More... | |
static size_t | gve_address (struct gve_queue *queue, unsigned int index) |
Get buffer address (within queue page list address space) More... | |
static userptr_t | gve_buffer (struct gve_queue *queue, unsigned int index) |
Get buffer address. More... | |
static unsigned int | gve_next (unsigned int seq) |
Calculate next receive sequence number. More... | |
static int | gve_alloc_queue (struct gve_nic *gve, struct gve_queue *queue) |
Allocate descriptor queue. More... | |
static void | gve_free_queue (struct gve_nic *gve, struct gve_queue *queue) |
Free descriptor queue. More... | |
static int | gve_start (struct gve_nic *gve) |
Start up device. More... | |
static void | gve_stop (struct gve_nic *gve) |
Stop device. More... | |
static void | gve_startup (struct gve_nic *gve) |
Device startup process. More... | |
static void | gve_restart (struct gve_nic *gve) |
Trigger startup process. More... | |
static void | gve_watchdog (struct retry_timer *timer, int over __unused) |
Reset recovery watchdog. More... | |
static int | gve_open (struct net_device *netdev) |
Open network device. More... | |
static void | gve_close (struct net_device *netdev) |
Close network device. More... | |
static int | gve_transmit (struct net_device *netdev, struct io_buffer *iobuf) |
Transmit packet. More... | |
static void | gve_poll_tx (struct net_device *netdev) |
Poll for completed transmissions. More... | |
static void | gve_poll_rx (struct net_device *netdev) |
Poll for received packets. More... | |
static void | gve_refill_rx (struct net_device *netdev) |
Refill receive queue. More... | |
static void | gve_poll (struct net_device *netdev) |
Poll for completed and received packets. More... | |
static int | gve_setup (struct gve_nic *gve) |
Set up admin queue and get device description. More... | |
static int | gve_probe (struct pci_device *pci) |
Probe PCI device. More... | |
static void | gve_remove (struct pci_device *pci) |
Remove PCI device. More... | |
Variables | |
static struct net_device_operations | gve_operations |
GVE network device operations. More... | |
static const struct gve_queue_type | gve_tx_type |
Transmit descriptor queue type. More... | |
static const struct gve_queue_type | gve_rx_type |
Receive descriptor queue type. More... | |
static struct process_descriptor | gve_startup_desc |
Device startup process descriptor. More... | |
static struct pci_device_id | gve_nics [] |
GVE PCI device IDs. More... | |
struct pci_driver gve_driver | __pci_driver |
GVE PCI driver. More... | |
Google Virtual Ethernet network driver.
Definition in file gve.c.
#define EINFO_EIO_ADMIN_UNSET __einfo_uniqify ( EINFO_EIO, 0x00, "Uncompleted" ) |
#define EIO_ADMIN_UNSET __einfo_error ( EINFO_EIO_ADMIN_UNSET ) |
#define EINFO_EIO_ADMIN_ABORTED __einfo_uniqify ( EINFO_EIO, 0x10, "Aborted" ) |
#define EIO_ADMIN_ABORTED __einfo_error ( EINFO_EIO_ADMIN_ABORTED ) |
#define EINFO_EIO_ADMIN_EXISTS __einfo_uniqify ( EINFO_EIO, 0x11, "Already exists" ) |
#define EIO_ADMIN_EXISTS __einfo_error ( EINFO_EIO_ADMIN_EXISTS ) |
#define EINFO_EIO_ADMIN_CANCELLED __einfo_uniqify ( EINFO_EIO, 0x12, "Cancelled" ) |
#define EIO_ADMIN_CANCELLED __einfo_error ( EINFO_EIO_ADMIN_CANCELLED ) |
#define EINFO_EIO_ADMIN_DATALOSS __einfo_uniqify ( EINFO_EIO, 0x13, "Data loss" ) |
#define EIO_ADMIN_DATALOSS __einfo_error ( EINFO_EIO_ADMIN_DATALOSS ) |
#define EINFO_EIO_ADMIN_DEADLINE __einfo_uniqify ( EINFO_EIO, 0x14, "Deadline exceeded" ) |
#define EIO_ADMIN_DEADLINE __einfo_error ( EINFO_EIO_ADMIN_DEADLINE ) |
#define EINFO_EIO_ADMIN_PRECONDITION __einfo_uniqify ( EINFO_EIO, 0x15, "Failed precondition" ) |
#define EIO_ADMIN_PRECONDITION __einfo_error ( EINFO_EIO_ADMIN_PRECONDITION ) |
#define EINFO_EIO_ADMIN_INTERNAL __einfo_uniqify ( EINFO_EIO, 0x16, "Internal error" ) |
#define EIO_ADMIN_INTERNAL __einfo_error ( EINFO_EIO_ADMIN_INTERNAL ) |
#define EINFO_EIO_ADMIN_INVAL __einfo_uniqify ( EINFO_EIO, 0x17, "Invalid argument" ) |
#define EIO_ADMIN_INVAL __einfo_error ( EINFO_EIO_ADMIN_INVAL ) |
#define EINFO_EIO_ADMIN_NOT_FOUND __einfo_uniqify ( EINFO_EIO, 0x18, "Not found" ) |
#define EIO_ADMIN_NOT_FOUND __einfo_error ( EINFO_EIO_ADMIN_NOT_FOUND ) |
#define EINFO_EIO_ADMIN_RANGE __einfo_uniqify ( EINFO_EIO, 0x19, "Out of range" ) |
#define EIO_ADMIN_RANGE __einfo_error ( EINFO_EIO_ADMIN_RANGE ) |
#define EINFO_EIO_ADMIN_PERM __einfo_uniqify ( EINFO_EIO, 0x1a, "Permission denied" ) |
#define EIO_ADMIN_PERM __einfo_error ( EINFO_EIO_ADMIN_PERM ) |
#define EINFO_EIO_ADMIN_UNAUTH __einfo_uniqify ( EINFO_EIO, 0x1b, "Unauthenticated" ) |
#define EIO_ADMIN_UNAUTH __einfo_error ( EINFO_EIO_ADMIN_UNAUTH ) |
#define EINFO_EIO_ADMIN_RESOURCE __einfo_uniqify ( EINFO_EIO, 0x1c, "Resource exhausted" ) |
#define EIO_ADMIN_RESOURCE __einfo_error ( EINFO_EIO_ADMIN_RESOURCE ) |
#define EINFO_EIO_ADMIN_UNAVAIL __einfo_uniqify ( EINFO_EIO, 0x1d, "Unavailable" ) |
#define EIO_ADMIN_UNAVAIL __einfo_error ( EINFO_EIO_ADMIN_UNAVAIL ) |
#define EINFO_EIO_ADMIN_NOTSUP __einfo_uniqify ( EINFO_EIO, 0x1e, "Unimplemented" ) |
#define EIO_ADMIN_NOTSUP __einfo_error ( EINFO_EIO_ADMIN_NOTSUP ) |
#define EINFO_EIO_ADMIN_UNKNOWN __einfo_uniqify ( EINFO_EIO, 0x1f, "Unknown error" ) |
#define EIO_ADMIN_UNKNOWN __einfo_error ( EINFO_EIO_ADMIN_UNKNOWN ) |
#define EIO_ADMIN | ( | status | ) |
FILE_LICENCE | ( | GPL2_OR_LATER_OR_UBDL | ) |
|
static |
Reset hardware.
gve | GVE device |
rc | Return status code |
Definition at line 139 of file gve.c.
References bswap_32, gve_nic::cfg, DBGC, ETIMEDOUT, GVE_CFG_ADMIN_PFN, GVE_CFG_DEVSTAT, GVE_RESET_MAX_WAIT_MS, mdelay(), readl(), wmb(), and writel().
Referenced by gve_close(), gve_probe(), gve_remove(), gve_setup(), and gve_startup().
|
static |
Allocate admin queue.
gve | GVE device |
rc | Return status code |
Definition at line 191 of file gve.c.
References gve_nic::admin, gve_scratch::buf, gve_admin::cmd, DBGC, dma(), gve_nic::dma, dma_alloc(), dma_free(), ENOMEM, GVE_ADMIN_COUNT, GVE_ALIGN, gve_admin::map, gve_scratch::map, rc, gve_nic::scratch, and virt_to_phys().
Referenced by gve_probe().
|
static |
Free admin queue.
gve | GVE device |
Definition at line 232 of file gve.c.
References gve_nic::admin, gve_scratch::buf, gve_admin::cmd, dma_free(), GVE_ADMIN_COUNT, gve_admin::map, gve_scratch::map, and gve_nic::scratch.
Referenced by gve_probe(), and gve_remove().
|
static |
Enable admin queue.
gve | GVE device |
Definition at line 250 of file gve.c.
References gve_nic::admin, base, bswap_16, bswap_32, gve_nic::cfg, gve_admin::cmd, dma(), GVE_ADMIN_COUNT, GVE_CFG_ADMIN_BASE_HI, GVE_CFG_ADMIN_BASE_LO, GVE_CFG_ADMIN_LEN, GVE_CFG_ADMIN_PFN, GVE_CFG_DRVSTAT, GVE_CFG_DRVSTAT_RUN, GVE_PAGE_SIZE, gve_admin::map, gve_admin::prod, and writel().
Referenced by gve_setup(), and gve_startup().
|
static |
Get next available admin queue command slot.
gve | GVE device |
cmd | Admin queue command |
Definition at line 280 of file gve.c.
References gve_nic::admin, cmd, gve_admin::cmd, GVE_ADMIN_COUNT, index, memset(), and gve_admin::prod.
Referenced by gve_admin_simple(), gve_configure(), gve_create_queue(), gve_describe(), and gve_register().
|
static |
Wait for admin queue command to complete.
gve | GVE device |
rc | Return status code |
Definition at line 301 of file gve.c.
References gve_nic::admin, bswap_32, gve_nic::cfg, DBGC, ECONNRESET, ETIMEDOUT, GVE_ADMIN_MAX_WAIT_MS, GVE_CFG_ADMIN_EVT, GVE_CFG_ADMIN_PFN, GVE_CFG_DEVSTAT, mdelay(), gve_admin::prod, readl(), and rmb.
Referenced by gve_admin().
Issue admin queue command.
gve | GVE device |
rc | Return status code |
Definition at line 337 of file gve.c.
References gve_nic::admin, be32_to_cpu, bswap_32, gve_nic::cfg, cmd, gve_admin::cmd, DBGC, DBGC2, DBGC2_HDA, DBGC_HDA, EIO_ADMIN, GVE_ADMIN_COUNT, GVE_ADMIN_STATUS_OK, gve_admin_wait(), GVE_CFG_ADMIN_DB, index, opcode, gve_admin::prod, rc, status, strerror(), wmb(), and writel().
|
static |
Issue simple admin queue command.
gve | GVE device |
opcode | Operation code |
id | ID parameter (or zero if not applicable) |
rc | Return status code |
Several admin queue commands take either an empty parameter list or a single 32-bit ID parameter.
Definition at line 396 of file gve.c.
References cmd, cpu_to_be32, gve_admin_command(), opcode, and rc.
|
static |
Get device descriptor.
gve | GVE device |
rc | Return status code |
Definition at line 419 of file gve.c.
References be16_to_cpu, gve_scratch::buf, build_assert, cmd, gve_events::count, gve_queue::count, cpu_to_be32, cpu_to_be64, DBGC, DBGC2, DBGC2_HDA, desc, gve_scratch::desc, dma(), ETH_ALEN, ETH_HLEN, eth_ntoa(), gve_nic::events, gve_admin_command(), GVE_ADMIN_DESCRIBE, GVE_ADMIN_DESCRIBE_VER, net_device::hw_addr, inet_ntoa(), gve_scratch::map, net_device::max_pkt_len, memcpy(), net_device::mtu, netdev, gve_nic::netdev, rc, gve_nic::rx, gve_nic::scratch, and gve_nic::tx.
Referenced by gve_setup().
|
static |
Configure device resources.
gve | GVE device |
rc | Return status code |
Definition at line 463 of file gve.c.
References be32_to_cpu, bswap_32, cmd, gve_events::count, cpu_to_be32, cpu_to_be64, gve_irqs::db, gve_nic::db, gve_irq::db_idx, DBGC, dma(), gve_events::event, gve_nic::events, gve_admin_command(), GVE_ADMIN_CONFIGURE, GVE_IRQ_COUNT, GVE_IRQ_DISABLE, gve_irqs::irq, gve_nic::irqs, gve_events::map, gve_irqs::map, rc, and writel().
Referenced by gve_start().
|
static |
Deconfigure device resources.
gve | GVE device |
rc | Return status code |
Definition at line 504 of file gve.c.
References GVE_ADMIN_DECONFIGURE, and rc.
Referenced by gve_start(), and gve_stop().
Register queue page list.
gve | GVE device |
qpl | Queue page list |
rc | Return status code |
Definition at line 521 of file gve.c.
References addr, gve_pages::addr, gve_scratch::buf, cmd, gve_qpl::count, cpu_to_be32, cpu_to_be64, gve_qpl::data, dma(), dma_phys(), gve_admin_command(), GVE_ADMIN_REGISTER, GVE_PAGE_SIZE, gve_qpl::id, gve_scratch::map, gve_qpl::map, gve_scratch::pages, rc, gve_nic::scratch, and user_to_phys().
Referenced by gve_start().
Unregister page list.
gve | GVE device |
qpl | Queue page list |
rc | Return status code |
Definition at line 556 of file gve.c.
References GVE_ADMIN_UNREGISTER, gve_qpl::id, and rc.
Referenced by gve_start(), and gve_stop().
|
static |
Construct command to create transmit queue.
queue | Transmit queue |
cmd | Admin queue command |
Definition at line 574 of file gve.c.
References cmd, cpu_to_be32, cpu_to_be64, gve_queue_type::create, desc, dma(), dma_phys(), queue, type, and user_to_phys().
|
static |
Construct command to create receive queue.
queue | Receive queue |
cmd | Admin queue command |
Definition at line 593 of file gve.c.
References cmd, cpu_to_be16, cpu_to_be32, cpu_to_be64, gve_queue_type::create, desc, dma(), dma_phys(), GVE_BUF_SIZE, queue, type, and user_to_phys().
Create transmit or receive queue.
gve | GVE device |
queue | Descriptor queue |
rc | Return status code |
Definition at line 616 of file gve.c.
References assert(), be32_to_cpu, cmd, gve_nic::db, DBGC, gve_events::event, gve_nic::events, gve_admin_command(), queue, rc, and type.
Referenced by gve_start().
Destroy transmit or receive queue.
gve | GVE device |
queue | Descriptor queue |
rc | Return status code |
Definition at line 656 of file gve.c.
References queue, rc, and type.
Referenced by gve_start(), and gve_stop().
|
static |
Allocate shared queue resources.
gve | GVE device |
rc | Return status code |
Definition at line 680 of file gve.c.
References gve_events::count, DBGC, dma(), gve_nic::dma, dma_alloc(), dma_free(), ENOMEM, gve_events::event, gve_nic::events, GVE_ALIGN, GVE_IRQ_COUNT, gve_irqs::irq, gve_nic::irqs, gve_events::map, gve_irqs::map, rc, and virt_to_phys().
Referenced by gve_open().
|
static |
Free shared queue resources.
gve | GVE device |
Definition at line 722 of file gve.c.
References gve_events::count, dma_free(), gve_events::event, gve_nic::events, GVE_IRQ_COUNT, gve_irqs::irq, gve_nic::irqs, gve_events::map, and gve_irqs::map.
Referenced by gve_close(), and gve_open().
|
static |
Allocate queue page list.
gve | GVE device |
qpl | Queue page list |
id | Queue page list ID |
buffers | Number of data buffers |
rc | Return status code |
Definition at line 744 of file gve.c.
References assert(), build_assert, gve_qpl::count, gve_qpl::data, DBGC, gve_nic::dma, dma_umalloc(), ENOMEM, GVE_ALIGN, GVE_BUF_PER_PAGE, GVE_BUF_SIZE, GVE_PAGE_SIZE, GVE_QPL_MAX, id, gve_qpl::id, len, gve_qpl::map, and user_to_phys().
Referenced by gve_alloc_queue().
Free queue page list.
gve | GVE device |
qpl | Queue page list |
Definition at line 774 of file gve.c.
References gve_qpl::count, gve_qpl::data, dma_ufree(), GVE_PAGE_SIZE, len, and gve_qpl::map.
Referenced by gve_alloc_queue(), and gve_free_queue().
Get buffer address (within queue page list address space)
queue | Descriptor queue |
index | Buffer index |
addr | Buffer address within queue page list address space |
Definition at line 790 of file gve.c.
References GVE_BUF_SIZE, index, and queue.
Referenced by gve_alloc_queue(), gve_buffer(), gve_poll_rx(), and gve_transmit().
|
inlinestatic |
Get buffer address.
queue | Descriptor queue |
index | Buffer index |
addr | Buffer address |
Definition at line 807 of file gve.c.
References gve_address(), index, queue, and userptr_add().
|
inlinestatic |
Calculate next receive sequence number.
seq | Current sequence number, or zero to start sequence |
next | Next sequence number |
Definition at line 820 of file gve.c.
References GVE_RX_SEQ_MASK, and seq.
Referenced by gve_poll_rx(), and gve_start().
Allocate descriptor queue.
gve | GVE device |
queue | Descriptor queue |
rc | Return status code |
Definition at line 845 of file gve.c.
References gve_buffer::addr, assert(), copy_to_user(), cpu_to_be64, DBGC, dma(), gve_nic::dma, dma_alloc(), dma_free(), dma_ufree(), dma_umalloc(), EINVAL, ENOMEM, gve_address(), GVE_ALIGN, gve_alloc_qpl(), gve_free_qpl(), memset(), offset, queue, rc, type, and user_to_phys().
Referenced by gve_open().
Free descriptor queue.
gve | GVE device |
queue | Descriptor queue |
Definition at line 939 of file gve.c.
References gve_queue_type::cmplt_len, gve_queue_type::desc_len, dma_free(), dma_ufree(), gve_free_qpl(), queue, and type.
Referenced by gve_close(), and gve_open().
|
static |
Start up device.
gve | GVE device |
rc | Return status code |
Definition at line 965 of file gve.c.
References ECANCELED, gve_configure(), gve_create_queue(), gve_deconfigure(), gve_destroy_queue(), gve_next(), gve_register(), gve_unregister(), memset_user(), netdev, gve_nic::netdev, netdev_tx_complete_err(), NULL, rc, rx, gve_nic::rx, gve_nic::seq, tx, gve_nic::tx, and gve_nic::tx_iobuf.
Referenced by gve_startup().
|
static |
Stop device.
gve | GVE device |
Definition at line 1028 of file gve.c.
References gve_deconfigure(), gve_destroy_queue(), gve_unregister(), rx, gve_nic::rx, tx, and gve_nic::tx.
Referenced by gve_close(), and gve_startup().
|
static |
Device startup process.
gve | GVE device |
Definition at line 1049 of file gve.c.
References DBGC, gve_admin_enable(), gve_reset(), GVE_RESET_MAX_RETRY, gve_start(), gve_stop(), netdev, gve_nic::netdev, netdev_link_err(), netdev_link_up(), process_add(), rc, gve_nic::retries, gve_nic::startup, and strerror().
|
static |
Trigger startup process.
gve | GVE device |
Definition at line 1086 of file gve.c.
References netdev, gve_nic::netdev, netdev_link_down(), process_add(), and gve_nic::startup.
Referenced by gve_open(), and gve_watchdog().
|
static |
Reset recovery watchdog.
timer | Reset recovery watchdog timer |
over | Failure indicator |
Definition at line 1102 of file gve.c.
References gve_nic::activity, gve_nic::cfg, gve_queue::cons, container_of, DBGC, DBGC2, GVE_CFG_ADMIN_PFN, gve_restart(), GVE_WATCHDOG_TIMEOUT, rc, readl(), gve_nic::rx, start_timer_fixed(), gve_nic::tx, VM_MIGRATED_RATE, gve_nic::watchdog, and writel().
Referenced by gve_probe().
|
static |
Open network device.
netdev | Network device |
rc | Return status code |
Definition at line 1142 of file gve.c.
References gve_alloc_queue(), gve_alloc_shared(), gve_free_queue(), gve_free_shared(), gve_restart(), GVE_WATCHDOG_TIMEOUT, netdev, net_device::priv, rc, rx, gve_nic::rx, start_timer_fixed(), tx, gve_nic::tx, and gve_nic::watchdog.
|
static |
Close network device.
netdev | Network device |
Definition at line 1182 of file gve.c.
References gve_free_queue(), gve_free_shared(), gve_reset(), gve_stop(), netdev, net_device::priv, process_del(), rx, gve_nic::rx, gve_nic::startup, stop_timer(), tx, gve_nic::tx, and gve_nic::watchdog.
|
static |
Transmit packet.
netdev | Network device |
iobuf | I/O buffer |
rc | Return status code |
Definition at line 1212 of file gve.c.
References assert(), be16_to_cpu, bswap_32, copy_to_user(), count, cpu_to_be16, io_buffer::data, DBGC2, desc, ENETDOWN, gve_address(), GVE_BUF_SIZE, GVE_TX_FILL, GVE_TX_TYPE_CONT, GVE_TX_TYPE_START, index, iob_len(), len, memset(), netdev, netdev_link_ok(), netdev_tx_defer(), NULL, offset, net_device::priv, tx, gve_nic::tx, gve_nic::tx_iobuf, wmb(), and writel().
|
static |
Poll for completed transmissions.
netdev | Network device |
Definition at line 1283 of file gve.c.
References be32_to_cpu, count, DBGC2, GVE_TX_FILL, netdev, netdev_tx_complete(), NULL, net_device::priv, tx, gve_nic::tx, and gve_nic::tx_iobuf.
Referenced by gve_poll().
|
static |
Poll for received packets.
netdev | Network device |
Definition at line 1308 of file gve.c.
References alloc_iob(), assert(), be16_to_cpu, cons, copy_from_user(), DBGC2, EIO, ENOMEM, gve_rx_packet::flags, gve_address(), gve_next(), GVE_RX_PAD, GVE_RX_SEQ_MASK, GVE_RXF_ERROR, GVE_RXF_MORE, index, iob_len(), iob_pull, iob_put, len, gve_rx_packet::len, netdev, netdev_rx(), netdev_rx_err(), NULL, offset, offsetof, gve_rx_completion::pkt, net_device::priv, rc, rx, gve_nic::rx, seq, gve_rx_packet::seq, gve_nic::seq, and typeof().
Referenced by gve_poll().
|
static |
Refill receive queue.
netdev | Network device |
Definition at line 1399 of file gve.c.
References bswap_32, DBGC2, netdev, net_device::priv, gve_queue::prod, rx, gve_nic::rx, and writel().
Referenced by gve_poll().
|
static |
Poll for completed and received packets.
netdev | Network device |
Definition at line 1423 of file gve.c.
References gve_poll_rx(), gve_poll_tx(), gve_refill_rx(), netdev, and netdev_link_ok().
|
static |
Set up admin queue and get device description.
gve | GVE device |
rc | Return status code |
Definition at line 1485 of file gve.c.
References DBGC, gve_admin_enable(), gve_describe(), gve_reset(), GVE_RESET_MAX_RETRY, rc, and strerror().
Referenced by gve_probe().
|
static |
Probe PCI device.
pci | PCI device |
rc | Return status code |
Definition at line 1524 of file gve.c.
References adjust_pci_device(), alloc_etherdev(), assert(), gve_nic::cfg, gve_nic::db, DBGC, pci_device::dev, net_device::dev, pci_device::dma, net_device::dma, gve_nic::dma, dma_set_mask_64bit(), ENODEV, ENOMEM, gve_admin_alloc(), gve_admin_free(), GVE_CFG_BAR, GVE_CFG_SIZE, GVE_DB_BAR, gve_operations, gve_reset(), gve_rx_type, gve_setup(), gve_startup_desc, gve_tx_type, gve_watchdog(), iounmap(), memset(), netdev, gve_nic::netdev, netdev_init(), netdev_nullify(), netdev_put(), NULL, pci_bar_size(), pci_bar_start(), pci_ioremap(), pci_read_config_byte(), PCI_REVISION, pci_set_drvdata(), net_device::priv, process_init_stopped(), rc, net_device::refcnt, register_netdev(), gve_nic::revision, gve_nic::rx, gve_nic::startup, gve_nic::tx, gve_queue::type, unregister_netdev(), and gve_nic::watchdog.
|
static |
Remove PCI device.
pci | PCI device |
Definition at line 1614 of file gve.c.
References gve_nic::cfg, gve_nic::db, gve_admin_free(), gve_reset(), iounmap(), netdev, netdev_nullify(), netdev_put(), pci_get_drvdata(), net_device::priv, and unregister_netdev().
|
static |
GVE network device operations.
Definition at line 1440 of file gve.c.
Referenced by gve_probe().
|
static |
Transmit descriptor queue type.
Definition at line 1455 of file gve.c.
Referenced by gve_probe().
|
static |
Receive descriptor queue type.
Definition at line 1467 of file gve.c.
Referenced by gve_probe().
|
static |
Device startup process descriptor.
Definition at line 1515 of file gve.c.
Referenced by gve_probe().
|
static |
struct pci_driver gve_driver __pci_driver |
GVE PCI driver.