Lines Matching +full:tx +full:- +full:device
1 .. SPDX-License-Identifier: GPL-2.0
13 The ENA device exposes a lightweight management interface with a
17 The driver supports a range of ENA devices, is link-speed independent
21 Some ENA devices support SR-IOV. This driver is used for both the
22 SR-IOV Physical Function (PF) and Virtual Function (VF) devices.
25 processing by providing multiple Tx/Rx queue pairs (the maximum number
26 is advertised by the device via the Admin Queue), a dedicated MSI-X
27 interrupt vector per Tx/Rx queue pair, adaptive interrupt moderation,
31 checksum offload. Receive-side scaling (RSS) is supported for multi-core
35 monitoring mechanisms such as watchdog, enabling the device and driver
39 Some of the ENA devices support a working mode called Low-latency
48 (admin) communication between the device and the
50 ena_eth_com.[ch] Tx/Rx data path.
54 ena_regs_defs.h Definition of ENA PCI memory-mapped (MMIO) registers.
58 ena_pci_id_tbl.h Supported device IDs.
66 - PCIe Configuration Space
67 - Device Registers
68 - Admin Queue (AQ) and Admin Completion Queue (ACQ)
69 - Asynchronous Event Notification Queue (AENQ)
71 ENA device MMIO Registers are accessed only during driver
72 initialization and are not used during further normal device
79 vendor-specific extensions. Most of the management operations are
84 - Create I/O submission queue
85 - Create I/O completion queue
86 - Destroy I/O submission queue
87 - Destroy I/O completion queue
88 - Get feature
89 - Set feature
90 - Configure AENQ
91 - Get statistics
96 The Asynchronous Event Notification Queue (AENQ) is a uni-directional
97 queue used by the ENA device to send to the driver events that cannot
110 Keep-Alive **X**
113 ACQ and AENQ share the same MSI-X vector.
115 Keep-Alive is a special mechanism that allows monitoring the device's health.
116 A Keep-Alive event is delivered by the device every second.
118 statistics. If the keep-alive events aren't delivered as expected the WD resets
119 the device and the driver.
124 I/O operations are based on Tx and Rx Submission Queues (Tx SQ and Rx
131 The ENA driver supports two Queue Operation modes for Tx SQs:
133 - **Regular mode:**
134 In this mode the Tx SQs reside in the host's memory. The ENA
135 device fetches the ENA Tx descriptors and packet data from host
138 - **Low Latency Queue (LLQ) mode or "push-mode":**
140 first 96 bytes of the packet directly to the ENA device memory
142 device. For this operation mode, the driver uses a dedicated PCI
143 device memory BAR, which is mapped with write-combine capability.
146 with the device upon initialization. If the ENA device does not
151 The driver supports multi-queue for both Tx and Rx. This has various
154 - Reduced CPU/thread/process contention on a given Ethernet interface.
155 - Cache miss rate on completion is reduced, particularly for data
157 - Increased process-level parallelism when handling received packets.
158 - Increased data cache hit rate, by steering kernel processing of
161 - In hardware interrupt re-direction.
166 The driver assigns a single MSI-X vector per queue pair (for both Tx
167 and Rx directions). The driver assigns an additional dedicated MSI-X vector
171 probes the adapter, and it is de-registered when the adapter is
173 interface of the adapter is opened, and it is de-registered when the
178 ena-mgmnt@pci:<PCI domain:bus:slot.function>
182 <interface name>-Tx-Rx-<queue index>
184 The ENA device operates in auto-mask and auto-clear interrupt
185 modes. That is, once MSI-X is delivered to the host, its Cause bit is
192 ENA driver and device can operate in conventional or adaptive interrupt
195 **In conventional mode** the driver instructs device to postpone interrupt
198 parameters are supported by the driver: ``tx-usecs``, ``rx-usecs``
227 The user can obtain ENA device and driver statistics using `ethtool`.
229 per-queue stats) from the device.
231 In addition the driver logs the stats to syslog upon device reset.
236 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ena-express.html#ena-express-monitor
242 negotiated with the device. The driver configures MTU using the
251 - IPv4 header checksum offload
252 - TCP/UDP over IPv4/IPv6 checksum offloads
257 - The ENA device supports RSS that allows flexible Rx traffic
259 - Toeplitz and CRC32 hash functions are supported.
260 - Different combinations of L2/L3/L4 fields can be configured as
262 - The driver configures RSS settings using the AQ SetFeature command
265 - If the NETIF_F_RXHASH flag is set, the 32-bit result of the hash
268 - The user can provide a hash key, hash function, and configure the
274 Tx section in DATA PATH
275 --
279 - Maps data buffers (``skb->data`` and frags).
280 - Populates ``ena_buf`` for the push buffer (if the driver and device are
282 - Prepares ENA bufs for the remaining frags.
283 - Allocates a new request ID from the empty ``req_id`` ring. The request
284 ID is the index of the packet in the Tx info. This is used for
285 out-of-order Tx completions.
286 - Adds the packet to the proper place in the Tx ring.
287 - Calls :code:`ena_com_prepare_tx()`, an ENA communication layer that converts
292 to the Device memory space (if in push mode).
294 - Writes a doorbell to the ENA device.
295 - When the ENA device finishes sending the packet, a completion
297 - The interrupt handler schedules NAPI.
298 - The :code:`ena_clean_tx_irq()` function is called. This function handles the
309 --
311 - When a packet is received from the ENA device.
312 - The interrupt handler schedules NAPI.
313 - The :code:`ena_clean_rx_irq()` function is called. This function calls
317 - :code:`ena_rx_skb()` checks packet length:
323 - In this way the original data buffer is not passed to the stack
330 - The new SKB is updated with the necessary information (protocol,
335 ------------------------
347 1. Driver allocates page-sized RX buffer and passes it to hardware
348 +----------------------+
350 +----------------------+
355 HW as an RX buffer of size 4KB - 300Bytes = 3796 Bytes
356 +----+--------------------+
358 +----+--------------------+