Lines Matching +full:tx +full:- +full:buffer +full:- +full:descriptors
7 * SPDX-License-Identifier: Apache-2.0
22 #define ETH_XLNX_BUFFER_ALIGNMENT 4 /* RX/TX buffer alignment (in bytes) */
24 /* Buffer descriptor (BD) related defines */
26 /* Receive Buffer Descriptor bits & masks: comp. Zynq-7000 TRM, Table 16-2. */
29 * Receive Buffer Descriptor address word:
30 * [31 .. 02] Mask for effective buffer address -> excludes [1..0]
39 * Receive Buffer Descriptor control word:
47 * [23 .. 22] These bits have different semantics depending on whether RX check-
54 * [15] End-of-frame bit
55 * [14] Start-of-frame bit
78 /* Transmit Buffer Descriptor bits & masks: comp. Zynq-7000 TRM, Table 16-3. */
81 * Transmit Buffer Descriptor control word:
83 * [30] Wrap bit, last BD in TX BD ring
85 * [27] TX frame corruption due to AHB/AXI error, HRESP errors or buffers
86 * exhausted mid-frame
87 * [26] Late collision, TX error detected
90 * [15] Last buffer bit, indicates end of current TX frame
91 * [13 .. 00] Data length in the BD's associated buffer
116 * Zynq-7000 TX clock configuration:
129 * UltraScale TX clock configuration: comp.
130 * https://www.xilinx.com/html_docs/registers/ug1087/ug1087-zynq-ultrascale-registers.html
156 * TXSR = gem.tx_status TX Status register
218 * [06] Increment statistics registers - for testing purposes only
241 * [29] Disable rejection of non-standard preamble
252 * [15 .. 14] Receive buffer offset, # of bytes
253 * [13] Enable pause TX upon 802.3 pause frame reception
254 * [12] Retry test - for testing purposes only
263 * [02] Discard non-VLAN frames enable
302 * [23 .. 16] RX buffer size, n * 64 bytes
303 * [11] Enable/disable TCP|UDP/IP TX checksum offload
304 * [10] TX buffer half/full memory size
305 * [09 .. 08] Receiver packet buffer memory size select
332 * [16] Auto-negotiation completed
336 * [12] Pause frame received with non-zero pause quantum
343 * [04] Transmit buffer underrun
344 * [03] Set 'used' bit in TX BD encountered
395 * [15 .. 00] 16-bit data word
447 (ETH_XLNX_BUFFER_ALIGNMENT-1)) & ~(ETH_XLNX_BUFFER_ALIGNMENT-1)),\
449 (ETH_XLNX_BUFFER_ALIGNMENT-1)) & ~(ETH_XLNX_BUFFER_ALIGNMENT-1)),\
477 /* Device run-time data declaration macro */
498 + (ETH_XLNX_BUFFER_ALIGNMENT - 1))\
499 & ~(ETH_XLNX_BUFFER_ALIGNMENT - 1))];\
503 + (ETH_XLNX_BUFFER_ALIGNMENT - 1))\
504 & ~(ETH_XLNX_BUFFER_ALIGNMENT - 1))];\
522 /* RX/TX BD Ring initialization macro */
524 if (dev_conf->base_addr == DT_REG_ADDR_BY_IDX(DT_INST(port, xlnx_gem), 0)) {\
525 dev_data->rxbd_ring.first_bd = &(eth_xlnx_gem##port##_dma_area.rx_bd[0]);\
526 dev_data->txbd_ring.first_bd = &(eth_xlnx_gem##port##_dma_area.tx_bd[0]);\
527 dev_data->first_rx_buffer = (uint8_t *)eth_xlnx_gem##port##_dma_area.rx_buffer;\
528 dev_data->first_tx_buffer = (uint8_t *)eth_xlnx_gem##port##_dma_area.tx_buffer;\
531 /* Top-level device initialization macro - bundles all of the above */
578 * cpu_1x clock (Zynq-7000) or the LPD LSBUS clock (UltraScale).
588 /* Dividers > 48 are only available in the Zynq-7000 */
597 * @brief DMA RX buffer size configuration enumeration type.
600 * DMA receive buffer size in AHB system memory. This is a configuration
619 /* The values of this enum are one-hot encoded */
628 * @brief DMA memory area buffer descriptor.
630 * An array of these descriptors for each RX and TX is used to
632 * points to the start of a RX or TX buffer within the DMA memory
633 * area, while the control word is used for buffer status exchange
637 /* TODO for Cortex-A53: 64-bit addressing */
639 /* Buffer physical address (absolute address) */
641 /* Buffer control word (different contents for RX and TX) */
646 * @brief DMA memory area buffer descriptor ring management structure.
648 * The DMA memory area buffer descriptor ring management structure
649 * is used to manage either the RX or TX buffer descriptor array
650 * (while the buffer descriptors are just an array from the software
652 * last descriptor's control word has a special last-in-ring bit set).
656 * or evaluated for the next RX/TX operation.
663 /* Index of the next BD to be used for TX */
665 /* Index of the next BD to be processed (both RX/TX) */
679 * to clock sources, is specific to either the Zynq-7000 or the
736 * @brief Run-time device configuration data structure.
739 * controller instance which is modifyable at run-time, such as