• Wei Hu (Xavier)'s avatar
    IB/hns: Add code for refreshing CQ CI using TPTR · 8f3e9f3e
    Wei Hu (Xavier) authored
    This patch added the code for refreshing CQ CI using TPTR in hip06
    SoC.
    
    We will send a doorbell to hardware for refreshing CQ CI when user
    succeed to poll a cqe. But it will be failed if the doorbell has
    been blocked. So hardware will read a special buffer called TPTR
    to get the lastest CI value when the cq is almost full.
    
    This patch support the special CI buffer as follows:
    a) Alloc the memory for TPTR in the hns_roce_tptr_init function and
       free it in hns_roce_tptr_free function, these two functions will
       be called in probe function and in the remove function.
    b) Add the code for computing offset(every cq need 2 bytes) and
       write the dma addr to every cq context to notice hardware in the
       function named hns_roce_v1_write_cqc.
    c) Add code for mapping TPTR buffer to user space in function named
       hns_roce_mmap. The mapping distinguish TPTR and UAR of user mode
       by vm_pgoff(0: UAR, 1: TPTR, others:invaild) in hip06.
    d) Alloc the code for refreshing CQ CI using TPTR in the function
       named hns_roce_v1_poll_cq.
    e) Add some variable definitions to the related structure.
    Signed-off-by: default avatarWei Hu (Xavier) <xavier.huwei@huawei.com>
    Signed-off-by: default avatarDongdong Huang(Donald) <hdd.huang@huawei.com>
    Signed-off-by: default avatarLijun Ou <oulijun@huawei.com>
    Signed-off-by: default avatarSalil Mehta  <salil.mehta@huawei.com>
    Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
    8f3e9f3e
hns_roce_main.c 30.1 KB