Back to home page

OSCL-LXR

 
 

    


0001 .. SPDX-License-Identifier: GPL-2.0
0002 
0003 ============================================================
0004 Linux Kernel Driver for Huawei Intelligent NIC(HiNIC) family
0005 ============================================================
0006 
0007 Overview:
0008 =========
0009 HiNIC is a network interface card for the Data Center Area.
0010 
0011 The driver supports a range of link-speed devices (10GbE, 25GbE, 40GbE, etc.).
0012 The driver supports also a negotiated and extendable feature set.
0013 
0014 Some HiNIC devices support SR-IOV. This driver is used for Physical Function
0015 (PF).
0016 
0017 HiNIC devices support MSI-X interrupt vector for each Tx/Rx queue and
0018 adaptive interrupt moderation.
0019 
0020 HiNIC devices support also various offload features such as checksum offload,
0021 TCP Transmit Segmentation Offload(TSO), Receive-Side Scaling(RSS) and
0022 LRO(Large Receive Offload).
0023 
0024 
0025 Supported PCI vendor ID/device IDs:
0026 ===================================
0027 
0028 19e5:1822 - HiNIC PF
0029 
0030 
0031 Driver Architecture and Source Code:
0032 ====================================
0033 
0034 hinic_dev - Implement a Logical Network device that is independent from
0035 specific HW details about HW data structure formats.
0036 
0037 hinic_hwdev - Implement the HW details of the device and include the components
0038 for accessing the PCI NIC.
0039 
0040 hinic_hwdev contains the following components:
0041 ===============================================
0042 
0043 HW Interface:
0044 =============
0045 
0046 The interface for accessing the pci device (DMA memory and PCI BARs).
0047 (hinic_hw_if.c, hinic_hw_if.h)
0048 
0049 Configuration Status Registers Area that describes the HW Registers on the
0050 configuration and status BAR0. (hinic_hw_csr.h)
0051 
0052 MGMT components:
0053 ================
0054 
0055 Asynchronous Event Queues(AEQs) - The event queues for receiving messages from
0056 the MGMT modules on the cards. (hinic_hw_eqs.c, hinic_hw_eqs.h)
0057 
0058 Application Programmable Interface commands(API CMD) - Interface for sending
0059 MGMT commands to the card. (hinic_hw_api_cmd.c, hinic_hw_api_cmd.h)
0060 
0061 Management (MGMT) - the PF to MGMT channel that uses API CMD for sending MGMT
0062 commands to the card and receives notifications from the MGMT modules on the
0063 card by AEQs. Also set the addresses of the IO CMDQs in HW.
0064 (hinic_hw_mgmt.c, hinic_hw_mgmt.h)
0065 
0066 IO components:
0067 ==============
0068 
0069 Completion Event Queues(CEQs) - The completion Event Queues that describe IO
0070 tasks that are finished. (hinic_hw_eqs.c, hinic_hw_eqs.h)
0071 
0072 Work Queues(WQ) - Contain the memory and operations for use by CMD queues and
0073 the Queue Pairs. The WQ is a Memory Block in a Page. The Block contains
0074 pointers to Memory Areas that are the Memory for the Work Queue Elements(WQEs).
0075 (hinic_hw_wq.c, hinic_hw_wq.h)
0076 
0077 Command Queues(CMDQ) - The queues for sending commands for IO management and is
0078 used to set the QPs addresses in HW. The commands completion events are
0079 accumulated on the CEQ that is configured to receive the CMDQ completion events.
0080 (hinic_hw_cmdq.c, hinic_hw_cmdq.h)
0081 
0082 Queue Pairs(QPs) - The HW Receive and Send queues for Receiving and Transmitting
0083 Data. (hinic_hw_qp.c, hinic_hw_qp.h, hinic_hw_qp_ctxt.h)
0084 
0085 IO - de/constructs all the IO components. (hinic_hw_io.c, hinic_hw_io.h)
0086 
0087 HW device:
0088 ==========
0089 
0090 HW device - de/constructs the HW Interface, the MGMT components on the
0091 initialization of the driver and the IO components on the case of Interface
0092 UP/DOWN Events. (hinic_hw_dev.c, hinic_hw_dev.h)
0093 
0094 
0095 hinic_dev contains the following components:
0096 ===============================================
0097 
0098 PCI ID table - Contains the supported PCI Vendor/Device IDs.
0099 (hinic_pci_tbl.h)
0100 
0101 Port Commands - Send commands to the HW device for port management
0102 (MAC, Vlan, MTU, ...). (hinic_port.c, hinic_port.h)
0103 
0104 Tx Queues - Logical Tx Queues that use the HW Send Queues for transmit.
0105 The Logical Tx queue is not dependent on the format of the HW Send Queue.
0106 (hinic_tx.c, hinic_tx.h)
0107 
0108 Rx Queues - Logical Rx Queues that use the HW Receive Queues for receive.
0109 The Logical Rx queue is not dependent on the format of the HW Receive Queue.
0110 (hinic_rx.c, hinic_rx.h)
0111 
0112 hinic_dev - de/constructs the Logical Tx and Rx Queues.
0113 (hinic_main.c, hinic_dev.h)
0114 
0115 
0116 Miscellaneous
0117 =============
0118 
0119 Common functions that are used by HW and Logical Device.
0120 (hinic_common.c, hinic_common.h)
0121 
0122 
0123 Support
0124 =======
0125 
0126 If an issue is identified with the released source code on the supported kernel
0127 with a supported adapter, email the specific information related to the issue to
0128 aviad.krawczyk@huawei.com.