4439df5ea62e58902e964582b21e41254cc5197d
[dpdk.git] / doc / guides / nics / hns3.rst
1 ..  SPDX-License-Identifier: BSD-3-Clause
2     Copyright(c) 2018-2019 HiSilicon Limited.
3
4 HNS3 Poll Mode Driver
5 ===============================
6
7 The hns3 PMD (**librte_net_hns3**) provides poll mode driver support
8 for the inbuilt HiSilicon Network Subsystem(HNS) network engine
9 found in the HiSilicon Kunpeng 920 SoC and Kunpeng 930 SoC .
10
11 Features
12 --------
13
14 Features of the HNS3 PMD are:
15
16 - Multiple queues for TX and RX
17 - Receive Side Scaling (RSS)
18 - Packet type information
19 - Checksum offload
20 - TSO offload
21 - LRO offload
22 - Promiscuous mode
23 - Multicast mode
24 - Port hardware statistics
25 - Jumbo frames
26 - Link state information
27 - Interrupt mode for RX
28 - VLAN stripping and inserting
29 - QinQ inserting
30 - DCB
31 - Scattered and gather for TX and RX
32 - Vector Poll mode driver
33 - Dump register
34 - SR-IOV VF
35 - Multi-process
36 - MAC/VLAN filter
37 - MTU update
38 - NUMA support
39 - Generic flow API
40 - IEEE1588/802.1AS timestamping
41
42 Prerequisites
43 -------------
44 - Get the information about Kunpeng920 chip using
45   `<https://www.hisilicon.com/en/products/Kunpeng>`_.
46
47 - Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to
48   setup the basic DPDK environment.
49
50
51 Pre-Installation Configuration
52 ------------------------------
53
54 Config File Options
55 ~~~~~~~~~~~~~~~~~~~
56
57 The following options can be modified in the ``config/rte_config.h`` file.
58
59 - ``RTE_LIBRTE_HNS3_MAX_TQP_NUM_PER_PF`` (default ``256``)
60
61   Number of MAX queues reserved for PF.
62
63 Runtime Config Options
64 ~~~~~~~~~~~~~~~~~~~~~~
65
66 - ``rx_func_hint`` (default ``none``)
67
68   Used to select Rx burst function, supported value are ``vec``, ``sve``,
69   ``simple``, ``common``.
70   ``vec``, if supported use the ``vec`` Rx function which indicates the
71   default vector algorithm, neon for Kunpeng Arm platform.
72   ``sve``, if supported use the ``sve`` Rx function which indicates the
73   sve algorithm.
74   ``simple``, if supported use the ``simple`` Rx function which indicates
75   the scalar simple algorithm.
76   ``common``, if supported use the ``common`` Rx function which indicates
77   the scalar scattered algorithm.
78
79   When provided parameter is not supported, ``vec`` usage condition will
80   be first checked, if meets, use the ``vec``. Then, ``simple``, at last
81   ``common``.
82
83   For example::
84   -a 0000:7d:00.0,rx_func_hint=simple
85
86 - ``tx_func_hint`` (default ``none``)
87
88   Used to select Tx burst function, supported value are ``vec``, ``sve``,
89   ``simple``, ``common``.
90   ``vec``, if supported use the ``vec`` Tx function which indicates the
91   default vector algorithm, neon for Kunpeng Arm platform.
92   ``sve``, if supported use the ``sve`` Tx function which indicates the
93   sve algorithm.
94   ``simple``, if supported use the ``simple`` Tx function which indicates
95   the scalar simple algorithm.
96   ``common``, if supported use the ``common`` Tx function which indicates
97   the scalar algorithm.
98
99   When provided parameter is not supported, ``vec`` usage condition will
100   be first checked, if meets, use the ``vec``. Then, ``simple``, at last
101   ``common``.
102
103   For example::
104   -a 0000:7d:00.0,tx_func_hint=common
105
106 - ``dev_caps_mask`` (default ``0``)
107
108   Used to mask the capability which queried from firmware.
109   This args take hexadecimal bitmask where each bit represents whether mask
110   corresponding capability. eg. If the capability is 0xFFFF queried from
111   firmware, and the args value is 0xF which means the bit0~bit3 should be
112   masked off, then the capability will be 0xFFF0.
113   Its main purpose is to debug and avoid problems.
114
115   For example::
116   -a 0000:7d:00.0,dev_caps_mask=0xF
117
118 Driver compilation and testing
119 ------------------------------
120
121 Refer to the document :ref:`compiling and testing a PMD for a NIC <pmd_build_and_test>`
122 for details.
123
124 Limitations or Known issues
125 ---------------------------
126 Currently, we only support VF device is bound to vfio_pci or
127 igb_uio and then driven by DPDK driver when PF is driven by
128 kernel mode hns3 ethdev driver, VF is not supported when PF
129 is driven by DPDK driver.
130
131 Build with ICC is not supported yet.
132 X86-32, Power8, ARMv7 and BSD are not supported yet.