@@ -3466,8 +3466,6 @@ static void hclge_rss_init_cfg(struct hclge_dev *hdev)
34663466 struct hclge_vport * vport = hdev -> vport ;
34673467 int i ;
34683468
3469- netdev_rss_key_fill (vport -> rss_hash_key , HCLGE_RSS_KEY_SIZE );
3470-
34713469 for (i = 0 ; i < hdev -> num_vmdq_vport + 1 ; i ++ ) {
34723470 vport [i ].rss_tuple_sets .ipv4_tcp_en =
34733471 HCLGE_RSS_INPUT_TUPLE_OTHER ;
@@ -3487,6 +3485,8 @@ static void hclge_rss_init_cfg(struct hclge_dev *hdev)
34873485 HCLGE_RSS_INPUT_TUPLE_OTHER ;
34883486
34893487 vport [i ].rss_algo = HCLGE_RSS_HASH_ALGO_TOEPLITZ ;
3488+
3489+ netdev_rss_key_fill (vport [i ].rss_hash_key , HCLGE_RSS_KEY_SIZE );
34903490 }
34913491
34923492 hclge_rss_indir_init_cfg (hdev );
@@ -3584,6 +3584,9 @@ static int hclge_unmap_ring_frm_vector(struct hnae3_handle *handle,
35843584 struct hclge_dev * hdev = vport -> back ;
35853585 int vector_id , ret ;
35863586
3587+ if (test_bit (HCLGE_STATE_RST_HANDLING , & hdev -> state ))
3588+ return 0 ;
3589+
35873590 vector_id = hclge_get_vector_index (hdev , vector );
35883591 if (vector_id < 0 ) {
35893592 dev_err (& handle -> pdev -> dev ,
@@ -3781,13 +3784,16 @@ static int hclge_ae_start(struct hnae3_handle *handle)
37813784 clear_bit (HCLGE_STATE_DOWN , & hdev -> state );
37823785 mod_timer (& hdev -> service_timer , jiffies + HZ );
37833786
3787+ /* reset tqp stats */
3788+ hclge_reset_tqp_stats (handle );
3789+
3790+ if (test_bit (HCLGE_STATE_RST_HANDLING , & hdev -> state ))
3791+ return 0 ;
3792+
37843793 ret = hclge_mac_start_phy (hdev );
37853794 if (ret )
37863795 return ret ;
37873796
3788- /* reset tqp stats */
3789- hclge_reset_tqp_stats (handle );
3790-
37913797 return 0 ;
37923798}
37933799
@@ -3797,6 +3803,12 @@ static void hclge_ae_stop(struct hnae3_handle *handle)
37973803 struct hclge_dev * hdev = vport -> back ;
37983804 int i ;
37993805
3806+ del_timer_sync (& hdev -> service_timer );
3807+ cancel_work_sync (& hdev -> service_task );
3808+
3809+ if (test_bit (HCLGE_STATE_RST_HANDLING , & hdev -> state ))
3810+ return ;
3811+
38003812 for (i = 0 ; i < vport -> alloc_tqps ; i ++ )
38013813 hclge_tqp_enable (hdev , i , 0 , false);
38023814
@@ -3807,8 +3819,6 @@ static void hclge_ae_stop(struct hnae3_handle *handle)
38073819
38083820 /* reset tqp stats */
38093821 hclge_reset_tqp_stats (handle );
3810- del_timer_sync (& hdev -> service_timer );
3811- cancel_work_sync (& hdev -> service_task );
38123822 hclge_update_link_status (hdev );
38133823}
38143824
@@ -4940,6 +4950,9 @@ void hclge_reset_tqp(struct hnae3_handle *handle, u16 queue_id)
49404950 u16 queue_gid ;
49414951 int ret ;
49424952
4953+ if (test_bit (HCLGE_STATE_RST_HANDLING , & hdev -> state ))
4954+ return ;
4955+
49434956 queue_gid = hclge_covert_handle_qid_global (handle , queue_id );
49444957
49454958 ret = hclge_tqp_enable (hdev , queue_id , 0 , false);
0 commit comments