168a03efeSNithin Dabilpuram.. SPDX-License-Identifier: BSD-3-Clause 268a03efeSNithin Dabilpuram Copyright(C) 2021 Marvell. 368a03efeSNithin Dabilpuram 468a03efeSNithin DabilpuramMarvell cnxk platform guide 568a03efeSNithin Dabilpuram=========================== 668a03efeSNithin Dabilpuram 768a03efeSNithin DabilpuramThis document gives an overview of **Marvell OCTEON CN9K and CN10K** RVU H/W block, 868a03efeSNithin Dabilpurampacket flow and procedure to build DPDK on OCTEON cnxk platform. 968a03efeSNithin Dabilpuram 1068a03efeSNithin DabilpuramMore information about CN9K and CN10K SoC can be found at `Marvell Official Website 1168a03efeSNithin Dabilpuram<https://www.marvell.com/embedded-processors/infrastructure-processors/>`_. 1268a03efeSNithin Dabilpuram 1368a03efeSNithin DabilpuramSupported OCTEON cnxk SoCs 1468a03efeSNithin Dabilpuram-------------------------- 1568a03efeSNithin Dabilpuram 1633e71acfSJerin Jacob- CN93xx 1733e71acfSJerin Jacob- CN96xx 1833e71acfSJerin Jacob- CN98xx 1968a03efeSNithin Dabilpuram- CN106xx 2068a03efeSNithin Dabilpuram- CNF105xx 21dd462f68SRahul Bhansali- CN103XX 2268a03efeSNithin Dabilpuram 2368a03efeSNithin DabilpuramResource Virtualization Unit architecture 2468a03efeSNithin Dabilpuram----------------------------------------- 2568a03efeSNithin Dabilpuram 2668a03efeSNithin DabilpuramThe :numref:`figure_cnxk_resource_virtualization` diagram depicts the 2768a03efeSNithin DabilpuramRVU architecture and a resource provisioning example. 2868a03efeSNithin Dabilpuram 2968a03efeSNithin Dabilpuram.. _figure_cnxk_resource_virtualization: 3068a03efeSNithin Dabilpuram 3168a03efeSNithin Dabilpuram.. figure:: img/cnxk_resource_virtualization.* 3268a03efeSNithin Dabilpuram 3368a03efeSNithin Dabilpuram cnxk Resource virtualization architecture and provisioning example 3468a03efeSNithin Dabilpuram 3568a03efeSNithin Dabilpuram 3668a03efeSNithin DabilpuramResource Virtualization Unit (RVU) on Marvell's OCTEON CN9K/CN10K SoC maps HW 3768a03efeSNithin Dabilpuramresources belonging to the network, crypto and other functional blocks onto 3868a03efeSNithin DabilpuramPCI-compatible physical and virtual functions. 3968a03efeSNithin Dabilpuram 4068a03efeSNithin DabilpuramEach functional block has multiple local functions (LFs) for 4168a03efeSNithin Dabilpuramprovisioning to different PCIe devices. RVU supports multiple PCIe SRIOV 4268a03efeSNithin Dabilpuramphysical functions (PFs) and virtual functions (VFs). 4368a03efeSNithin Dabilpuram 4468a03efeSNithin DabilpuramThe :numref:`table_cnxk_rvu_dpdk_mapping` shows the various local 4568a03efeSNithin Dabilpuramfunctions (LFs) provided by the RVU and its functional mapping to 4668a03efeSNithin DabilpuramDPDK subsystem. 4768a03efeSNithin Dabilpuram 4868a03efeSNithin Dabilpuram.. _table_cnxk_rvu_dpdk_mapping: 4968a03efeSNithin Dabilpuram 5068a03efeSNithin Dabilpuram.. table:: RVU managed functional blocks and its mapping to DPDK subsystem 5168a03efeSNithin Dabilpuram 5268a03efeSNithin Dabilpuram +---+-----+--------------------------------------------------------------+ 5368a03efeSNithin Dabilpuram | # | LF | DPDK subsystem mapping | 5468a03efeSNithin Dabilpuram +===+=====+==============================================================+ 5568a03efeSNithin Dabilpuram | 1 | NIX | rte_ethdev, rte_tm, rte_event_eth_[rt]x_adapter, rte_security| 5668a03efeSNithin Dabilpuram +---+-----+--------------------------------------------------------------+ 5768a03efeSNithin Dabilpuram | 2 | NPA | rte_mempool | 5868a03efeSNithin Dabilpuram +---+-----+--------------------------------------------------------------+ 5968a03efeSNithin Dabilpuram | 3 | NPC | rte_flow | 6068a03efeSNithin Dabilpuram +---+-----+--------------------------------------------------------------+ 6168a03efeSNithin Dabilpuram | 4 | CPT | rte_cryptodev, rte_event_crypto_adapter | 6268a03efeSNithin Dabilpuram +---+-----+--------------------------------------------------------------+ 6368a03efeSNithin Dabilpuram | 5 | SSO | rte_eventdev | 6468a03efeSNithin Dabilpuram +---+-----+--------------------------------------------------------------+ 6568a03efeSNithin Dabilpuram | 6 | TIM | rte_event_timer_adapter | 6668a03efeSNithin Dabilpuram +---+-----+--------------------------------------------------------------+ 6768a03efeSNithin Dabilpuram | 7 | LBK | rte_ethdev | 6868a03efeSNithin Dabilpuram +---+-----+--------------------------------------------------------------+ 6953f6d732SRadha Mohan Chintakuntla | 8 | DPI | rte_dmadev | 7068a03efeSNithin Dabilpuram +---+-----+--------------------------------------------------------------+ 7168a03efeSNithin Dabilpuram | 9 | SDP | rte_ethdev | 7268a03efeSNithin Dabilpuram +---+-----+--------------------------------------------------------------+ 7368a03efeSNithin Dabilpuram | 10| REE | rte_regexdev | 7468a03efeSNithin Dabilpuram +---+-----+--------------------------------------------------------------+ 758a8dc9b8STomasz Duszynski | 11| BPHY| rte_rawdev | 768a8dc9b8STomasz Duszynski +---+-----+--------------------------------------------------------------+ 77d0b8a4e1STomasz Duszynski | 12| GPIO| rte_rawdev | 78d0b8a4e1STomasz Duszynski +---+-----+--------------------------------------------------------------+ 792bca1d7cSSrikanth Yalavarthi | 13| ML | rte_mldev | 802bca1d7cSSrikanth Yalavarthi +---+-----+--------------------------------------------------------------+ 81*318ee1b0SAkhil Goyal | 14| RVU | rte_rawdev | 82*318ee1b0SAkhil Goyal +---+-----+--------------------------------------------------------------+ 8368a03efeSNithin Dabilpuram 8468a03efeSNithin DabilpuramPF0 is called the administrative / admin function (AF) and has exclusive 8568a03efeSNithin Dabilpuramprivileges to provision RVU functional block's LFs to each of the PF/VF. 8668a03efeSNithin Dabilpuram 8768a03efeSNithin DabilpuramPF/VFs communicates with AF via a shared memory region (mailbox).Upon receiving 8868a03efeSNithin Dabilpuramrequests from PF/VF, AF does resource provisioning and other HW configuration. 8968a03efeSNithin Dabilpuram 9068a03efeSNithin DabilpuramAF is always attached to host, but PF/VFs may be used by host kernel itself, 9168a03efeSNithin Dabilpuramor attached to VMs or to userspace applications like DPDK, etc. So, AF has to 9268a03efeSNithin Dabilpuramhandle provisioning/configuration requests sent by any device from any domain. 9368a03efeSNithin Dabilpuram 9468a03efeSNithin DabilpuramThe AF driver does not receive or process any data. 9568a03efeSNithin DabilpuramIt is only a configuration driver used in control path. 9668a03efeSNithin Dabilpuram 9768a03efeSNithin DabilpuramThe :numref:`figure_cnxk_resource_virtualization` diagram also shows a 9868a03efeSNithin Dabilpuramresource provisioning example where, 9968a03efeSNithin Dabilpuram 100443b949eSDavid Marchand#. PFx and PFx-VF0 bound to Linux netdev driver. 101443b949eSDavid Marchand 102443b949eSDavid Marchand#. PFx-VF1 ethdev driver bound to the first DPDK application. 103443b949eSDavid Marchand 104443b949eSDavid Marchand#. PFy ethdev driver, PFy-VF0 ethdev driver, PFz eventdev driver, PFm-VF0 cryptodev driver bound to the second DPDK application. 10568a03efeSNithin Dabilpuram 10668a03efeSNithin DabilpuramLBK HW Access 10768a03efeSNithin Dabilpuram------------- 10868a03efeSNithin Dabilpuram 10968a03efeSNithin DabilpuramLoopback HW Unit (LBK) receives packets from NIX-RX and sends packets back to NIX-TX. 11068a03efeSNithin DabilpuramThe loopback block has N channels and contains data buffering that is shared across 11168a03efeSNithin Dabilpuramall channels. The LBK HW Unit is abstracted using ethdev subsystem, Where PF0's 11268a03efeSNithin DabilpuramVFs are exposed as ethdev device and odd-even pairs of VFs are tied together, 11368a03efeSNithin Dabilpuramthat is, packets sent on odd VF end up received on even VF and vice versa. 11468a03efeSNithin DabilpuramThis would enable HW accelerated means of communication between two domains 11568a03efeSNithin Dabilpuramwhere even VF bound to the first domain and odd VF bound to the second domain. 11668a03efeSNithin Dabilpuram 11768a03efeSNithin DabilpuramTypical application usage models are, 11868a03efeSNithin Dabilpuram 11968a03efeSNithin Dabilpuram#. Communication between the Linux kernel and DPDK application. 120fc7428eaSDavid Marchand 12168a03efeSNithin Dabilpuram#. Exception path to Linux kernel from DPDK application as SW ``KNI`` replacement. 122fc7428eaSDavid Marchand 12368a03efeSNithin Dabilpuram#. Communication between two different DPDK applications. 12468a03efeSNithin Dabilpuram 12568a03efeSNithin DabilpuramSDP interface 12668a03efeSNithin Dabilpuram------------- 12768a03efeSNithin Dabilpuram 12868a03efeSNithin DabilpuramSystem DPI Packet Interface unit(SDP) provides PCIe endpoint support for remote host 12968a03efeSNithin Dabilpuramto DMA packets into and out of cnxk SoC. SDP interface comes in to live only when 13068a03efeSNithin Dabilpuramcnxk SoC is connected in PCIe endpoint mode. It can be used to send/receive 13168a03efeSNithin Dabilpurampackets to/from remote host machine using input/output queue pairs exposed to it. 13268a03efeSNithin DabilpuramSDP interface receives input packets from remote host from NIX-RX and sends packets 13368a03efeSNithin Dabilpuramto remote host using NIX-TX. Remote host machine need to use corresponding driver 13468a03efeSNithin Dabilpuram(kernel/user mode) to communicate with SDP interface on cnxk SoC. SDP supports 13568a03efeSNithin Dabilpuramsingle PCIe SRIOV physical function(PF) and multiple virtual functions(VF's). Users 13668a03efeSNithin Dabilpuramcan bind PF or VF to use SDP interface and it will be enumerated as ethdev ports. 13768a03efeSNithin Dabilpuram 13868a03efeSNithin DabilpuramThe primary use case for SDP is to enable the smart NIC use case. Typical usage models are, 13968a03efeSNithin Dabilpuram 14068a03efeSNithin Dabilpuram#. Communication channel between remote host and cnxk SoC over PCIe. 141fc7428eaSDavid Marchand 14268a03efeSNithin Dabilpuram#. Transfer packets received from network interface to remote host over PCIe and 14368a03efeSNithin Dabilpuram vice-versa. 14468a03efeSNithin Dabilpuram 14568a03efeSNithin Dabilpuramcnxk packet flow 14668a03efeSNithin Dabilpuram---------------------- 14768a03efeSNithin Dabilpuram 14868a03efeSNithin DabilpuramThe :numref:`figure_cnxk_packet_flow_hw_accelerators` diagram depicts 14968a03efeSNithin Dabilpuramthe packet flow on cnxk SoC in conjunction with use of various HW accelerators. 15068a03efeSNithin Dabilpuram 15168a03efeSNithin Dabilpuram.. _figure_cnxk_packet_flow_hw_accelerators: 15268a03efeSNithin Dabilpuram 15368a03efeSNithin Dabilpuram.. figure:: img/cnxk_packet_flow_hw_accelerators.* 15468a03efeSNithin Dabilpuram 15568a03efeSNithin Dabilpuram cnxk packet flow in conjunction with use of HW accelerators 15668a03efeSNithin Dabilpuram 15768a03efeSNithin DabilpuramHW Offload Drivers 15868a03efeSNithin Dabilpuram------------------ 15968a03efeSNithin Dabilpuram 16068a03efeSNithin DabilpuramThis section lists dataplane H/W block(s) available in cnxk SoC. 16168a03efeSNithin Dabilpuram 16247db46bbSNithin Dabilpuram#. **Ethdev Driver** 16347db46bbSNithin Dabilpuram See :doc:`../nics/cnxk` for NIX Ethdev driver information. 16447db46bbSNithin Dabilpuram 1652da31591SAshwin Sekhar T K#. **Mempool Driver** 1662da31591SAshwin Sekhar T K See :doc:`../mempool/cnxk` for NPA mempool driver information. 1672da31591SAshwin Sekhar T K 1683d27e49eSTomasz Duszynski#. **Baseband PHY Driver** 1693d27e49eSTomasz Duszynski See :doc:`../rawdevs/cnxk_bphy` for Baseband PHY driver information. 1703d27e49eSTomasz Duszynski 17153f6d732SRadha Mohan Chintakuntla#. **Dmadev Driver** 17253f6d732SRadha Mohan Chintakuntla See :doc:`../dmadevs/cnxk` for DPI Dmadev driver information. 17353f6d732SRadha Mohan Chintakuntla 17472c00ae9SLiron Himi#. **Regex Device Driver** 17572c00ae9SLiron Himi See :doc:`../regexdevs/cn9k` for REE Regex device driver information. 17672c00ae9SLiron Himi 1772bca1d7cSSrikanth Yalavarthi#. **ML Device Driver** 1782bca1d7cSSrikanth Yalavarthi See :doc:`../mldevs/cnxk` for Machine Learning device driver information. 1792bca1d7cSSrikanth Yalavarthi 180*318ee1b0SAkhil Goyal#. **RVU LF Driver** 181*318ee1b0SAkhil Goyal See :doc:`../rawdevs/cnxk_rvu_lf` for RVU LF driver information. 182*318ee1b0SAkhil Goyal 18368a03efeSNithin DabilpuramProcedure to Setup Platform 18468a03efeSNithin Dabilpuram--------------------------- 18568a03efeSNithin Dabilpuram 18668a03efeSNithin DabilpuramThere are three main prerequisites for setting up DPDK on cnxk 18768a03efeSNithin Dabilpuramcompatible board: 18868a03efeSNithin Dabilpuram 189443b949eSDavid Marchand#. **RVU AF Linux kernel driver** 19068a03efeSNithin Dabilpuram 19168a03efeSNithin Dabilpuram The dependent kernel drivers can be obtained from the 19268a03efeSNithin Dabilpuram `kernel.org <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/ethernet/marvell/octeontx2>`_. 19368a03efeSNithin Dabilpuram 19468a03efeSNithin Dabilpuram Alternatively, the Marvell SDK also provides the required kernel drivers. 19568a03efeSNithin Dabilpuram 19668a03efeSNithin Dabilpuram Linux kernel should be configured with the following features enabled: 19768a03efeSNithin Dabilpuram 19868a03efeSNithin Dabilpuram .. code-block:: console 19968a03efeSNithin Dabilpuram 20068a03efeSNithin Dabilpuram # 64K pages enabled for better performance 20168a03efeSNithin Dabilpuram CONFIG_ARM64_64K_PAGES=y 20268a03efeSNithin Dabilpuram CONFIG_ARM64_VA_BITS_48=y 20368a03efeSNithin Dabilpuram # huge pages support enabled 20468a03efeSNithin Dabilpuram CONFIG_HUGETLBFS=y 20568a03efeSNithin Dabilpuram CONFIG_HUGETLB_PAGE=y 20668a03efeSNithin Dabilpuram # VFIO enabled with TYPE1 IOMMU at minimum 20768a03efeSNithin Dabilpuram CONFIG_VFIO_IOMMU_TYPE1=y 20868a03efeSNithin Dabilpuram CONFIG_VFIO_VIRQFD=y 20968a03efeSNithin Dabilpuram CONFIG_VFIO=y 21068a03efeSNithin Dabilpuram CONFIG_VFIO_NOIOMMU=y 21168a03efeSNithin Dabilpuram CONFIG_VFIO_PCI=y 21268a03efeSNithin Dabilpuram CONFIG_VFIO_PCI_MMAP=y 21368a03efeSNithin Dabilpuram # SMMUv3 driver 21468a03efeSNithin Dabilpuram CONFIG_ARM_SMMU_V3=y 21568a03efeSNithin Dabilpuram # ARMv8.1 LSE atomics 21668a03efeSNithin Dabilpuram CONFIG_ARM64_LSE_ATOMICS=y 21768a03efeSNithin Dabilpuram # OCTEONTX2 drivers 21868a03efeSNithin Dabilpuram CONFIG_OCTEONTX2_MBOX=y 21968a03efeSNithin Dabilpuram CONFIG_OCTEONTX2_AF=y 22068a03efeSNithin Dabilpuram # Enable if netdev PF driver required 22168a03efeSNithin Dabilpuram CONFIG_OCTEONTX2_PF=y 22268a03efeSNithin Dabilpuram # Enable if netdev VF driver required 22368a03efeSNithin Dabilpuram CONFIG_OCTEONTX2_VF=y 22468a03efeSNithin Dabilpuram CONFIG_CRYPTO_DEV_OCTEONTX2_CPT=y 22568a03efeSNithin Dabilpuram # Enable if OCTEONTX2 DMA PF driver required 22668a03efeSNithin Dabilpuram CONFIG_OCTEONTX2_DPI_PF=n 22768a03efeSNithin Dabilpuram 228443b949eSDavid Marchand#. **ARM64 Linux Tool Chain** 22968a03efeSNithin Dabilpuram 23068a03efeSNithin Dabilpuram For example, the *aarch64* Linaro Toolchain, which can be obtained from 23168a03efeSNithin Dabilpuram `here <https://releases.linaro.org/components/toolchain/binaries/7.4-2019.02/aarch64-linux-gnu/>`_. 23268a03efeSNithin Dabilpuram 23368a03efeSNithin Dabilpuram Alternatively, the Marvell SDK also provides GNU GCC toolchain, which is 23468a03efeSNithin Dabilpuram optimized for cnxk CPU. 23568a03efeSNithin Dabilpuram 236443b949eSDavid Marchand#. **Rootfile system** 23768a03efeSNithin Dabilpuram 23868a03efeSNithin Dabilpuram Any *aarch64* supporting filesystem may be used. For example, 23968a03efeSNithin Dabilpuram Ubuntu 15.10 (Wily) or 16.04 LTS (Xenial) userland which can be obtained 24068a03efeSNithin Dabilpuram from `<http://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/ubuntu-base-16.04.1-base-arm64.tar.gz>`_. 24168a03efeSNithin Dabilpuram 24268a03efeSNithin Dabilpuram Alternatively, the Marvell SDK provides the buildroot based root filesystem. 24368a03efeSNithin Dabilpuram The SDK includes all the above prerequisites necessary to bring up the cnxk board. 24468a03efeSNithin Dabilpuram 24568a03efeSNithin Dabilpuram- Follow the DPDK :doc:`../linux_gsg/index` to setup the basic DPDK environment. 24668a03efeSNithin Dabilpuram 24768a03efeSNithin Dabilpuram 24868a03efeSNithin DabilpuramDebugging Options 24968a03efeSNithin Dabilpuram----------------- 25068a03efeSNithin Dabilpuram 25168a03efeSNithin Dabilpuram.. _table_cnxk_common_debug_options: 25268a03efeSNithin Dabilpuram 25368a03efeSNithin Dabilpuram.. table:: cnxk common debug options 25468a03efeSNithin Dabilpuram 25568a03efeSNithin Dabilpuram +---+------------+-------------------------------------------------------+ 25668a03efeSNithin Dabilpuram | # | Component | EAL log command | 25768a03efeSNithin Dabilpuram +===+============+=======================================================+ 258455a771fSAnoob Joseph | 1 | Common | --log-level='pmd\.common\.cnxk\.base,8' | 25968a03efeSNithin Dabilpuram +---+------------+-------------------------------------------------------+ 260455a771fSAnoob Joseph | 2 | Mailbox | --log-level='pmd\.common\.cnxk\.mbox,8' | 26168a03efeSNithin Dabilpuram +---+------------+-------------------------------------------------------+ 26268a03efeSNithin Dabilpuram 26368a03efeSNithin DabilpuramDebugfs support 26468a03efeSNithin Dabilpuram~~~~~~~~~~~~~~~ 26568a03efeSNithin Dabilpuram 26668a03efeSNithin DabilpuramThe **RVU AF Linux kernel driver** provides support to dump RVU blocks 26768a03efeSNithin Dabilpuramcontext or stats using debugfs. 26868a03efeSNithin Dabilpuram 26968a03efeSNithin DabilpuramEnable ``debugfs`` by: 27068a03efeSNithin Dabilpuram 271443b949eSDavid Marchand#. Compile kernel with debugfs enabled, i.e ``CONFIG_DEBUG_FS=y``. 272443b949eSDavid Marchand 273443b949eSDavid Marchand#. Boot OCTEON CN9K/CN10K with debugfs supported kernel. 274443b949eSDavid Marchand 275443b949eSDavid Marchand#. Verify ``debugfs`` mounted by default "mount | grep -i debugfs" or mount it manually by using. 27668a03efeSNithin Dabilpuram 27768a03efeSNithin Dabilpuram .. code-block:: console 27868a03efeSNithin Dabilpuram 27968a03efeSNithin Dabilpuram # mount -t debugfs none /sys/kernel/debug 28068a03efeSNithin Dabilpuram 28168a03efeSNithin DabilpuramCurrently ``debugfs`` supports the following RVU blocks NIX, NPA, NPC, NDC, 28268a03efeSNithin DabilpuramSSO & RPM. 28368a03efeSNithin Dabilpuram 28468a03efeSNithin DabilpuramThe file structure under ``/sys/kernel/debug`` is as follows 28568a03efeSNithin Dabilpuram 28668a03efeSNithin Dabilpuram.. code-block:: console 28768a03efeSNithin Dabilpuram 28868a03efeSNithin Dabilpuram octeontx2/ 28968a03efeSNithin Dabilpuram | 29068a03efeSNithin Dabilpuram cn10k/ 29168a03efeSNithin Dabilpuram |-- rpm 29268a03efeSNithin Dabilpuram | |-- rpm0 29368a03efeSNithin Dabilpuram | | '-- lmac0 29468a03efeSNithin Dabilpuram | | '-- stats 29568a03efeSNithin Dabilpuram | |-- rpm1 29668a03efeSNithin Dabilpuram | | |-- lmac0 29768a03efeSNithin Dabilpuram | | | '-- stats 29868a03efeSNithin Dabilpuram | | '-- lmac1 29968a03efeSNithin Dabilpuram | | '-- stats 30068a03efeSNithin Dabilpuram | '-- rpm2 30168a03efeSNithin Dabilpuram | '-- lmac0 30268a03efeSNithin Dabilpuram | '-- stats 30368a03efeSNithin Dabilpuram |-- cpt 30468a03efeSNithin Dabilpuram | |-- cpt_engines_info 30568a03efeSNithin Dabilpuram | |-- cpt_engines_sts 30668a03efeSNithin Dabilpuram | |-- cpt_err_info 30768a03efeSNithin Dabilpuram | |-- cpt_lfs_info 30868a03efeSNithin Dabilpuram | '-- cpt_pc 30968a03efeSNithin Dabilpuram |---- nix 31068a03efeSNithin Dabilpuram | |-- cq_ctx 31168a03efeSNithin Dabilpuram | |-- ndc_rx_cache 31268a03efeSNithin Dabilpuram | |-- ndc_rx_hits_miss 31368a03efeSNithin Dabilpuram | |-- ndc_tx_cache 31468a03efeSNithin Dabilpuram | |-- ndc_tx_hits_miss 31568a03efeSNithin Dabilpuram | |-- qsize 31668a03efeSNithin Dabilpuram | |-- rq_ctx 31768a03efeSNithin Dabilpuram | '-- sq_ctx 31868a03efeSNithin Dabilpuram |-- npa 31968a03efeSNithin Dabilpuram | |-- aura_ctx 32068a03efeSNithin Dabilpuram | |-- ndc_cache 32168a03efeSNithin Dabilpuram | |-- ndc_hits_miss 32268a03efeSNithin Dabilpuram | |-- pool_ctx 32368a03efeSNithin Dabilpuram | '-- qsize 32468a03efeSNithin Dabilpuram |-- npc 32568a03efeSNithin Dabilpuram | |-- mcam_info 32668a03efeSNithin Dabilpuram | |-- mcam_rules 32768a03efeSNithin Dabilpuram | '-- rx_miss_act_stats 32868a03efeSNithin Dabilpuram |-- rsrc_alloc 32968a03efeSNithin Dabilpuram '-- sso 33068a03efeSNithin Dabilpuram |-- hws 33168a03efeSNithin Dabilpuram | '-- sso_hws_info 33268a03efeSNithin Dabilpuram '-- hwgrp 33368a03efeSNithin Dabilpuram |-- sso_hwgrp_aq_thresh 33468a03efeSNithin Dabilpuram |-- sso_hwgrp_iaq_walk 33568a03efeSNithin Dabilpuram |-- sso_hwgrp_pc 33668a03efeSNithin Dabilpuram |-- sso_hwgrp_free_list_walk 33768a03efeSNithin Dabilpuram |-- sso_hwgrp_ient_walk 33868a03efeSNithin Dabilpuram '-- sso_hwgrp_taq_walk 33968a03efeSNithin Dabilpuram 34068a03efeSNithin DabilpuramRVU block LF allocation: 34168a03efeSNithin Dabilpuram 34268a03efeSNithin Dabilpuram.. code-block:: console 34368a03efeSNithin Dabilpuram 34468a03efeSNithin Dabilpuram cat /sys/kernel/debug/cn10k/rsrc_alloc 34568a03efeSNithin Dabilpuram 34668a03efeSNithin Dabilpuram pcifunc NPA NIX SSO GROUP SSOWS TIM CPT 34768a03efeSNithin Dabilpuram PF1 0 0 34868a03efeSNithin Dabilpuram PF4 1 34968a03efeSNithin Dabilpuram PF13 0, 1 0, 1 0 35068a03efeSNithin Dabilpuram 35168a03efeSNithin DabilpuramRPM example usage: 35268a03efeSNithin Dabilpuram 35368a03efeSNithin Dabilpuram.. code-block:: console 35468a03efeSNithin Dabilpuram 35568a03efeSNithin Dabilpuram cat /sys/kernel/debug/cn10k/rpm/rpm0/lmac0/stats 35668a03efeSNithin Dabilpuram 35768a03efeSNithin Dabilpuram =======Link Status====== 35868a03efeSNithin Dabilpuram 35968a03efeSNithin Dabilpuram Link is UP 25000 Mbps 36068a03efeSNithin Dabilpuram 36168a03efeSNithin Dabilpuram =======NIX RX_STATS(rpm port level)====== 36268a03efeSNithin Dabilpuram 36368a03efeSNithin Dabilpuram rx_ucast_frames: 0 36468a03efeSNithin Dabilpuram rx_mcast_frames: 0 36568a03efeSNithin Dabilpuram rx_bcast_frames: 0 36668a03efeSNithin Dabilpuram rx_frames: 0 36768a03efeSNithin Dabilpuram rx_bytes: 0 36868a03efeSNithin Dabilpuram rx_drops: 0 36968a03efeSNithin Dabilpuram rx_errors: 0 37068a03efeSNithin Dabilpuram 37168a03efeSNithin Dabilpuram =======NIX TX_STATS(rpm port level)====== 37268a03efeSNithin Dabilpuram 37368a03efeSNithin Dabilpuram tx_ucast_frames: 0 37468a03efeSNithin Dabilpuram tx_mcast_frames: 0 37568a03efeSNithin Dabilpuram tx_bcast_frames: 0 37668a03efeSNithin Dabilpuram tx_frames: 0 37768a03efeSNithin Dabilpuram tx_bytes: 0 37868a03efeSNithin Dabilpuram tx_drops: 0 37968a03efeSNithin Dabilpuram 38068a03efeSNithin Dabilpuram =======rpm RX_STATS====== 38168a03efeSNithin Dabilpuram 38268a03efeSNithin Dabilpuram Octets of received packets: 0 38368a03efeSNithin Dabilpuram Octets of received packets with out error: 0 38468a03efeSNithin Dabilpuram Received packets with alignment errors: 0 38568a03efeSNithin Dabilpuram Control/PAUSE packets received: 0 38668a03efeSNithin Dabilpuram Packets received with Frame too long Errors: 0 38768a03efeSNithin Dabilpuram Packets received with a1nrange length Errors: 0 38868a03efeSNithin Dabilpuram Received packets: 0 38968a03efeSNithin Dabilpuram Packets received with FrameCheckSequenceErrors: 0 39068a03efeSNithin Dabilpuram Packets received with VLAN header: 0 39168a03efeSNithin Dabilpuram Error packets: 0 3929c30a6f3SHenry Nadeau Packets received with unicast DMAC: 0 39368a03efeSNithin Dabilpuram Packets received with multicast DMAC: 0 39468a03efeSNithin Dabilpuram Packets received with broadcast DMAC: 0 39568a03efeSNithin Dabilpuram Dropped packets: 0 39668a03efeSNithin Dabilpuram Total frames received on interface: 0 39768a03efeSNithin Dabilpuram Packets received with an octet count < 64: 0 39868a03efeSNithin Dabilpuram Packets received with an octet count == 64: 0 39968a03efeSNithin Dabilpuram Packets received with an octet count of 65–127: 0 40068a03efeSNithin Dabilpuram Packets received with an octet count of 128-255: 0 40168a03efeSNithin Dabilpuram Packets received with an octet count of 256-511: 0 40268a03efeSNithin Dabilpuram Packets received with an octet count of 512-1023: 0 40368a03efeSNithin Dabilpuram Packets received with an octet count of 1024-1518: 0 40468a03efeSNithin Dabilpuram Packets received with an octet count of > 1518: 0 40568a03efeSNithin Dabilpuram Oversized Packets: 0 40668a03efeSNithin Dabilpuram Jabber Packets: 0 40768a03efeSNithin Dabilpuram Fragmented Packets: 0 40868a03efeSNithin Dabilpuram CBFC(class based flow control) pause frames received for class 0: 0 40968a03efeSNithin Dabilpuram CBFC pause frames received for class 1: 0 41068a03efeSNithin Dabilpuram CBFC pause frames received for class 2: 0 41168a03efeSNithin Dabilpuram CBFC pause frames received for class 3: 0 41268a03efeSNithin Dabilpuram CBFC pause frames received for class 4: 0 41368a03efeSNithin Dabilpuram CBFC pause frames received for class 5: 0 41468a03efeSNithin Dabilpuram CBFC pause frames received for class 6: 0 41568a03efeSNithin Dabilpuram CBFC pause frames received for class 7: 0 41668a03efeSNithin Dabilpuram CBFC pause frames received for class 8: 0 41768a03efeSNithin Dabilpuram CBFC pause frames received for class 9: 0 41868a03efeSNithin Dabilpuram CBFC pause frames received for class 10: 0 41968a03efeSNithin Dabilpuram CBFC pause frames received for class 11: 0 42068a03efeSNithin Dabilpuram CBFC pause frames received for class 12: 0 42168a03efeSNithin Dabilpuram CBFC pause frames received for class 13: 0 42268a03efeSNithin Dabilpuram CBFC pause frames received for class 14: 0 42368a03efeSNithin Dabilpuram CBFC pause frames received for class 15: 0 42468a03efeSNithin Dabilpuram MAC control packets received: 0 42568a03efeSNithin Dabilpuram 42668a03efeSNithin Dabilpuram =======rpm TX_STATS====== 42768a03efeSNithin Dabilpuram 42868a03efeSNithin Dabilpuram Total octets sent on the interface: 0 42968a03efeSNithin Dabilpuram Total octets transmitted OK: 0 43068a03efeSNithin Dabilpuram Control/Pause frames sent: 0 43168a03efeSNithin Dabilpuram Total frames transmitted OK: 0 43268a03efeSNithin Dabilpuram Total frames sent with VLAN header: 0 43368a03efeSNithin Dabilpuram Error Packets: 0 43468a03efeSNithin Dabilpuram Packets sent to unicast DMAC: 0 43568a03efeSNithin Dabilpuram Packets sent to the multicast DMAC: 0 43668a03efeSNithin Dabilpuram Packets sent to a broadcast DMAC: 0 43768a03efeSNithin Dabilpuram Packets sent with an octet count == 64: 0 43868a03efeSNithin Dabilpuram Packets sent with an octet count of 65–127: 0 43968a03efeSNithin Dabilpuram Packets sent with an octet count of 128-255: 0 44068a03efeSNithin Dabilpuram Packets sent with an octet count of 256-511: 0 44168a03efeSNithin Dabilpuram Packets sent with an octet count of 512-1023: 0 44268a03efeSNithin Dabilpuram Packets sent with an octet count of 1024-1518: 0 44368a03efeSNithin Dabilpuram Packets sent with an octet count of > 1518: 0 44468a03efeSNithin Dabilpuram CBFC(class based flow control) pause frames transmitted for class 0: 0 44568a03efeSNithin Dabilpuram CBFC pause frames transmitted for class 1: 0 44668a03efeSNithin Dabilpuram CBFC pause frames transmitted for class 2: 0 44768a03efeSNithin Dabilpuram CBFC pause frames transmitted for class 3: 0 44868a03efeSNithin Dabilpuram CBFC pause frames transmitted for class 4: 0 44968a03efeSNithin Dabilpuram CBFC pause frames transmitted for class 5: 0 45068a03efeSNithin Dabilpuram CBFC pause frames transmitted for class 6: 0 45168a03efeSNithin Dabilpuram CBFC pause frames transmitted for class 7: 0 45268a03efeSNithin Dabilpuram CBFC pause frames transmitted for class 8: 0 45368a03efeSNithin Dabilpuram CBFC pause frames transmitted for class 9: 0 45468a03efeSNithin Dabilpuram CBFC pause frames transmitted for class 10: 0 45568a03efeSNithin Dabilpuram CBFC pause frames transmitted for class 11: 0 45668a03efeSNithin Dabilpuram CBFC pause frames transmitted for class 12: 0 45768a03efeSNithin Dabilpuram CBFC pause frames transmitted for class 13: 0 45868a03efeSNithin Dabilpuram CBFC pause frames transmitted for class 14: 0 45968a03efeSNithin Dabilpuram CBFC pause frames transmitted for class 15: 0 46068a03efeSNithin Dabilpuram MAC control packets sent: 0 46168a03efeSNithin Dabilpuram Total frames sent on the interface: 0 46268a03efeSNithin Dabilpuram 46368a03efeSNithin DabilpuramCPT example usage: 46468a03efeSNithin Dabilpuram 46568a03efeSNithin Dabilpuram.. code-block:: console 46668a03efeSNithin Dabilpuram 46768a03efeSNithin Dabilpuram cat /sys/kernel/debug/cn10k/cpt/cpt_pc 46868a03efeSNithin Dabilpuram 46968a03efeSNithin Dabilpuram CPT instruction requests 0 47068a03efeSNithin Dabilpuram CPT instruction latency 0 47168a03efeSNithin Dabilpuram CPT NCB read requests 0 47268a03efeSNithin Dabilpuram CPT NCB read latency 0 47368a03efeSNithin Dabilpuram CPT read requests caused by UC fills 0 47468a03efeSNithin Dabilpuram CPT active cycles pc 1395642 47568a03efeSNithin Dabilpuram CPT clock count pc 5579867595493 47668a03efeSNithin Dabilpuram 47768a03efeSNithin DabilpuramNIX example usage: 47868a03efeSNithin Dabilpuram 47968a03efeSNithin Dabilpuram.. code-block:: console 48068a03efeSNithin Dabilpuram 48168a03efeSNithin Dabilpuram Usage: echo <nixlf> [cq number/all] > /sys/kernel/debug/cn10k/nix/cq_ctx 48268a03efeSNithin Dabilpuram cat /sys/kernel/debug/cn10k/nix/cq_ctx 48368a03efeSNithin Dabilpuram echo 0 0 > /sys/kernel/debug/cn10k/nix/cq_ctx 48468a03efeSNithin Dabilpuram cat /sys/kernel/debug/cn10k/nix/cq_ctx 48568a03efeSNithin Dabilpuram 48668a03efeSNithin Dabilpuram =====cq_ctx for nixlf:0 and qidx:0 is===== 48768a03efeSNithin Dabilpuram W0: base 158ef1a00 48868a03efeSNithin Dabilpuram 48968a03efeSNithin Dabilpuram W1: wrptr 0 49068a03efeSNithin Dabilpuram W1: avg_con 0 49168a03efeSNithin Dabilpuram W1: cint_idx 0 49268a03efeSNithin Dabilpuram W1: cq_err 0 49368a03efeSNithin Dabilpuram W1: qint_idx 0 49468a03efeSNithin Dabilpuram W1: bpid 0 49568a03efeSNithin Dabilpuram W1: bp_ena 0 49668a03efeSNithin Dabilpuram 49768a03efeSNithin Dabilpuram W2: update_time 31043 49868a03efeSNithin Dabilpuram W2:avg_level 255 49968a03efeSNithin Dabilpuram W2: head 0 50068a03efeSNithin Dabilpuram W2:tail 0 50168a03efeSNithin Dabilpuram 50268a03efeSNithin Dabilpuram W3: cq_err_int_ena 5 50368a03efeSNithin Dabilpuram W3:cq_err_int 0 50468a03efeSNithin Dabilpuram W3: qsize 4 50568a03efeSNithin Dabilpuram W3:caching 1 50668a03efeSNithin Dabilpuram W3: substream 0x000 50768a03efeSNithin Dabilpuram W3: ena 1 50868a03efeSNithin Dabilpuram W3: drop_ena 1 50968a03efeSNithin Dabilpuram W3: drop 64 51068a03efeSNithin Dabilpuram W3: bp 0 51168a03efeSNithin Dabilpuram 51268a03efeSNithin DabilpuramNPA example usage: 51368a03efeSNithin Dabilpuram 51468a03efeSNithin Dabilpuram.. code-block:: console 51568a03efeSNithin Dabilpuram 51668a03efeSNithin Dabilpuram Usage: echo <npalf> [pool number/all] > /sys/kernel/debug/cn10k/npa/pool_ctx 51768a03efeSNithin Dabilpuram cat /sys/kernel/debug/cn10k/npa/pool_ctx 51868a03efeSNithin Dabilpuram echo 0 0 > /sys/kernel/debug/cn10k/npa/pool_ctx 51968a03efeSNithin Dabilpuram cat /sys/kernel/debug/cn10k/npa/pool_ctx 52068a03efeSNithin Dabilpuram 52168a03efeSNithin Dabilpuram ======POOL : 0======= 52268a03efeSNithin Dabilpuram W0: Stack base 1375bff00 52368a03efeSNithin Dabilpuram W1: ena 1 52468a03efeSNithin Dabilpuram W1: nat_align 1 52568a03efeSNithin Dabilpuram W1: stack_caching 1 52668a03efeSNithin Dabilpuram W1: stack_way_mask 0 52768a03efeSNithin Dabilpuram W1: buf_offset 1 52868a03efeSNithin Dabilpuram W1: buf_size 19 52968a03efeSNithin Dabilpuram W2: stack_max_pages 24315 53068a03efeSNithin Dabilpuram W2: stack_pages 24314 53168a03efeSNithin Dabilpuram W3: op_pc 267456 53268a03efeSNithin Dabilpuram W4: stack_offset 2 53368a03efeSNithin Dabilpuram W4: shift 5 53468a03efeSNithin Dabilpuram W4: avg_level 255 53568a03efeSNithin Dabilpuram W4: avg_con 0 53668a03efeSNithin Dabilpuram W4: fc_ena 0 53768a03efeSNithin Dabilpuram W4: fc_stype 0 53868a03efeSNithin Dabilpuram W4: fc_hyst_bits 0 53968a03efeSNithin Dabilpuram W4: fc_up_crossing 0 54068a03efeSNithin Dabilpuram W4: update_time 62993 54168a03efeSNithin Dabilpuram W5: fc_addr 0 54268a03efeSNithin Dabilpuram W6: ptr_start 1593adf00 54368a03efeSNithin Dabilpuram W7: ptr_end 180000000 54468a03efeSNithin Dabilpuram W8: err_int 0 54568a03efeSNithin Dabilpuram W8: err_int_ena 7 54668a03efeSNithin Dabilpuram W8: thresh_int 0 54768a03efeSNithin Dabilpuram W8: thresh_int_ena 0 54868a03efeSNithin Dabilpuram W8: thresh_up 0 54968a03efeSNithin Dabilpuram W8: thresh_qint_idx 0 55068a03efeSNithin Dabilpuram W8: err_qint_idx 0 55168a03efeSNithin Dabilpuram 55268a03efeSNithin DabilpuramNPC example usage: 55368a03efeSNithin Dabilpuram 55468a03efeSNithin Dabilpuram.. code-block:: console 55568a03efeSNithin Dabilpuram 55668a03efeSNithin Dabilpuram cat /sys/kernel/debug/cn10k/npc/mcam_info 55768a03efeSNithin Dabilpuram 55868a03efeSNithin Dabilpuram NPC MCAM info: 55968a03efeSNithin Dabilpuram RX keywidth : 224bits 56068a03efeSNithin Dabilpuram TX keywidth : 224bits 56168a03efeSNithin Dabilpuram 56268a03efeSNithin Dabilpuram MCAM entries : 2048 56368a03efeSNithin Dabilpuram Reserved : 158 56468a03efeSNithin Dabilpuram Available : 1890 56568a03efeSNithin Dabilpuram 56668a03efeSNithin Dabilpuram MCAM counters : 512 56768a03efeSNithin Dabilpuram Reserved : 1 56868a03efeSNithin Dabilpuram Available : 511 56968a03efeSNithin Dabilpuram 57068a03efeSNithin DabilpuramSSO example usage: 57168a03efeSNithin Dabilpuram 57268a03efeSNithin Dabilpuram.. code-block:: console 57368a03efeSNithin Dabilpuram 57468a03efeSNithin Dabilpuram Usage: echo [<hws>/all] > /sys/kernel/debug/cn10k/sso/hws/sso_hws_info 57568a03efeSNithin Dabilpuram echo 0 > /sys/kernel/debug/cn10k/sso/hws/sso_hws_info 57668a03efeSNithin Dabilpuram 57768a03efeSNithin Dabilpuram ================================================== 57868a03efeSNithin Dabilpuram SSOW HWS[0] Arbitration State 0x0 57968a03efeSNithin Dabilpuram SSOW HWS[0] Guest Machine Control 0x0 58068a03efeSNithin Dabilpuram SSOW HWS[0] SET[0] Group Mask[0] 0xffffffffffffffff 58168a03efeSNithin Dabilpuram SSOW HWS[0] SET[0] Group Mask[1] 0xffffffffffffffff 58268a03efeSNithin Dabilpuram SSOW HWS[0] SET[0] Group Mask[2] 0xffffffffffffffff 58368a03efeSNithin Dabilpuram SSOW HWS[0] SET[0] Group Mask[3] 0xffffffffffffffff 58468a03efeSNithin Dabilpuram SSOW HWS[0] SET[1] Group Mask[0] 0xffffffffffffffff 58568a03efeSNithin Dabilpuram SSOW HWS[0] SET[1] Group Mask[1] 0xffffffffffffffff 58668a03efeSNithin Dabilpuram SSOW HWS[0] SET[1] Group Mask[2] 0xffffffffffffffff 58768a03efeSNithin Dabilpuram SSOW HWS[0] SET[1] Group Mask[3] 0xffffffffffffffff 58868a03efeSNithin Dabilpuram ================================================== 58968a03efeSNithin Dabilpuram 59068a03efeSNithin DabilpuramCompile DPDK 59168a03efeSNithin Dabilpuram------------ 59268a03efeSNithin Dabilpuram 59368a03efeSNithin DabilpuramDPDK may be compiled either natively on OCTEON CN9K/CN10K platform or cross-compiled on 59468a03efeSNithin Dabilpuraman x86 based platform. 595592fdee4SShijith ThottonThe Meson build option ``enable_iova_as_pa`` should be set to false 596592fdee4SShijith Thottonbecause on CNXK platforms, IOVA is same as the virtual address. 597592fdee4SShijith ThottonDisabling the iova field in the mbuf frees it up to be used as a dynamic field. 59868a03efeSNithin Dabilpuram 59968a03efeSNithin DabilpuramNative Compilation 60068a03efeSNithin Dabilpuram~~~~~~~~~~~~~~~~~~ 60168a03efeSNithin Dabilpuram 602c06b6b9fSJerin JacobRefer to :doc:`../linux_gsg/build_dpdk` for generic native builds. 603c06b6b9fSJerin Jacob 604c06b6b9fSJerin JacobCN9K: 605c06b6b9fSJerin Jacob 60668a03efeSNithin Dabilpuram.. code-block:: console 60768a03efeSNithin Dabilpuram 608592fdee4SShijith Thotton meson setup -Dplatform=cn9k -Denable_iova_as_pa=false build 609c06b6b9fSJerin Jacob ninja -C build 610c06b6b9fSJerin Jacob 611c06b6b9fSJerin JacobCN10K: 612c06b6b9fSJerin Jacob 613c06b6b9fSJerin Jacob.. code-block:: console 614c06b6b9fSJerin Jacob 615592fdee4SShijith Thotton meson setup -Dplatform=cn10k -Denable_iova_as_pa=false build 61668a03efeSNithin Dabilpuram ninja -C build 61768a03efeSNithin Dabilpuram 61868a03efeSNithin DabilpuramCross Compilation 61968a03efeSNithin Dabilpuram~~~~~~~~~~~~~~~~~ 62068a03efeSNithin Dabilpuram 62168a03efeSNithin DabilpuramRefer to :doc:`../linux_gsg/cross_build_dpdk_for_arm64` for generic arm64 details. 62268a03efeSNithin Dabilpuram 62333e71acfSJerin JacobCN9K: 62433e71acfSJerin Jacob 62533e71acfSJerin Jacob.. code-block:: console 62633e71acfSJerin Jacob 627592fdee4SShijith Thotton meson setup -Denable_iova_as_pa=false build --cross-file config/arm/arm64_cn9k_linux_gcc 62833e71acfSJerin Jacob ninja -C build 62933e71acfSJerin Jacob 63033e71acfSJerin JacobCN10K: 63133e71acfSJerin Jacob 63268a03efeSNithin Dabilpuram.. code-block:: console 63368a03efeSNithin Dabilpuram 634592fdee4SShijith Thotton meson setup -Denable_iova_as_pa=false build --cross-file config/arm/arm64_cn10k_linux_gcc 63568a03efeSNithin Dabilpuram ninja -C build 63668a03efeSNithin Dabilpuram 63768a03efeSNithin Dabilpuram.. note:: 63868a03efeSNithin Dabilpuram 63968a03efeSNithin Dabilpuram By default, meson cross compilation uses ``aarch64-linux-gnu-gcc`` toolchain, 64068a03efeSNithin Dabilpuram if Marvell toolchain is available then it can be used by overriding the 64168a03efeSNithin Dabilpuram c, cpp, ar, strip ``binaries`` attributes to respective Marvell 64268a03efeSNithin Dabilpuram toolchain binaries in ``config/arm/arm64_cn10k_linux_gcc`` file. 643e47565a7SNithin Dabilpuram 644e47565a7SNithin DabilpuramEnvironment Variables 645e47565a7SNithin Dabilpuram~~~~~~~~~~~~~~~~~~~~~ 646e47565a7SNithin Dabilpuram 647e47565a7SNithin Dabilpuram* ``BPHY_INTR_MLOCK_DISABLE`` 648e47565a7SNithin Dabilpuram When defined disables memory locking in 649e47565a7SNithin Dabilpuram BPHY environment. 650e47565a7SNithin Dabilpuram 651e47565a7SNithin Dabilpuram* ``ROC_CN10K_MBOX_TIMEOUT``, ``ROC_MBOX_TIMEOUT`` 652e47565a7SNithin Dabilpuram When set, overrides MBOX timeout by value in milli seconds. 653e47565a7SNithin Dabilpuram 654e47565a7SNithin Dabilpuram* ``ETH_SEC_IV_OVR`` 655e47565a7SNithin Dabilpuram When set, overrides outbound inline SA IV. By default IV is generated 656e47565a7SNithin Dabilpuram by HW. Format of variable is string of comma separated one byte values as 657e47565a7SNithin Dabilpuram for ex: "0x0, 0x10, 0x20, ..." 658