From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0045.outbound.protection.outlook.com [104.47.42.45]) by dpdk.org (Postfix) with ESMTP id 0341F1B194 for ; Thu, 28 Sep 2017 13:23:34 +0200 (CEST) Received: from BN6PR03CA0087.namprd03.prod.outlook.com (10.164.122.153) by BY2PR0301MB0728.namprd03.prod.outlook.com (10.160.63.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Thu, 28 Sep 2017 11:23:33 +0000 Received: from BN1BFFO11FD047.protection.gbl (2a01:111:f400:7c10::1:156) by BN6PR03CA0087.outlook.office365.com (2603:10b6:405:6f::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.56.11 via Frontend Transport; Thu, 28 Sep 2017 11:23:32 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1BFFO11FD047.mail.protection.outlook.com (10.58.145.2) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.56.11 via Frontend Transport; Thu, 28 Sep 2017 11:23:32 +0000 Received: from Tophie.ap.freescale.net ([10.232.14.39]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v8SBMpFr016035; Thu, 28 Sep 2017 04:23:30 -0700 From: Shreyansh Jain To: CC: , Date: Thu, 28 Sep 2017 17:03:21 +0530 Message-ID: <20170928113344.12248-18-shreyansh.jain@nxp.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170928113344.12248-1-shreyansh.jain@nxp.com> References: <20170909112132.13936-1-shreyansh.jain@nxp.com> <20170928113344.12248-1-shreyansh.jain@nxp.com> MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-EOPAttributedMessage: 0 X-Matching-Connectors: 131510714129974467; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(39860400002)(39380400002)(376002)(346002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(305945005)(50466002)(77096006)(498600001)(6666003)(316002)(2950100002)(5890100001)(5660300001)(5820100001)(97736004)(85426001)(47776003)(6916009)(8656003)(8936002)(104016004)(105606002)(8676002)(50226002)(81156014)(81166006)(86362001)(189998001)(54906003)(23676002)(1076002)(2351001)(106466001)(356003)(2870700001)(68736007)(36756003)(33646002)(6306002)(76176999)(4326008)(2906002)(53936002)(50986999)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR0301MB0728; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD047; 1:i/1V1vMIBclh/sa74cdbAIC/SIpwe1hm3VGNoxNvacxWCgDMGlW4LVo9ipfbQgDiDVFGXNnQfge4kDZtQSg2Gksd12EQKEuxuU1Y2TCfGlDO6F062agZMtZlXhwmj1W0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f1e5356f-666d-4a53-a364-08d506635a54 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017052603199)(201703131430075)(201703131517081); SRVR:BY2PR0301MB0728; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0728; 3:iBXA1PbggZb8H6N6HSi0Ia3T7BjNhggRSGNAA7EUbQ1TlrWF/sdrWEMGm4NSSYLmZmI1ivps1ztzzj06Vfnyk4kOWWcRv95ZFonOXSXQugSBPPaUISzToMhAh2zoAj38tcdM/ZlKjL8l1jBFg+Gp06/SeZvXewDvVnrY9epu60+j5Pbm9LENwgRhV7SvhacSG8XK3Dd4PbRtDyBc5ORmzHljgcUlMbQ52yqmPNcLWoFpQ1Re1dnbYdXC4PMEwy1s0YvWX7C5eSttUQTsP0dAbfNgCJgIqugzWGIdbehHSDEGxVfo2ah1mfhv40ivKftYbpOYp+hFDdzM3emcf76tjWzYugR9J6Dyw0G5aeNnFrQ=; 25:Q/ujvnDQtKYwXDxwbycs+9psyRDCHC5jgxxHivmMcaTgZX+DLuDrWKCrxw3a/qGUDIFeXgJrNQW08EbSgycaYjZUqjwfEsMkHqkGBB5Qv9tp7SXhhxInZ802LDUAukmkLbxazuKpo5KbEnkmEvSXdMMqVGaB9FC4ENkzMo+BuS+mwpZfHKNyxhgvdWthqXbtg5zKadzPlXiZClmfOsLRL00cVSNDACo55chhUUQNb5AEcWr6v5GfqrM/xxqw0IiHJEiEmGfMFSoVocJb/zxP1/3YJ6gBrbBhpx0vT39+t+M3jjbwovWOTjlzqHSsmNanDsnVNdmpcGHsqu6ywGAyMhksOHa7G38Nox7/V7NV3nM= X-MS-TrafficTypeDiagnostic: BY2PR0301MB0728: X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0728; 31:NVcEkBLq7lxVoAL8FSwr5VpKlzJRW8ecHShtBHadP7lFNKBvfTgw7fY2yM/cwjOpbSH6mfuHKk+zvvNdHvEebV3odsUoxib+9a7bnfRl5NkEMZJSJ5F4oD2kOh8lQ0cIgRpzSwtn3IPVTYewDpCzlfhHBHEtBeYuNj+5byxoUAkXUJ2mYUI2SHGbQdJtashDZ5Nb79Myl6XSFeCCWAajCdpxHXmWsU8Pm6S24QykaFk=; 4:n4dKlz3WoKNqF+/zkdAyrGDinv/MRCbYRB2818HtuFz/xtF3amOeOrwMi71Kh/26UkbkQiuYQ9O5jA9Ga/TciCHAfX3UnnoWmJ7ywFRlhv81HlHj6RXfOA0TrxAy+wUQAlft4JSEMJxwau7yP3SsprlH2lem6JoeUXf0JRYHFIm/VuandLm6HYW1e0euv33uGOOjrw7DjgAXL3JjrQHbo8zneDTh682RYHiVsbUahKQJ8dct5a3RuhLwoLWxYQLSxFDCXekTp4x8Rn9Lu2nKU34jyMmWV2DazEHSE2Wp+wHToFqNqK7ZDy4yddZ1AUrgwfuFMTHerBT0nkQeGa8cbkJQNvLh0JQ838JJqMfKG1ETsCNY71ehvwEzhVUpTSiWSlzfQ/Ey0l8vPITDkCR1Gz8LpxGRnxlbUTH1RxBvDwNKQ6Z3/uHRSxhn1fW6OIOS7TccyU3YIP+HCACKDwD6+rPfkiqg6Q1ZKaaQMLMmwbfCkvahmI8GJlaBjk1RSKFH X-Exchange-Antispam-Report-Test: UriScan:(278428928389397)(166708455590820)(185117386973197)(101931422205132)(275809806118684)(21532816269658)(264314650089876); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(2401047)(5005006)(8121501046)(10201501046)(3002001)(93006095)(93001095)(100000703101)(100105400095)(6055026)(6096035)(20161123561025)(20161123565025)(20161123559100)(20161123563025)(201703131430075)(201703131433075)(201703131448075)(201703161259150)(201703151042153)(20161123556025)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BY2PR0301MB0728; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BY2PR0301MB0728; X-Forefront-PRVS: 0444EB1997 X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCWTJQUjAzMDFNQjA3Mjg7MjM6U3V3azZNSTZ4R3JpQ1JtclgrV0RXbEVL?= =?utf-8?B?MStvZlBESmFveUpKSjB4VkVxRlhWbkNDSlRLZVlFREsxNVhGOU91Z0x0NEVM?= =?utf-8?B?K0xDdDdJeVZCR1owZ0ZOOGlUZThDOG1VVHpnNUE5Tjlkc1F0dHR4M1lLejl6?= =?utf-8?B?czJwaVRtMzZLU2JtekFuRmRvWEYyRyswWjJ0a09LUzc5K3l5ZDh0bFNkZGRx?= =?utf-8?B?MjgxVGRZdGM3YWVsOEFiNkxQaStBeWFNV28rak5qWEpVNXM5WGJDSDBBcXF0?= =?utf-8?B?TC95eDNjSE5wR2ZSWkMwMkE2dk40OVA0VWM3YkRVRTFwclFHRlp3Z3VIQUNk?= =?utf-8?B?eWhRaFJENkxqNXZEOTJFc1Axc25qS2RmTnZ2Qi9nQ2xZbWpoTjZ0UjBXMmZl?= =?utf-8?B?bnhkRWxWYjdScEZTUlE1SGd2dE8wTWwzQ1M2Y3dzcG9VTmpYRDBWRGpTeDVC?= =?utf-8?B?NFRwQWlHOEpCa2gzSjlud2wvZmhESnI0MXVvbE05N1B4OVBSSFJ0RTlHcTZP?= =?utf-8?B?TFVtS2xmazZGYnA5NW9jcTg4VFlSVGMvZHdNK1NGci9SRWUyU2V0N2hSWmlI?= =?utf-8?B?QnlwNUFvSTkwcENKemhKS1NHcTlleXh2YStGUGo0dlYwWEU0WFBkdDIwMFJP?= =?utf-8?B?RXFCNU9VS1dINUJ5L0JBYTgydEpKTFVlajVtbS9kS3RRcDRMOFRpVEdXakpm?= =?utf-8?B?SEtIRmNuQk9EM1VTcFBvcXBLS2ZYNWpQdnBycm1EWUREajV5TU9zOVBZSnpu?= =?utf-8?B?NzBzemVxMDhibEgxNndVTDdFT1BqN3JKWHdJc0N0cnROUWRySFE5SjRyTi9G?= =?utf-8?B?SnIxcVJueUpVWEN5WEVKblR5OFk1YjJtdTVaeHNUNXNienFiWEJKZStuTFY1?= =?utf-8?B?WUt1Y0FKT2pZc0dldXNyOGJHdXN5K01NbE9QMXN2dnJnYWxjK2NmUGdJcm9m?= =?utf-8?B?bFAxTThwajRRMFFaMGtJK0FHcmIxdXRiNjJQWU92cGU0SUdOZ1MrZDZkdlVD?= =?utf-8?B?Nm45U1dacnBPVUV6b0lDS0hPMm5NVnEvZFdoaTlkODVNNUNTTDhyYTBHOXhy?= =?utf-8?B?djZYSTh4VkloR2RGQ1hFV1U4dEZ4WmxzcFY2QkplcHJxNmpjSHNRSDZZYTZS?= =?utf-8?B?L0swR0g1TWZyM1hXTmorWkdHWU8xdUdzUndLd3hWWTYvb1FhZHd1eWtTMkJR?= =?utf-8?B?aFUrUThBSFpjaE51bFZ3UlZWUGMrU3RTVEtnS3h2azkwLzZxRmd3eWJmSlJr?= =?utf-8?B?Qjd0MlRQWlBmYWhTbFZFaUpYYjZYYTJjT1VMc2d3YW1LZ0dVWlFEeFJYdFh1?= =?utf-8?B?K3l0aGlzb3h0ajJwc294RFA2TmdhRDU3ekxhTWNpVGx3QXA5c2YrWWN1aW1X?= =?utf-8?B?VEJGL3VZS2tEeFh6ci9DKzJnNXZCZGdvRGVnT215QVM4N1B4ZElpUENEQnVT?= =?utf-8?B?YUNvSTNOZEN5UmNjWHg2VGJHNW1nditsMEkzTms3UjlDY3hxdHR5cTNPaWg1?= =?utf-8?B?ZS8rUVRTendwZU1Nb0Y2a1YwWHF0UnRjOVFwYjd5aVZRSjVwd1IwTkRwb3Fk?= =?utf-8?B?bVF3TnJaWlYraHpNdVBKMERDV2ZZL0YrRnJUZzlyMnErOSthTkx2UzlEQitK?= =?utf-8?B?Vmg2T2RPNTQ3aWczc1dlbWNhMkNmaHhGUkNjcGN0RnF1NjhybHlUVGVBNFdJ?= =?utf-8?Q?DLKqNoH2x+LWyzfiuN8E=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0728; 6:Q0kODf0tnYTQWi04cvzk1AwEpc6WcFt0pkGLiz43RaqGaEhAKTGCL3QGHbLe16zJBilWQOSs+3grb2AQV9ZNcK1DlqEHXPW2+wZjpMImgzYFeD69ZB4p00I4wcOv9XkhRxIjRCLqddMrEUZyfCipjsaIdhu/mZQ5uNami3kFWrfgP26Cgvcb5PhbsnT6jMZq1WnM9NRHLfQF1qgIAb0hih2W1S/kKD3q9zVV8TgyseEL34yeAbS+RdcztiNw29CgHcgPCKgWTmncUXnudBIHHJkJ8WM50QYwmbZBshAu1mxMdAMAFV8szM9TEr86BpaTjbeTIoOV0BfB+Pw2ipPZwg==; 5:/U8C2ctM2uWpOmJjNgpsYak/VLb6Cca7aZXNkv+5bt4NDPZF4tb8ihc79dk8MhXRLkUoCRbCQVnO+/2FEbGK6pxkWBv3JPDwaCLPeFESVJDWWy9xrKvFuRXbJ60XTl8HlLhiWMwjNqFmIwhD8/vafg==; 24:tC3PbZse04xoDvg592yM2gVz2sulR3XwSCpM3JyCPXGhYeN445qB7LERDhylQhFIJdfwwDt41/Ewa/9cgWCwMNuXZBnPyke6HGKiFbiCjpI=; 7:N9ZyzGuevRacFzTKsQAZh+MUvnMc0WXpK5b2gLuHfdryY6hgrtShdZtxUNm7qwZZeL6+XJlGTXr1JBH+ak2Qz5mjNXpt3B+sBNk4RKvi0Chr9I6QlSWlMIZxB1t0J+V9grChIOjH2Rh/NUBTYcDo6NF91P7qjMvo1f17W+2gmVBqATOOTSt2KwnBaFM4/Li9hNAx4T/B6IP3NZecXxCS1/KnK4yMLJkM4DWiIzWKMxY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Sep 2017 11:23:32.8102 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR0301MB0728 Subject: [dpdk-dev] [PATCH v5 17/40] doc: add NXP DPAA PMD documentation X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Sep 2017 11:23:35 -0000 Signed-off-by: Hemant Agrawal Signed-off-by: Shreyansh Jain --- MAINTAINERS | 2 + doc/guides/nics/dpaa.rst | 377 ++++++++++++++++++++++++++++++++++++++ doc/guides/nics/features/dpaa.ini | 8 + doc/guides/nics/index.rst | 1 + 4 files changed, 388 insertions(+) create mode 100644 doc/guides/nics/dpaa.rst create mode 100644 doc/guides/nics/features/dpaa.ini diff --git a/MAINTAINERS b/MAINTAINERS index c566962..dad876f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -412,6 +412,8 @@ NXP dpaa M: Hemant Agrawal M: Shreyansh Jain F: drivers/bus/dpaa/ +F: doc/guides/nics/dpaa.rst +F: doc/guides/nics/features/dpaa.ini NXP dpaa2 M: Hemant Agrawal diff --git a/doc/guides/nics/dpaa.rst b/doc/guides/nics/dpaa.rst new file mode 100644 index 0000000..7d054d7 --- /dev/null +++ b/doc/guides/nics/dpaa.rst @@ -0,0 +1,377 @@ +.. BSD LICENSE + Copyright 2017 NXP. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of NXP nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +DPAA Poll Mode Driver +===================== + +The DPAA NIC PMD (**librte_pmd_dpaa**) provides poll mode driver +support for the inbuilt NIC found in the **NXP DPAA** SoC family. + +More information can be found at `NXP Official Website +`_. + +NXP DPAA (Data Path Acceleration Architecture - Gen 1) +------------------------------------------------------ + +This section provides an overview of the NXP DPAA architecture +and how it is integrated into the DPDK. + +Contents summary + +- DPAA overview +- DPAA driver architecture overview + +.. _dpaa_overview: + +DPAA Overview +~~~~~~~~~~~~~ + +Reference: `FSL DPAA Architecture `_. + +The QorIQ Data Path Acceleration Architecture (DPAA) is a set of hardware +components on specific QorIQ series multicore processors. This architecture +provides the infrastructure to support simplified sharing of networking +interfaces and accelerators by multiple CPU cores, and the accelerators +themselves. + +DPAA includes: + +- Cores +- Network and packet I/O +- Hardware offload accelerators +- Infrastructure required to facilitate flow of packets between the components above + +Infrastructure components are: + +- The Queue Manager (QMan) is a hardware accelerator that manages frame queues. + It allows CPUs and other accelerators connected to the SoC datapath to + enqueue and dequeue ethernet frames, thus providing the infrastructure for + data exchange among CPUs and datapath accelerators. +- The Buffer Manager (BMan) is a hardware buffer pool management block that + allows software and accelerators on the datapath to acquire and release + buffers in order to build frames. + +Hardware accelerators are: + +- SEC - Cryptographic accelerator +- PME - Pattern matching engine + +The Network and packet I/O component: + +- The Frame Manager (FMan) is a key component in the DPAA and makes use of the + DPAA infrastructure (QMan and BMan). FMan is responsible for packet + distribution and policing. Each frame can be parsed, classified and results + may be attached to the frame. This meta data can be used to select + particular QMan queue, which the packet is forwarded to. + + +DPAA DPDK - Poll Mode Driver Overview +------------------------------------- + +This section provides an overview of the drivers for DPAA: + +* Bus driver and associated "DPAA infrastructure" drivers +* Functional object drivers (such as Ethernet). + +Brief description of each driver is provided in layout below as well as +in the following sections. + +.. code-block:: console + + +------------+ + | DPDK DPAA | + | PMD | + +-----+------+ + | + +-----+------+ +---------------+ + : Ethernet :.......| DPDK DPAA | + . . . . . . . . . : (FMAN) : | Mempool driver| + . +---+---+----+ | (BMAN) | + . ^ | +-----+---------+ + . | | . + . | | . + . +---+---V----+ . + . . . . . . . . . . .: Portal drv : . + . . : : . + . . +-----+------+ . + . . : QMAN : . + . . : Driver : . + +----+------+-------+ +-----+------+ . + | DPDK DPAA Bus | | . + | driver |....................|..................... + | /bus/dpaa | | + +-------------------+ | + | + ========================== HARDWARE =====|======================== + PHY + =========================================|======================== + +In the above representation, solid lines represent components which interface +with DPDK RTE Framework and dotted lines represent DPAA internal components. + +DPAA Bus driver +~~~~~~~~~~~~~~~ + +The DPAA bus driver is a ``rte_bus`` driver which scans the platform like bus. +Key functions include: + +- Scanning and parsing the various objects and adding them to their respective + device list. +- Performing probe for available drivers against each scanned device +- Creating necessary ethernet instance before passing control to the PMD + +DPAA NIC Driver (PMD) +~~~~~~~~~~~~~~~~~~~~~ + +DPAA PMD is traditional DPDK PMD which provides necessary interface between +RTE framework and DPAA internal components/drivers. + +- Once devices have been identified by DPAA Bus, each device is associated + with the PMD +- PMD is responsible for implementing necessary glue layer between RTE APIs + and lower level QMan and FMan blocks. + The Ethernet driver is bound to a FMAN port and implements the interfaces + needed to connect the DPAA network interface to the network stack. + Each FMAN Port corresponds to a DPDK network interface. + + +Features +^^^^^^^^ + + Features of the DPAA PMD are: + + - Multiple queues for TX and RX + - Receive Side Scaling (RSS) + - Packet type information + - Checksum offload + - Promiscuous mode + +DPAA Mempool Driver +~~~~~~~~~~~~~~~~~~~ + +DPAA has a hardware offloaded buffer pool manager, called BMan, or Buffer +Manager. + +- Using standard Mempools operations RTE API, the mempool driver interfaces + with RTE to service each mempool creation, deletion, buffer allocation and + deallocation requests. +- Each FMAN instance has a BMan pool attached to it during initialization. + Each Tx frame can be automatically released by hardware, if allocated from + this pool. + + +Supported DPAA SoCs +------------------- + +- LS1043A/LS1023A +- LS1046A/LS1026A + +Prerequisites +------------- + +There are three main pre-requisities for executing DPAA PMD on a DPAA +compatible board: + +1. **ARM 64 Tool Chain** + + For example, the `*aarch64* Linaro Toolchain `_. + +2. **Linux Kernel** + + It can be obtained from `NXP's Github hosting `_. + +3. **Rootfile system** + + Any *aarch64* supporting filesystem can be used. For example, + Ubuntu 15.10 (Wily) or 16.04 LTS (Xenial) userland which can be obtained + from `here `_. + +4. **FMC Tool** + + Before any DPDK application can be executed, the Frame Manager Configuration + Tool (FMC) need to be executed to set the configurations of the queues. This + includes the queue state, RSS and other policies. + This tool can be obtained from `NXP (Freescale) Public Git Repository `_. + This tool needs configuration files which are available in the + :ref:`DPDK Extra Scripts `, described below. + +As an alternative method, DPAA PMD can also be executed using images provided +as part of SDK from NXP. The SDK includes all the above prerequisites necessary +to bring up a DPAA board. + +The following dependencies are not part of DPDK and must be installed +separately: + +- **NXP Linux SDK** + + NXP Linux software development kit (SDK) includes support for family + of QorIQ® ARM-Architecture-based system on chip (SoC) processors + and corresponding boards. + + It includes the Linux board support packages (BSPs) for NXP SoCs, + a fully operational tool chain, kernel and board specific modules. + + SDK and related information can be obtained from: `NXP QorIQ SDK `_. + + +.. _extra_scripts: + +- **DPDK Extra Scripts** + + DPAA based resources can be configured easily with the help of ready scripts + as provided in the DPDK Extra repository. + + `DPDK Extras Scripts `_. + +Currently supported by DPDK: + +- NXP SDK **2.0+**. +- Supported architectures: **arm64 LE**. + +- Follow the DPDK :ref:`Getting Started Guide for Linux ` + to setup the basic DPDK environment. + +.. note:: + + Some part of dpaa bus code (qbman and fman - library) routines are + dual licensed (BSD & GPLv2). + +Pre-Installation Configuration +------------------------------ + +Config File Options +~~~~~~~~~~~~~~~~~~~ + +The following options can be modified in the ``config`` file. +Please note that enabling debugging options may affect system performance. + +- ``CONFIG_RTE_LIBRTE_DPAA_BUS`` (default ``n``) + + By default it is enabled only for defconfig_arm64-dpaa-* config. + Toggle compilation of the ``librte_bus_dpaa`` driver. + +- ``CONFIG_RTE_LIBRTE_DPAA_PMD`` (default ``n``) + + By default it is enabled only for defconfig_arm64-dpaa-* config. + Toggle compilation of the ``librte_pmd_dpaa`` driver. + +- ``CONFIG_RTE_LIBRTE_DPAA_DEBUG_DRIVER`` (default ``n``) + + Toggles display of bus configurations and enables a debugging queue + to fetch error (Rx/Tx) packets to driver. By default, packets with errors + (like wrong checksum) are dropped by the hardware. + +- ``CONFIG_RTE_LIBRTE_DPAA_HWDEBUG`` (default ``n``) + + Enables debugging of the Queue and Buffer Manager layer which interacts + with the DPAA hardware. + +- ``CONFIG_RTE_MBUF_DEFAULT_MEMPOOL_OPS`` (default ``dpaa``) + + This is not a DPAA specific configuration - it is a generic RTE config. + For optimal performance and hardware utilization, it is expected that DPAA + Mempool driver is used for mempools. For that, this configuration needs to + enabled. + +Environment Variables +~~~~~~~~~~~~~~~~~~~~~ + +DPAA drivers uses the following environment variables to configure its +state during application initialization: + +- ``DPAA_NUM_RX_QUEUES`` (default 1) + + This defines the number of Rx queues configured for an application, per + port. Hardware would distribute across these many number of queues on Rx + of packets. + In case the application is configured to use lesser number of queues than + configured above, it might result in packet loss (because of distribution). + + +Driver compilation and testing +------------------------------ + +Refer to the document :ref:`compiling and testing a PMD for a NIC ` +for details. + +#. Running testpmd: + + Follow instructions available in the document + :ref:`compiling and testing a PMD for a NIC ` + to run testpmd. + + Example output: + + .. code-block:: console + + ./arm64-dpaa-linuxapp-gcc/testpmd -c 0xff -n 1 \ + -- -i --portmask=0x3 --nb-cores=1 --no-flush-rx + + ..... + EAL: Registered [pci] bus. + EAL: Registered [dpaa] bus. + EAL: Detected 4 lcore(s) + ..... + EAL: dpaa: Bus scan completed + ..... + Configuring Port 0 (socket 0) + Port 0: 00:00:00:00:00:01 + Configuring Port 1 (socket 0) + Port 1: 00:00:00:00:00:02 + ..... + Checking link statuses... + Port 0 Link Up - speed 10000 Mbps - full-duplex + Port 1 Link Up - speed 10000 Mbps - full-duplex + Done + testpmd> + +Limitations +----------- + +Platform Requirement +~~~~~~~~~~~~~~~~~~~~ + +DPAA drivers for DPDK can only work on NXP SoCs as listed in the +``Supported DPAA SoCs``. + +Maximum packet length +~~~~~~~~~~~~~~~~~~~~~ + +The DPAA SoC family support a maximum of a 10240 jumbo frame. The value +is fixed and cannot be changed. So, even when the ``rxmode.max_rx_pkt_len`` +member of ``struct rte_eth_conf`` is set to a value lower than 10240, frames +up to 10240 bytes can still reach the host interface. + +Multiprocess Support +~~~~~~~~~~~~~~~~~~~~ + +Current version of DPAA driver doesn't support multi-process applications +where I/O is performed using secondary processes. This feature would be +implemented in subsequent versions. diff --git a/doc/guides/nics/features/dpaa.ini b/doc/guides/nics/features/dpaa.ini new file mode 100644 index 0000000..9e8befc --- /dev/null +++ b/doc/guides/nics/features/dpaa.ini @@ -0,0 +1,8 @@ +; +; Supported features of the 'dpaa' network poll mode driver. +; +; Refer to default.ini for the full list of available PMD features. +; +[Features] +ARMv8 = Y +Usage doc = Y diff --git a/doc/guides/nics/index.rst b/doc/guides/nics/index.rst index 36f4f3f..4115141 100644 --- a/doc/guides/nics/index.rst +++ b/doc/guides/nics/index.rst @@ -43,6 +43,7 @@ Network Interface Controller Drivers bnx2x bnxt cxgbe + dpaa dpaa2 e1000em ena -- 2.9.3