• O
    !231 ROH: Support ROH basic functions and adapt ROH mode for RDMA/hns driver · 1789f7b7
    openeuler-ci-bot 提交于
    Merge Pull Request from: @chenke1978 
     
    [Description]
    The ROH module driver consists of the ROH Core and ROH DRV
    modules, which work with hardware to implement communication
    between nodes through HCCS packets.
    ROH Core is a protocol stack of the ROH architecture. It provides
    related services for upper layers by invoking operation interfaces
    provided by the ROH DRV.
    The ROH DRV implements the lower layer functions of the ROH
    featureand provides a series of interfaces for operating hardware
    for the ROH Core.
    
    This patch supports basic ROH functions, such as: sysfs file node
    query, abnormal interrupt handling, reset capability and dfx
    information query.
    
    RDMA/hns supports ROH mode, mainly adapted to the device id of ROH,
    and the different capabilities and features of RDMA/hns in ROH mode.
    
    [Testing]
    kernel options:
    CONFIG_ROH=m
    CONFIG_ROH_HNS=m
    
    Test passed with below step:
    1. Using a hardware environment that supports ROH, insmod net/hns,
     RDMA/hns and ROH related drivers:
     insmod hnae3.ko
     insmod hclge.ko
     insmod hns3.ko
     insmod roh_core.ko
     insmod hns-roh-v1.ko
     insmod hns-roce-hw-v2.ko
    2. Check whether ROH generates the corresponding sysfs node:
     ls /sys/class/roh/hns3_0/
    3. Check whether the abnormal interrupt information of roh is correct.
     The down or up of the network device link corresponding to roh will
     cause the roh abnormal interrupt count to increase.
     cat /proc/interrupts | grep roh
    4. Configure the network port ip and check whether the ip/mac has the
     correct mapping relationship.
    5. Query eid to check whether it complies with ip conversion rules:
     cat /sys/class/roh/hns3_0/node_eid
    6. Use ping to check Ethernet communication is normal.
    7. Use perftest to check RDMA communication is normal.
    8. Use the "ethtool --reset eth1 all" command to trigger a reset. 
     
    Link:https://gitee.com/openeuler/kernel/pulls/231 
    Reviewed-by: Ling Mingqiang <lingmingqiang@huawei.com> 
    Reviewed-by: Xie XiuQi <xiexiuqi@huawei.com> 
    Reviewed-by: Zheng Zengkai <zhengzengkai@huawei.com> 
    Signed-off-by: Zheng Zengkai <zhengzengkai@huawei.com> 
    1789f7b7
hns_roce_main.c 30.0 KB