• Jie Wang's avatar
    net: hns3: fix a deadlock problem when config TC during resetting · be5e816d
    Jie Wang authored
    When config TC during the reset process, may cause a deadlock, the flow is
    as below:
                                 pf reset start
                                     │
                                     ▼
                                  ......
    setup tc                         │
        │                            ▼
        ▼                      DOWN: napi_disable()
    napi_disable()(skip)             │
        │                            │
        ▼                            ▼
      ......                      ......
        │                            │
        ▼                            │
    napi_enable()                    │
                                     ▼
                               UINIT: netif_napi_del()
                                     │
                                     ▼
                                  ......
                                     │
                                     ▼
                               INIT: netif_napi_add()
                                     │
                                     ▼
                                  ......                 global reset start
                                     │                      │
                                     ▼                      ▼
                               UP: napi_enable()(skip)    ......
                                     │                      │
                                     ▼                      ▼
                                  ......                 napi_disable()
    
    In reset process, the driver will DOWN the port and then UINIT, in this
    case, the setup tc process will UP the port before UINIT, so cause the
    problem. Adds a DOWN process in UINIT to fix it.
    
    Fixes: bb6b94a8 ("net: hns3: Add reset interface implementation in client")
    Signed-off-by: default avatarJie Wang <wangjie125@huawei.com>
    Signed-off-by: default avatarJijie Shao <shaojijie@huawei.com>
    Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    be5e816d
hns3_enet.c 159 KB