@@ -3086,9 +3086,7 @@ static void hclge_push_link_status(struct hclge_dev *hdev)
3086
3086
3087
3087
static void hclge_update_link_status (struct hclge_dev * hdev )
3088
3088
{
3089
- struct hnae3_handle * rhandle = & hdev -> vport [0 ].roce ;
3090
3089
struct hnae3_handle * handle = & hdev -> vport [0 ].nic ;
3091
- struct hnae3_client * rclient = hdev -> roce_client ;
3092
3090
struct hnae3_client * client = hdev -> nic_client ;
3093
3091
int state ;
3094
3092
int ret ;
@@ -3112,8 +3110,15 @@ static void hclge_update_link_status(struct hclge_dev *hdev)
3112
3110
3113
3111
client -> ops -> link_status_change (handle , state );
3114
3112
hclge_config_mac_tnl_int (hdev , state );
3115
- if (rclient && rclient -> ops -> link_status_change )
3116
- rclient -> ops -> link_status_change (rhandle , state );
3113
+
3114
+ if (test_bit (HCLGE_STATE_ROCE_REGISTERED , & hdev -> state )) {
3115
+ struct hnae3_handle * rhandle = & hdev -> vport [0 ].roce ;
3116
+ struct hnae3_client * rclient = hdev -> roce_client ;
3117
+
3118
+ if (rclient && rclient -> ops -> link_status_change )
3119
+ rclient -> ops -> link_status_change (rhandle ,
3120
+ state );
3121
+ }
3117
3122
3118
3123
hclge_push_link_status (hdev );
3119
3124
}
@@ -11319,6 +11324,12 @@ static int hclge_init_client_instance(struct hnae3_client *client,
11319
11324
return ret ;
11320
11325
}
11321
11326
11327
+ static bool hclge_uninit_need_wait (struct hclge_dev * hdev )
11328
+ {
11329
+ return test_bit (HCLGE_STATE_RST_HANDLING , & hdev -> state ) ||
11330
+ test_bit (HCLGE_STATE_LINK_UPDATING , & hdev -> state );
11331
+ }
11332
+
11322
11333
static void hclge_uninit_client_instance (struct hnae3_client * client ,
11323
11334
struct hnae3_ae_dev * ae_dev )
11324
11335
{
@@ -11327,7 +11338,7 @@ static void hclge_uninit_client_instance(struct hnae3_client *client,
11327
11338
11328
11339
if (hdev -> roce_client ) {
11329
11340
clear_bit (HCLGE_STATE_ROCE_REGISTERED , & hdev -> state );
11330
- while (test_bit ( HCLGE_STATE_RST_HANDLING , & hdev -> state ))
11341
+ while (hclge_uninit_need_wait ( hdev ))
11331
11342
msleep (HCLGE_WAIT_RESET_DONE );
11332
11343
11333
11344
hdev -> roce_client -> ops -> uninit_instance (& vport -> roce , 0 );
0 commit comments