@@ -2653,8 +2653,17 @@ static int hclge_cfg_mac_speed_dup_h(struct hnae3_handle *handle, int speed,
26532653{
26542654 struct hclge_vport * vport = hclge_get_vport (handle );
26552655 struct hclge_dev * hdev = vport -> back ;
2656+ int ret ;
2657+
2658+ ret = hclge_cfg_mac_speed_dup (hdev , speed , duplex , lane_num );
2659+
2660+ if (ret )
2661+ return ret ;
26562662
2657- return hclge_cfg_mac_speed_dup (hdev , speed , duplex , lane_num );
2663+ hdev -> hw .mac .req_speed = speed ;
2664+ hdev -> hw .mac .req_duplex = duplex ;
2665+
2666+ return 0 ;
26582667}
26592668
26602669static int hclge_set_autoneg_en (struct hclge_dev * hdev , bool enable )
@@ -2956,17 +2965,20 @@ static int hclge_mac_init(struct hclge_dev *hdev)
29562965 if (!test_bit (HCLGE_STATE_RST_HANDLING , & hdev -> state ))
29572966 hdev -> hw .mac .duplex = HCLGE_MAC_FULL ;
29582967
2959- ret = hclge_cfg_mac_speed_dup_hw (hdev , hdev -> hw .mac .speed ,
2960- hdev -> hw .mac .duplex , hdev -> hw .mac .lane_num );
2961- if (ret )
2962- return ret ;
2963-
29642968 if (hdev -> hw .mac .support_autoneg ) {
29652969 ret = hclge_set_autoneg_en (hdev , hdev -> hw .mac .autoneg );
29662970 if (ret )
29672971 return ret ;
29682972 }
29692973
2974+ if (!hdev -> hw .mac .autoneg ) {
2975+ ret = hclge_cfg_mac_speed_dup_hw (hdev , hdev -> hw .mac .req_speed ,
2976+ hdev -> hw .mac .req_duplex ,
2977+ hdev -> hw .mac .lane_num );
2978+ if (ret )
2979+ return ret ;
2980+ }
2981+
29702982 mac -> link = 0 ;
29712983
29722984 if (mac -> user_fec_mode & BIT (HNAE3_FEC_USER_DEF )) {
@@ -11444,7 +11456,7 @@ static void hclge_pci_uninit(struct hclge_dev *hdev)
1144411456
1144511457 pcim_iounmap (pdev , hdev -> hw .hw .io_base );
1144611458 pci_free_irq_vectors (pdev );
11447- pci_release_mem_regions (pdev );
11459+ pci_release_regions (pdev );
1144811460 pci_disable_device (pdev );
1144911461}
1145011462
@@ -11516,8 +11528,8 @@ static void hclge_reset_done(struct hnae3_ae_dev *ae_dev)
1151611528 dev_err (& hdev -> pdev -> dev , "fail to rebuild, ret=%d\n" , ret );
1151711529
1151811530 hdev -> reset_type = HNAE3_NONE_RESET ;
11519- clear_bit ( HCLGE_STATE_RST_HANDLING , & hdev -> state );
11520- up (& hdev -> reset_sem );
11531+ if ( test_and_clear_bit ( HCLGE_STATE_RST_HANDLING , & hdev -> state ))
11532+ up (& hdev -> reset_sem );
1152111533}
1152211534
1152311535static void hclge_clear_resetting_state (struct hclge_dev * hdev )
0 commit comments