xref: /dpdk/doc/guides/nics/mana.rst (revision b583b9a1bb49e86aa0937d55415713282000c536)
1517ed6e2SLong Li..  SPDX-License-Identifier: BSD-3-Clause
2517ed6e2SLong Li    Copyright 2022 Microsoft Corporation
3517ed6e2SLong Li
4517ed6e2SLong LiMANA poll mode driver library
5517ed6e2SLong Li=============================
6517ed6e2SLong Li
7517ed6e2SLong LiThe MANA poll mode driver library (**librte_net_mana**) implements support
8517ed6e2SLong Lifor Microsoft Azure Network Adapter VF in SR-IOV context.
9517ed6e2SLong Li
10517ed6e2SLong LiPrerequisites
11517ed6e2SLong Li-------------
12517ed6e2SLong Li
13517ed6e2SLong LiThis driver relies on external libraries and kernel drivers
14517ed6e2SLong Lifor resources allocations and initialization.
15517ed6e2SLong LiThe following dependencies are not part of DPDK
16517ed6e2SLong Liand must be installed separately:
17517ed6e2SLong Li
18517ed6e2SLong Li- **libibverbs** (provided by rdma-core package)
19517ed6e2SLong Li
20517ed6e2SLong Li  User space verbs framework used by librte_net_mana.
21517ed6e2SLong Li  This library provides a generic interface between the kernel
22517ed6e2SLong Li  and low-level user space drivers such as libmana.
23517ed6e2SLong Li
24517ed6e2SLong Li  It allows slow and privileged operations
25517ed6e2SLong Li  (context initialization, hardware resources allocations)
26517ed6e2SLong Li  to be managed by the kernel and fast operations to never leave user space.
2780744041SLong Li  The minimum required rdma-core version is v44.
28517ed6e2SLong Li
29517ed6e2SLong Li  In most cases, rdma-core is shipped as a package with an OS distribution.
30517ed6e2SLong Li  User can also install the upstream version of the rdma-core from
31517ed6e2SLong Li  https://github.com/linux-rdma/rdma-core.
32517ed6e2SLong Li
33517ed6e2SLong Li- **libmana** (provided by rdma-core package)
34517ed6e2SLong Li
35517ed6e2SLong Li  Low-level user space driver library
36517ed6e2SLong Li  for Microsoft Azure Network Adapter devices,
37517ed6e2SLong Li  it is automatically loaded by libibverbs.
3880744041SLong Li  The minimum required version of rdma-core with libmana is v44.
39517ed6e2SLong Li
40517ed6e2SLong Li- **Kernel modules**
41517ed6e2SLong Li
42517ed6e2SLong Li  They provide the kernel-side verbs API and low level device drivers
43517ed6e2SLong Li  that manage actual hardware initialization
44517ed6e2SLong Li  and resources sharing with user space processes.
4580744041SLong Li  The minimum required Linux kernel version is 6.2.
46517ed6e2SLong Li
47517ed6e2SLong Li  Unlike most other PMDs, these modules must remain loaded
48517ed6e2SLong Li  and bound to their devices:
49517ed6e2SLong Li
50517ed6e2SLong Li  - mana: Ethernet device driver that provides kernel network interfaces.
51517ed6e2SLong Li  - mana_ib: InifiniBand device driver.
52517ed6e2SLong Li  - ib_uverbs: user space driver for verbs (entry point for libibverbs).
53517ed6e2SLong Li
54517ed6e2SLong LiDriver compilation and testing
55517ed6e2SLong Li------------------------------
56517ed6e2SLong Li
57517ed6e2SLong LiRefer to the document
58517ed6e2SLong Li:ref:`compiling and testing a PMD for a NIC <pmd_build_and_test>` for details.
59517ed6e2SLong Li
60*b583b9a1SFerruh YigitRuntime Configuration
61*b583b9a1SFerruh Yigit---------------------
62517ed6e2SLong Li
63517ed6e2SLong LiThe user can specify below argument in devargs.
64517ed6e2SLong Li
65517ed6e2SLong Li#.  ``mac``:
66517ed6e2SLong Li
67517ed6e2SLong Li    Specify the MAC address for this device.
68517ed6e2SLong Li    If it is set, the driver probes and loads the NIC
69517ed6e2SLong Li    with a matching MAC address.
70517ed6e2SLong Li    If it is not set, the driver probes on all the NICs on the PCI device.
71517ed6e2SLong Li    The default value is not set,
72517ed6e2SLong Li    meaning all the NICs will be probed and loaded.
73517ed6e2SLong Li    User can specify multiple mac=xx:xx:xx:xx:xx:xx arguments for up to 8 NICs.
74