xref: /linux/Documentation/networking/device_drivers/ethernet/freescale/dpaa2/ethernet-driver.rst (revision 4b4193256c8d3bc3a5397b5cd9494c2ad386317d)
190615f9fSIoana Ciornei.. SPDX-License-Identifier: GPL-2.0
290615f9fSIoana Ciornei.. include:: <isonum.txt>
390615f9fSIoana Ciornei
490615f9fSIoana Ciornei===============================
590615f9fSIoana CiorneiDPAA2 Ethernet driver
69425f00eSIoana Radulescu===============================
79425f00eSIoana Radulescu
890615f9fSIoana Ciornei:Copyright: |copy| 2017-2018 NXP
990615f9fSIoana Ciornei
109425f00eSIoana RadulescuThis file provides documentation for the Freescale DPAA2 Ethernet driver.
119425f00eSIoana Radulescu
129425f00eSIoana RadulescuSupported Platforms
139425f00eSIoana Radulescu===================
149425f00eSIoana RadulescuThis driver provides networking support for Freescale DPAA2 SoCs, e.g.
159425f00eSIoana RadulescuLS2080A, LS2088A, LS1088A.
169425f00eSIoana Radulescu
179425f00eSIoana Radulescu
189425f00eSIoana RadulescuArchitecture Overview
199425f00eSIoana Radulescu=====================
209425f00eSIoana RadulescuUnlike regular NICs, in the DPAA2 architecture there is no single hardware block
219425f00eSIoana Radulescurepresenting network interfaces; instead, several separate hardware resources
229425f00eSIoana Radulescuconcur to provide the networking functionality:
2390615f9fSIoana Ciornei
249425f00eSIoana Radulescu- network interfaces
259425f00eSIoana Radulescu- queues, channels
269425f00eSIoana Radulescu- buffer pools
279425f00eSIoana Radulescu- MAC/PHY
289425f00eSIoana Radulescu
299425f00eSIoana RadulescuAll hardware resources are allocated and configured through the Management
309425f00eSIoana RadulescuComplex (MC) portals. MC abstracts most of these resources as DPAA2 objects
319425f00eSIoana Radulescuand exposes ABIs through which they can be configured and controlled. A few
329425f00eSIoana Radulescuhardware resources, like queues, do not have a corresponding MC object and
339425f00eSIoana Radulescuare treated as internal resources of other objects.
349425f00eSIoana Radulescu
359425f00eSIoana RadulescuFor a more detailed description of the DPAA2 architecture and its object
36*132db935SJakub Kicinskiabstractions see
37*132db935SJakub Kicinski*Documentation/networking/device_drivers/ethernet/freescale/dpaa2/overview.rst*.
389425f00eSIoana Radulescu
399425f00eSIoana RadulescuEach Linux net device is built on top of a Datapath Network Interface (DPNI)
409425f00eSIoana Radulescuobject and uses Buffer Pools (DPBPs), I/O Portals (DPIOs) and Concentrators
419425f00eSIoana Radulescu(DPCONs).
429425f00eSIoana Radulescu
4390615f9fSIoana CiorneiConfiguration interface::
449425f00eSIoana Radulescu
459425f00eSIoana Radulescu                 -----------------------
469425f00eSIoana Radulescu                | DPAA2 Ethernet Driver |
479425f00eSIoana Radulescu                 -----------------------
489425f00eSIoana Radulescu                     .      .      .
499425f00eSIoana Radulescu                     .      .      .
509425f00eSIoana Radulescu             . . . . .      .      . . . . . .
519425f00eSIoana Radulescu             .              .                .
529425f00eSIoana Radulescu             .              .                .
539425f00eSIoana Radulescu         ----------     ----------      -----------
549425f00eSIoana Radulescu        | DPBP API |   | DPNI API |    | DPCON API |
559425f00eSIoana Radulescu         ----------     ----------      -----------
569425f00eSIoana Radulescu             .              .                .             software
5790615f9fSIoana Ciornei    =======  .  ==========  .  ============  .  ===================
589425f00eSIoana Radulescu             .              .                .             hardware
599425f00eSIoana Radulescu         ------------------------------------------
609425f00eSIoana Radulescu        |            MC hardware portals           |
619425f00eSIoana Radulescu         ------------------------------------------
629425f00eSIoana Radulescu             .              .                .
639425f00eSIoana Radulescu             .              .                .
649425f00eSIoana Radulescu          ------         ------            -------
659425f00eSIoana Radulescu         | DPBP |       | DPNI |          | DPCON |
669425f00eSIoana Radulescu          ------         ------            -------
679425f00eSIoana Radulescu
689425f00eSIoana RadulescuThe DPNIs are network interfaces without a direct one-on-one mapping to PHYs.
699425f00eSIoana RadulescuDPBPs represent hardware buffer pools. Packet I/O is performed in the context
709425f00eSIoana Radulescuof DPCON objects, using DPIO portals for managing and communicating with the
719425f00eSIoana Radulescuhardware resources.
729425f00eSIoana Radulescu
7390615f9fSIoana CiorneiDatapath (I/O) interface::
749425f00eSIoana Radulescu
759425f00eSIoana Radulescu         -----------------------------------------------
769425f00eSIoana Radulescu        |           DPAA2 Ethernet Driver               |
779425f00eSIoana Radulescu         -----------------------------------------------
789425f00eSIoana Radulescu          |          ^        ^         |            |
799425f00eSIoana Radulescu          |          |        |         |            |
809425f00eSIoana Radulescu   enqueue|   dequeue|   data |  dequeue|       seed |
819425f00eSIoana Radulescu    (Tx)  | (Rx, TxC)|  avail.|  request|     buffers|
829425f00eSIoana Radulescu          |          |  notify|         |            |
839425f00eSIoana Radulescu          |          |        |         |            |
849425f00eSIoana Radulescu          V          |        |         V            V
859425f00eSIoana Radulescu         -----------------------------------------------
869425f00eSIoana Radulescu        |                 DPIO Driver                   |
879425f00eSIoana Radulescu         -----------------------------------------------
889425f00eSIoana Radulescu          |          |        |         |            |          software
899425f00eSIoana Radulescu          |          |        |         |            |  ================
909425f00eSIoana Radulescu          |          |        |         |            |          hardware
919425f00eSIoana Radulescu         -----------------------------------------------
929425f00eSIoana Radulescu        |               I/O hardware portals            |
939425f00eSIoana Radulescu         -----------------------------------------------
949425f00eSIoana Radulescu          |          ^        ^         |            |
959425f00eSIoana Radulescu          |          |        |         |            |
969425f00eSIoana Radulescu          |          |        |         V            |
979425f00eSIoana Radulescu          V          |    ================           V
989425f00eSIoana Radulescu        ----------------------           |      -------------
999425f00eSIoana Radulescu queues  ----------------------          |     | Buffer pool |
1009425f00eSIoana Radulescu          ----------------------         |      -------------
1019425f00eSIoana Radulescu                   =======================
1029425f00eSIoana Radulescu                                Channel
1039425f00eSIoana Radulescu
1049425f00eSIoana RadulescuDatapath I/O (DPIO) portals provide enqueue and dequeue services, data
1059425f00eSIoana Radulescuavailability notifications and buffer pool management. DPIOs are shared between
1069425f00eSIoana Radulescuall DPAA2 objects (and implicitly all DPAA2 kernel drivers) that work with data
1079425f00eSIoana Radulescuframes, but must be affine to the CPUs for the purpose of traffic distribution.
1089425f00eSIoana Radulescu
1099425f00eSIoana RadulescuFrames are transmitted and received through hardware frame queues, which can be
1109425f00eSIoana Radulescugrouped in channels for the purpose of hardware scheduling. The Ethernet driver
1119425f00eSIoana Radulescuenqueues TX frames on egress queues and after transmission is complete a TX
1129425f00eSIoana Radulescuconfirmation frame is sent back to the CPU.
1139425f00eSIoana Radulescu
1149425f00eSIoana RadulescuWhen frames are available on ingress queues, a data availability notification
1159425f00eSIoana Radulescuis sent to the CPU; notifications are raised per channel, so even if multiple
1169425f00eSIoana Radulescuqueues in the same channel have available frames, only one notification is sent.
1179425f00eSIoana RadulescuAfter a channel fires a notification, is must be explicitly rearmed.
1189425f00eSIoana Radulescu
1199425f00eSIoana RadulescuEach network interface can have multiple Rx, Tx and confirmation queues affined
1209425f00eSIoana Radulescuto CPUs, and one channel (DPCON) for each CPU that services at least one queue.
1219425f00eSIoana RadulescuDPCONs are used to distribute ingress traffic to different CPUs via the cores'
1229425f00eSIoana Radulescuaffine DPIOs.
1239425f00eSIoana Radulescu
1249425f00eSIoana RadulescuThe role of hardware buffer pools is storage of ingress frame data. Each network
1259425f00eSIoana Radulescuinterface has a privately owned buffer pool which it seeds with kernel allocated
1269425f00eSIoana Radulescubuffers.
1279425f00eSIoana Radulescu
1289425f00eSIoana Radulescu
1299425f00eSIoana RadulescuDPNIs are decoupled from PHYs; a DPNI can be connected to a PHY through a DPMAC
1309425f00eSIoana Radulescuobject or to another DPNI through an internal link, but the connection is
1319425f00eSIoana Radulescumanaged by MC and completely transparent to the Ethernet driver.
1329425f00eSIoana Radulescu
13390615f9fSIoana Ciornei::
13490615f9fSIoana Ciornei
1359425f00eSIoana Radulescu     ---------     ---------     ---------
1369425f00eSIoana Radulescu    | eth if1 |   | eth if2 |   | eth ifn |
1379425f00eSIoana Radulescu     ---------     ---------     ---------
1389425f00eSIoana Radulescu          .           .          .
1399425f00eSIoana Radulescu          .           .          .
1409425f00eSIoana Radulescu          .           .          .
1419425f00eSIoana Radulescu         ---------------------------
1429425f00eSIoana Radulescu        |   DPAA2 Ethernet Driver   |
1439425f00eSIoana Radulescu         ---------------------------
1449425f00eSIoana Radulescu          .           .          .
1459425f00eSIoana Radulescu          .           .          .
1469425f00eSIoana Radulescu          .           .          .
1479425f00eSIoana Radulescu       ------      ------      ------            -------
1489425f00eSIoana Radulescu      | DPNI |    | DPNI |    | DPNI |          | DPMAC |----+
1499425f00eSIoana Radulescu       ------      ------      ------            -------     |
1509425f00eSIoana Radulescu         |           |           |                  |        |
1519425f00eSIoana Radulescu         |           |           |                  |      -----
1529425f00eSIoana Radulescu          ===========             ==================      | PHY |
1539425f00eSIoana Radulescu                                                           -----
1549425f00eSIoana Radulescu
1559425f00eSIoana RadulescuCreating a Network Interface
1569425f00eSIoana Radulescu============================
1579425f00eSIoana RadulescuA net device is created for each DPNI object probed on the MC bus. Each DPNI has
1589425f00eSIoana Radulescua number of properties which determine the network interface configuration
1599425f00eSIoana Radulescuoptions and associated hardware resources.
1609425f00eSIoana Radulescu
1619425f00eSIoana RadulescuDPNI objects (and the other DPAA2 objects needed for a network interface) can be
1629425f00eSIoana Radulescuadded to a container on the MC bus in one of two ways: statically, through a
1639425f00eSIoana RadulescuDatapath Layout Binary file (DPL) that is parsed by MC at boot time; or created
1649425f00eSIoana Radulescudynamically at runtime, via the DPAA2 objects APIs.
1659425f00eSIoana Radulescu
1669425f00eSIoana Radulescu
1679425f00eSIoana RadulescuFeatures & Offloads
1689425f00eSIoana Radulescu===================
1699425f00eSIoana RadulescuHardware checksum offloading is supported for TCP and UDP over IPv4/6 frames.
1709425f00eSIoana RadulescuThe checksum offloads can be independently configured on RX and TX through
1719425f00eSIoana Radulescuethtool.
1729425f00eSIoana Radulescu
1739425f00eSIoana RadulescuHardware offload of unicast and multicast MAC filtering is supported on the
1749425f00eSIoana Radulescuingress path and permanently enabled.
1759425f00eSIoana Radulescu
1769425f00eSIoana RadulescuScatter-gather frames are supported on both RX and TX paths. On TX, SG support
1779425f00eSIoana Radulescuis configurable via ethtool; on RX it is always enabled.
1789425f00eSIoana Radulescu
1799425f00eSIoana RadulescuThe DPAA2 hardware can process jumbo Ethernet frames of up to 10K bytes.
1809425f00eSIoana Radulescu
1819425f00eSIoana RadulescuThe Ethernet driver defines a static flow hashing scheme that distributes
1829425f00eSIoana Radulescutraffic based on a 5-tuple key: src IP, dst IP, IP proto, L4 src port,
1839425f00eSIoana RadulescuL4 dst port. No user configuration is supported for now.
1849425f00eSIoana Radulescu
1859425f00eSIoana RadulescuHardware specific statistics for the network interface as well as some
1869425f00eSIoana Radulescunon-standard driver stats can be consulted through ethtool -S option.
187