@@ -84,6 +84,7 @@ static const struct pci_device_id ae_algo_pci_tbl[] = {
8484 {PCI_VDEVICE (HUAWEI , HNAE3_DEV_ID_50GE_RDMA ), 0 },
8585 {PCI_VDEVICE (HUAWEI , HNAE3_DEV_ID_50GE_RDMA_MACSEC ), 0 },
8686 {PCI_VDEVICE (HUAWEI , HNAE3_DEV_ID_100G_RDMA_MACSEC ), 0 },
87+ {PCI_VDEVICE (HUAWEI , HNAE3_DEV_ID_200G_RDMA ), 0 },
8788 /* required last entry */
8889 {0 , }
8990};
@@ -622,7 +623,7 @@ static u8 *hclge_tqps_get_strings(struct hnae3_handle *handle, u8 *data)
622623{
623624 struct hnae3_knic_private_info * kinfo = & handle -> kinfo ;
624625 u8 * buff = data ;
625- int i = 0 ;
626+ int i ;
626627
627628 for (i = 0 ; i < kinfo -> num_tqps ; i ++ ) {
628629 struct hclge_tqp * tqp = container_of (handle -> kinfo .tqp [i ],
@@ -965,6 +966,9 @@ static int hclge_parse_speed(int speed_cmd, int *speed)
965966 case 5 :
966967 * speed = HCLGE_MAC_SPEED_100G ;
967968 break ;
969+ case 8 :
970+ * speed = HCLGE_MAC_SPEED_200G ;
971+ break ;
968972 default :
969973 return - EINVAL ;
970974 }
@@ -1004,6 +1008,9 @@ static int hclge_check_port_speed(struct hnae3_handle *handle, u32 speed)
10041008 case HCLGE_MAC_SPEED_100G :
10051009 speed_bit = HCLGE_SUPPORT_100G_BIT ;
10061010 break ;
1011+ case HCLGE_MAC_SPEED_200G :
1012+ speed_bit = HCLGE_SUPPORT_200G_BIT ;
1013+ break ;
10071014 default :
10081015 return - EINVAL ;
10091016 }
@@ -1014,7 +1021,7 @@ static int hclge_check_port_speed(struct hnae3_handle *handle, u32 speed)
10141021 return - EINVAL ;
10151022}
10161023
1017- static void hclge_convert_setting_sr (struct hclge_mac * mac , u8 speed_ability )
1024+ static void hclge_convert_setting_sr (struct hclge_mac * mac , u16 speed_ability )
10181025{
10191026 if (speed_ability & HCLGE_SUPPORT_10G_BIT )
10201027 linkmode_set_bit (ETHTOOL_LINK_MODE_10000baseSR_Full_BIT ,
@@ -1031,9 +1038,12 @@ static void hclge_convert_setting_sr(struct hclge_mac *mac, u8 speed_ability)
10311038 if (speed_ability & HCLGE_SUPPORT_100G_BIT )
10321039 linkmode_set_bit (ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT ,
10331040 mac -> supported );
1041+ if (speed_ability & HCLGE_SUPPORT_200G_BIT )
1042+ linkmode_set_bit (ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT ,
1043+ mac -> supported );
10341044}
10351045
1036- static void hclge_convert_setting_lr (struct hclge_mac * mac , u8 speed_ability )
1046+ static void hclge_convert_setting_lr (struct hclge_mac * mac , u16 speed_ability )
10371047{
10381048 if (speed_ability & HCLGE_SUPPORT_10G_BIT )
10391049 linkmode_set_bit (ETHTOOL_LINK_MODE_10000baseLR_Full_BIT ,
@@ -1050,9 +1060,13 @@ static void hclge_convert_setting_lr(struct hclge_mac *mac, u8 speed_ability)
10501060 if (speed_ability & HCLGE_SUPPORT_100G_BIT )
10511061 linkmode_set_bit (ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT ,
10521062 mac -> supported );
1063+ if (speed_ability & HCLGE_SUPPORT_200G_BIT )
1064+ linkmode_set_bit (
1065+ ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT ,
1066+ mac -> supported );
10531067}
10541068
1055- static void hclge_convert_setting_cr (struct hclge_mac * mac , u8 speed_ability )
1069+ static void hclge_convert_setting_cr (struct hclge_mac * mac , u16 speed_ability )
10561070{
10571071 if (speed_ability & HCLGE_SUPPORT_10G_BIT )
10581072 linkmode_set_bit (ETHTOOL_LINK_MODE_10000baseCR_Full_BIT ,
@@ -1069,9 +1083,12 @@ static void hclge_convert_setting_cr(struct hclge_mac *mac, u8 speed_ability)
10691083 if (speed_ability & HCLGE_SUPPORT_100G_BIT )
10701084 linkmode_set_bit (ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT ,
10711085 mac -> supported );
1086+ if (speed_ability & HCLGE_SUPPORT_200G_BIT )
1087+ linkmode_set_bit (ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT ,
1088+ mac -> supported );
10721089}
10731090
1074- static void hclge_convert_setting_kr (struct hclge_mac * mac , u8 speed_ability )
1091+ static void hclge_convert_setting_kr (struct hclge_mac * mac , u16 speed_ability )
10751092{
10761093 if (speed_ability & HCLGE_SUPPORT_1G_BIT )
10771094 linkmode_set_bit (ETHTOOL_LINK_MODE_1000baseKX_Full_BIT ,
@@ -1091,6 +1108,9 @@ static void hclge_convert_setting_kr(struct hclge_mac *mac, u8 speed_ability)
10911108 if (speed_ability & HCLGE_SUPPORT_100G_BIT )
10921109 linkmode_set_bit (ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT ,
10931110 mac -> supported );
1111+ if (speed_ability & HCLGE_SUPPORT_200G_BIT )
1112+ linkmode_set_bit (ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT ,
1113+ mac -> supported );
10941114}
10951115
10961116static void hclge_convert_setting_fec (struct hclge_mac * mac )
@@ -1115,6 +1135,7 @@ static void hclge_convert_setting_fec(struct hclge_mac *mac)
11151135 BIT (HNAE3_FEC_AUTO );
11161136 break ;
11171137 case HCLGE_MAC_SPEED_100G :
1138+ case HCLGE_MAC_SPEED_200G :
11181139 linkmode_set_bit (ETHTOOL_LINK_MODE_FEC_RS_BIT , mac -> supported );
11191140 mac -> fec_ability = BIT (HNAE3_FEC_RS ) | BIT (HNAE3_FEC_AUTO );
11201141 break ;
@@ -1125,7 +1146,7 @@ static void hclge_convert_setting_fec(struct hclge_mac *mac)
11251146}
11261147
11271148static void hclge_parse_fiber_link_mode (struct hclge_dev * hdev ,
1128- u8 speed_ability )
1149+ u16 speed_ability )
11291150{
11301151 struct hclge_mac * mac = & hdev -> hw .mac ;
11311152
@@ -1145,7 +1166,7 @@ static void hclge_parse_fiber_link_mode(struct hclge_dev *hdev,
11451166}
11461167
11471168static void hclge_parse_backplane_link_mode (struct hclge_dev * hdev ,
1148- u8 speed_ability )
1169+ u16 speed_ability )
11491170{
11501171 struct hclge_mac * mac = & hdev -> hw .mac ;
11511172
@@ -1158,7 +1179,7 @@ static void hclge_parse_backplane_link_mode(struct hclge_dev *hdev,
11581179}
11591180
11601181static void hclge_parse_copper_link_mode (struct hclge_dev * hdev ,
1161- u8 speed_ability )
1182+ u16 speed_ability )
11621183{
11631184 unsigned long * supported = hdev -> hw .mac .supported ;
11641185
@@ -1188,7 +1209,7 @@ static void hclge_parse_copper_link_mode(struct hclge_dev *hdev,
11881209 linkmode_set_bit (ETHTOOL_LINK_MODE_Asym_Pause_BIT , supported );
11891210}
11901211
1191- static void hclge_parse_link_mode (struct hclge_dev * hdev , u8 speed_ability )
1212+ static void hclge_parse_link_mode (struct hclge_dev * hdev , u16 speed_ability )
11921213{
11931214 u8 media_type = hdev -> hw .mac .media_type ;
11941215
@@ -1200,8 +1221,11 @@ static void hclge_parse_link_mode(struct hclge_dev *hdev, u8 speed_ability)
12001221 hclge_parse_backplane_link_mode (hdev , speed_ability );
12011222}
12021223
1203- static u32 hclge_get_max_speed (u8 speed_ability )
1224+ static u32 hclge_get_max_speed (u16 speed_ability )
12041225{
1226+ if (speed_ability & HCLGE_SUPPORT_200G_BIT )
1227+ return HCLGE_MAC_SPEED_200G ;
1228+
12051229 if (speed_ability & HCLGE_SUPPORT_100G_BIT )
12061230 return HCLGE_MAC_SPEED_100G ;
12071231
@@ -1231,8 +1255,11 @@ static u32 hclge_get_max_speed(u8 speed_ability)
12311255
12321256static void hclge_parse_cfg (struct hclge_cfg * cfg , struct hclge_desc * desc )
12331257{
1258+ #define SPEED_ABILITY_EXT_SHIFT 8
1259+
12341260 struct hclge_cfg_param_cmd * req ;
12351261 u64 mac_addr_tmp_high ;
1262+ u16 speed_ability_ext ;
12361263 u64 mac_addr_tmp ;
12371264 unsigned int i ;
12381265
@@ -1281,6 +1308,11 @@ static void hclge_parse_cfg(struct hclge_cfg *cfg, struct hclge_desc *desc)
12811308 cfg -> speed_ability = hnae3_get_field (__le32_to_cpu (req -> param [1 ]),
12821309 HCLGE_CFG_SPEED_ABILITY_M ,
12831310 HCLGE_CFG_SPEED_ABILITY_S );
1311+ speed_ability_ext = hnae3_get_field (__le32_to_cpu (req -> param [1 ]),
1312+ HCLGE_CFG_SPEED_ABILITY_EXT_M ,
1313+ HCLGE_CFG_SPEED_ABILITY_EXT_S );
1314+ cfg -> speed_ability |= speed_ability_ext << SPEED_ABILITY_EXT_SHIFT ;
1315+
12841316 cfg -> umv_space = hnae3_get_field (__le32_to_cpu (req -> param [1 ]),
12851317 HCLGE_CFG_UMV_TBL_SPACE_M ,
12861318 HCLGE_CFG_UMV_TBL_SPACE_S );
@@ -2422,6 +2454,10 @@ static int hclge_cfg_mac_speed_dup_hw(struct hclge_dev *hdev, int speed,
24222454 hnae3_set_field (req -> speed_dup , HCLGE_CFG_SPEED_M ,
24232455 HCLGE_CFG_SPEED_S , 5 );
24242456 break ;
2457+ case HCLGE_MAC_SPEED_200G :
2458+ hnae3_set_field (req -> speed_dup , HCLGE_CFG_SPEED_M ,
2459+ HCLGE_CFG_SPEED_S , 8 );
2460+ break ;
24252461 default :
24262462 dev_err (& hdev -> pdev -> dev , "invalid speed (%d)\n" , speed );
24272463 return - EINVAL ;
@@ -3211,7 +3247,7 @@ static int hclge_notify_roce_client(struct hclge_dev *hdev,
32113247 enum hnae3_reset_notify_type type )
32123248{
32133249 struct hnae3_client * client = hdev -> roce_client ;
3214- int ret = 0 ;
3250+ int ret ;
32153251 u16 i ;
32163252
32173253 if (!test_bit (HCLGE_STATE_ROCE_REGISTERED , & hdev -> state ) || !client )
@@ -11093,7 +11129,7 @@ static void hclge_sync_promisc_mode(struct hclge_dev *hdev)
1109311129{
1109411130 struct hclge_vport * vport = & hdev -> vport [0 ];
1109511131 struct hnae3_handle * handle = & vport -> nic ;
11096- u8 tmp_flags = 0 ;
11132+ u8 tmp_flags ;
1109711133 int ret ;
1109811134
1109911135 if (vport -> last_promisc_flags != vport -> overflow_promisc_flags ) {
0 commit comments