@@ -1537,6 +1537,9 @@ static int hclge_configure(struct hclge_dev *hdev)
15371537 cfg .default_speed , ret );
15381538 return ret ;
15391539 }
1540+ hdev -> hw .mac .req_speed = hdev -> hw .mac .speed ;
1541+ hdev -> hw .mac .req_autoneg = AUTONEG_ENABLE ;
1542+ hdev -> hw .mac .req_duplex = DUPLEX_FULL ;
15401543
15411544 hclge_parse_link_mode (hdev , cfg .speed_ability );
15421545
@@ -1766,7 +1769,8 @@ static int hclge_vport_setup(struct hclge_vport *vport, u16 num_tqps)
17661769
17671770 nic -> pdev = hdev -> pdev ;
17681771 nic -> ae_algo = & ae_algo ;
1769- nic -> numa_node_mask = hdev -> numa_node_mask ;
1772+ bitmap_copy (nic -> numa_node_mask .bits , hdev -> numa_node_mask .bits ,
1773+ MAX_NUMNODES );
17701774 nic -> kinfo .io_base = hdev -> hw .hw .io_base ;
17711775
17721776 ret = hclge_knic_setup (vport , num_tqps ,
@@ -2458,7 +2462,8 @@ static int hclge_init_roce_base_info(struct hclge_vport *vport)
24582462
24592463 roce -> pdev = nic -> pdev ;
24602464 roce -> ae_algo = nic -> ae_algo ;
2461- roce -> numa_node_mask = nic -> numa_node_mask ;
2465+ bitmap_copy (roce -> numa_node_mask .bits , nic -> numa_node_mask .bits ,
2466+ MAX_NUMNODES );
24622467
24632468 return 0 ;
24642469}
@@ -3342,9 +3347,9 @@ hclge_set_phy_link_ksettings(struct hnae3_handle *handle,
33423347 return ret ;
33433348 }
33443349
3345- hdev -> hw .mac .autoneg = cmd -> base .autoneg ;
3346- hdev -> hw .mac .speed = cmd -> base .speed ;
3347- hdev -> hw .mac .duplex = cmd -> base .duplex ;
3350+ hdev -> hw .mac .req_autoneg = cmd -> base .autoneg ;
3351+ hdev -> hw .mac .req_speed = cmd -> base .speed ;
3352+ hdev -> hw .mac .req_duplex = cmd -> base .duplex ;
33483353 linkmode_copy (hdev -> hw .mac .advertising , cmd -> link_modes .advertising );
33493354
33503355 return 0 ;
@@ -3377,9 +3382,9 @@ static int hclge_tp_port_init(struct hclge_dev *hdev)
33773382 if (!hnae3_dev_phy_imp_supported (hdev ))
33783383 return 0 ;
33793384
3380- cmd .base .autoneg = hdev -> hw .mac .autoneg ;
3381- cmd .base .speed = hdev -> hw .mac .speed ;
3382- cmd .base .duplex = hdev -> hw .mac .duplex ;
3385+ cmd .base .autoneg = hdev -> hw .mac .req_autoneg ;
3386+ cmd .base .speed = hdev -> hw .mac .req_speed ;
3387+ cmd .base .duplex = hdev -> hw .mac .req_duplex ;
33833388 linkmode_copy (cmd .link_modes .advertising , hdev -> hw .mac .advertising );
33843389
33853390 return hclge_set_phy_link_ksettings (& hdev -> vport -> nic , & cmd );
@@ -7952,8 +7957,7 @@ static void hclge_set_timer_task(struct hnae3_handle *handle, bool enable)
79527957 /* Set the DOWN flag here to disable link updating */
79537958 set_bit (HCLGE_STATE_DOWN , & hdev -> state );
79547959
7955- /* flush memory to make sure DOWN is seen by service task */
7956- smp_mb__before_atomic ();
7960+ smp_mb__after_atomic (); /* flush memory to make sure DOWN is seen by service task */
79577961 hclge_flush_link_update (hdev );
79587962 }
79597963}
@@ -9906,6 +9910,7 @@ static int hclge_set_vlan_protocol_type(struct hclge_dev *hdev)
99069910static int hclge_init_vlan_filter (struct hclge_dev * hdev )
99079911{
99089912 struct hclge_vport * vport ;
9913+ bool enable = true;
99099914 int ret ;
99109915 int i ;
99119916
@@ -9925,8 +9930,12 @@ static int hclge_init_vlan_filter(struct hclge_dev *hdev)
99259930 vport -> cur_vlan_fltr_en = true;
99269931 }
99279932
9933+ if (test_bit (HNAE3_DEV_SUPPORT_VLAN_FLTR_MDF_B , hdev -> ae_dev -> caps ) &&
9934+ !test_bit (HNAE3_DEV_SUPPORT_PORT_VLAN_BYPASS_B , hdev -> ae_dev -> caps ))
9935+ enable = false;
9936+
99289937 return hclge_set_vlan_filter_ctrl (hdev , HCLGE_FILTER_TYPE_PORT ,
9929- HCLGE_FILTER_FE_INGRESS , true , 0 );
9938+ HCLGE_FILTER_FE_INGRESS , enable , 0 );
99309939}
99319940
99329941static int hclge_init_vlan_type (struct hclge_dev * hdev )
@@ -11622,16 +11631,10 @@ static int hclge_init_ae_dev(struct hnae3_ae_dev *ae_dev)
1162211631 if (ret )
1162311632 goto out ;
1162411633
11625- ret = hclge_devlink_init (hdev );
11626- if (ret )
11627- goto err_pci_uninit ;
11628-
11629- devl_lock (hdev -> devlink );
11630-
1163111634 /* Firmware command queue initialize */
1163211635 ret = hclge_comm_cmd_queue_init (hdev -> pdev , & hdev -> hw .hw );
1163311636 if (ret )
11634- goto err_devlink_uninit ;
11637+ goto err_pci_uninit ;
1163511638
1163611639 /* Firmware command initialize */
1163711640 ret = hclge_comm_cmd_init (hdev -> ae_dev , & hdev -> hw .hw , & hdev -> fw_version ,
@@ -11759,7 +11762,7 @@ static int hclge_init_ae_dev(struct hnae3_ae_dev *ae_dev)
1175911762
1176011763 ret = hclge_update_port_info (hdev );
1176111764 if (ret )
11762- goto err_mdiobus_unreg ;
11765+ goto err_ptp_uninit ;
1176311766
1176411767 INIT_KFIFO (hdev -> mac_tnl_log );
1176511768
@@ -11799,17 +11802,21 @@ static int hclge_init_ae_dev(struct hnae3_ae_dev *ae_dev)
1179911802 dev_warn (& pdev -> dev ,
1180011803 "failed to wake on lan init, ret = %d\n" , ret );
1180111804
11805+ ret = hclge_devlink_init (hdev );
11806+ if (ret )
11807+ goto err_ptp_uninit ;
11808+
1180211809 hclge_state_init (hdev );
1180311810 hdev -> last_reset_time = jiffies ;
1180411811
1180511812 dev_info (& hdev -> pdev -> dev , "%s driver initialization finished.\n" ,
1180611813 HCLGE_DRIVER_NAME );
1180711814
1180811815 hclge_task_schedule (hdev , round_jiffies_relative (HZ ));
11809-
11810- devl_unlock (hdev -> devlink );
1181111816 return 0 ;
1181211817
11818+ err_ptp_uninit :
11819+ hclge_ptp_uninit (hdev );
1181311820err_mdiobus_unreg :
1181411821 if (hdev -> hw .mac .phydev )
1181511822 mdiobus_unregister (hdev -> hw .mac .mdio_bus );
@@ -11819,9 +11826,6 @@ static int hclge_init_ae_dev(struct hnae3_ae_dev *ae_dev)
1181911826 pci_free_irq_vectors (pdev );
1182011827err_cmd_uninit :
1182111828 hclge_comm_cmd_uninit (hdev -> ae_dev , & hdev -> hw .hw );
11822- err_devlink_uninit :
11823- devl_unlock (hdev -> devlink );
11824- hclge_devlink_uninit (hdev );
1182511829err_pci_uninit :
1182611830 pcim_iounmap (pdev , hdev -> hw .hw .io_base );
1182711831 pci_release_regions (pdev );
0 commit comments