blob: 989366a4039c80023d96d7ac574fbf1f5d0058bc [file] [log] [blame]
Aviad Krawczyk51ba9022017-08-21 23:55:47 +08001Linux Kernel Driver for Huawei Intelligent NIC(HiNIC) family
2============================================================
3
4Overview:
5=========
6HiNIC is a network interface card for the Data Center Area.
7
8The driver supports a range of link-speed devices (10GbE, 25GbE, 40GbE, etc.).
9The driver supports also a negotiated and extendable feature set.
10
11Some HiNIC devices support SR-IOV. This driver is used for Physical Function
12(PF).
13
14HiNIC devices support MSI-X interrupt vector for each Tx/Rx queue and
15adaptive interrupt moderation.
16
17HiNIC devices support also various offload features such as checksum offload,
18TCP Transmit Segmentation Offload(TSO), Receive-Side Scaling(RSS) and
19LRO(Large Receive Offload).
20
21
22Supported PCI vendor ID/device IDs:
23===================================
24
2519e5:1822 - HiNIC PF
26
27
28Driver Architecture and Source Code:
29====================================
30
31hinic_dev - Implement a Logical Network device that is independent from
32specific HW details about HW data structure formats.
33
34hinic_hwdev - Implement the HW details of the device and include the components
35for accessing the PCI NIC.
36
37hinic_hwdev contains the following components:
38===============================================
39
40HW Interface:
41=============
42
43The interface for accessing the pci device (DMA memory and PCI BARs).
44(hinic_hw_if.c, hinic_hw_if.h)
45
46Configuration Status Registers Area that describes the HW Registers on the
47configuration and status BAR0. (hinic_hw_csr.h)
48
49MGMT components:
50================
51
52Asynchronous Event Queues(AEQs) - The event queues for receiving messages from
53the MGMT modules on the cards. (hinic_hw_eqs.c, hinic_hw_eqs.h)
54
55Application Programmable Interface commands(API CMD) - Interface for sending
56MGMT commands to the card. (hinic_hw_api_cmd.c, hinic_hw_api_cmd.h)
57
58Management (MGMT) - the PF to MGMT channel that uses API CMD for sending MGMT
59commands to the card and receives notifications from the MGMT modules on the
60card by AEQs. Also set the addresses of the IO CMDQs in HW.
61(hinic_hw_mgmt.c, hinic_hw_mgmt.h)
62
63IO components:
64==============
65
66Completion Event Queues(CEQs) - The completion Event Queues that describe IO
67tasks that are finished. (hinic_hw_eqs.c, hinic_hw_eqs.h)
68
69Work Queues(WQ) - Contain the memory and operations for use by CMD queues and
70the Queue Pairs. The WQ is a Memory Block in a Page. The Block contains
71pointers to Memory Areas that are the Memory for the Work Queue Elements(WQEs).
72(hinic_hw_wq.c, hinic_hw_wq.h)
73
74Command Queues(CMDQ) - The queues for sending commands for IO management and is
75used to set the QPs addresses in HW. The commands completion events are
76accumulated on the CEQ that is configured to receive the CMDQ completion events.
77(hinic_hw_cmdq.c, hinic_hw_cmdq.h)
78
79Queue Pairs(QPs) - The HW Receive and Send queues for Receiving and Transmitting
80Data. (hinic_hw_qp.c, hinic_hw_qp.h, hinic_hw_qp_ctxt.h)
81
82IO - de/constructs all the IO components. (hinic_hw_io.c, hinic_hw_io.h)
83
84HW device:
85==========
86
87HW device - de/constructs the HW Interface, the MGMT components on the
88initialization of the driver and the IO components on the case of Interface
89UP/DOWN Events. (hinic_hw_dev.c, hinic_hw_dev.h)
90
91
92hinic_dev contains the following components:
93===============================================
94
95PCI ID table - Contains the supported PCI Vendor/Device IDs.
96(hinic_pci_tbl.h)
97
98Port Commands - Send commands to the HW device for port management
99(MAC, Vlan, MTU, ...). (hinic_port.c, hinic_port.h)
100
101Tx Queues - Logical Tx Queues that use the HW Send Queues for transmit.
102The Logical Tx queue is not dependent on the format of the HW Send Queue.
103(hinic_tx.c, hinic_tx.h)
104
105Rx Queues - Logical Rx Queues that use the HW Receive Queues for receive.
106The Logical Rx queue is not dependent on the format of the HW Receive Queue.
107(hinic_rx.c, hinic_rx.h)
108
109hinic_dev - de/constructs the Logical Tx and Rx Queues.
110(hinic_main.c, hinic_dev.h)
111
112
113Miscellaneous:
114=============
115
116Common functions that are used by HW and Logical Device.
117(hinic_common.c, hinic_common.h)
118
119
120Support
121=======
122
123If an issue is identified with the released source code on the supported kernel
124with a supported adapter, email the specific information related to the issue to
125aviad.krawczyk@huawei.com.