@@ -388,13 +388,13 @@ static int hclge_tm_pri_schd_mode_cfg(struct hclge_dev *hdev, u8 pri_id)
388
388
return hclge_cmd_send (& hdev -> hw , & desc , 1 );
389
389
}
390
390
391
- static int hclge_tm_qs_schd_mode_cfg (struct hclge_dev * hdev , u16 qs_id )
391
+ static int hclge_tm_qs_schd_mode_cfg (struct hclge_dev * hdev , u16 qs_id , u8 mode )
392
392
{
393
393
struct hclge_desc desc ;
394
394
395
395
hclge_cmd_setup_basic_desc (& desc , HCLGE_OPC_TM_QS_SCH_MODE_CFG , false);
396
396
397
- if (hdev -> tm_info . tc_info [ qs_id ]. tc_sch_mode == HCLGE_SCH_MODE_DWRR )
397
+ if (mode == HCLGE_SCH_MODE_DWRR )
398
398
desc .data [1 ] = cpu_to_le32 (HCLGE_TM_TX_SCHD_DWRR_MSK );
399
399
else
400
400
desc .data [1 ] = 0 ;
@@ -638,17 +638,18 @@ static int hclge_tm_pri_q_qs_cfg(struct hclge_dev *hdev)
638
638
{
639
639
struct hclge_vport * vport = hdev -> vport ;
640
640
int ret ;
641
- u32 i ;
641
+ u32 i , k ;
642
642
643
643
if (hdev -> tx_sch_mode == HCLGE_FLAG_TC_BASE_SCH_MODE ) {
644
644
/* Cfg qs -> pri mapping, one by one mapping */
645
- for (i = 0 ; i < hdev -> tm_info .num_tc ; i ++ ) {
646
- ret = hclge_tm_qs_to_pri_map_cfg (hdev , i , i );
647
- if (ret )
648
- return ret ;
649
- }
645
+ for (k = 0 ; k < hdev -> num_alloc_vport ; k ++ )
646
+ for (i = 0 ; i < hdev -> tm_info .num_tc ; i ++ ) {
647
+ ret = hclge_tm_qs_to_pri_map_cfg (
648
+ hdev , vport [k ].qs_offset + i , i );
649
+ if (ret )
650
+ return ret ;
651
+ }
650
652
} else if (hdev -> tx_sch_mode == HCLGE_FLAG_VNET_BASE_SCH_MODE ) {
651
- int k ;
652
653
/* Cfg qs -> pri mapping, qs = tc, pri = vf, 8 qs -> 1 pri */
653
654
for (k = 0 ; k < hdev -> num_alloc_vport ; k ++ )
654
655
for (i = 0 ; i < HNAE3_MAX_TC ; i ++ ) {
@@ -797,10 +798,11 @@ static int hclge_tm_pri_shaper_cfg(struct hclge_dev *hdev)
797
798
798
799
static int hclge_tm_pri_tc_base_dwrr_cfg (struct hclge_dev * hdev )
799
800
{
801
+ struct hclge_vport * vport = hdev -> vport ;
800
802
struct hclge_pg_info * pg_info ;
801
803
u8 dwrr ;
802
804
int ret ;
803
- u32 i ;
805
+ u32 i , k ;
804
806
805
807
for (i = 0 ; i < hdev -> tm_info .num_tc ; i ++ ) {
806
808
pg_info =
@@ -811,9 +813,13 @@ static int hclge_tm_pri_tc_base_dwrr_cfg(struct hclge_dev *hdev)
811
813
if (ret )
812
814
return ret ;
813
815
814
- ret = hclge_tm_qs_weight_cfg (hdev , i , dwrr );
815
- if (ret )
816
- return ret ;
816
+ for (k = 0 ; k < hdev -> num_alloc_vport ; k ++ ) {
817
+ ret = hclge_tm_qs_weight_cfg (
818
+ hdev , vport [k ].qs_offset + i ,
819
+ vport [k ].dwrr );
820
+ if (ret )
821
+ return ret ;
822
+ }
817
823
}
818
824
819
825
return 0 ;
@@ -944,7 +950,10 @@ static int hclge_tm_schd_mode_vnet_base_cfg(struct hclge_vport *vport)
944
950
return ret ;
945
951
946
952
for (i = 0 ; i < kinfo -> num_tc ; i ++ ) {
947
- ret = hclge_tm_qs_schd_mode_cfg (hdev , vport -> qs_offset + i );
953
+ u8 sch_mode = hdev -> tm_info .tc_info [i ].tc_sch_mode ;
954
+
955
+ ret = hclge_tm_qs_schd_mode_cfg (hdev , vport -> qs_offset + i ,
956
+ sch_mode );
948
957
if (ret )
949
958
return ret ;
950
959
}
@@ -956,17 +965,21 @@ static int hclge_tm_lvl34_schd_mode_cfg(struct hclge_dev *hdev)
956
965
{
957
966
struct hclge_vport * vport = hdev -> vport ;
958
967
int ret ;
959
- u8 i ;
968
+ u8 i , k ;
960
969
961
970
if (hdev -> tx_sch_mode == HCLGE_FLAG_TC_BASE_SCH_MODE ) {
962
971
for (i = 0 ; i < hdev -> tm_info .num_tc ; i ++ ) {
963
972
ret = hclge_tm_pri_schd_mode_cfg (hdev , i );
964
973
if (ret )
965
974
return ret ;
966
975
967
- ret = hclge_tm_qs_schd_mode_cfg (hdev , i );
968
- if (ret )
969
- return ret ;
976
+ for (k = 0 ; k < hdev -> num_alloc_vport ; k ++ ) {
977
+ ret = hclge_tm_qs_schd_mode_cfg (
978
+ hdev , vport [k ].qs_offset + i ,
979
+ HCLGE_SCH_MODE_DWRR );
980
+ if (ret )
981
+ return ret ;
982
+ }
970
983
}
971
984
} else {
972
985
for (i = 0 ; i < hdev -> num_alloc_vport ; i ++ ) {
0 commit comments