• Huazhong Tan's avatar
    net: hns3: refactor the precedure of PF FLR · 8627bded
    Huazhong Tan authored
    Currently, the actual work of PF FLR is handled in the reset task,
    which is asynchronous. So in some case, if the preparing and
    rebuilding are not done, then the PF FLR will trigger some problems,
    for example, makes hardware go into chaos.
    
    So this patch separates the process of PF FLR from reset task, and
    adds a semaphore to serialize this reset and others.
    
    When FLR's preparing fails, if there has other higher level reset
    pending or failing times less than the HCLGE_FLR_RETRY_CNT, this
    preparing should be retried, otherwise PF and its VF may get into
    wrong state.
    
    BTW, while the hardware reports misc interrupt during pcie_flr(),
    the driver can not receive this interrupt anymore, so disable it
    when hclge_flr_prepare() return, and re-enable it when enter
    hclge_flr_done().
    Signed-off-by: default avatarHuazhong Tan <tanhuazhong@huawei.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    8627bded
hclge_main.c 279 KB