[][kernel][mt7987][eth][Refactor SW PPPQ rate limit for the NETSYSv3.1]
[Description]
Refactor SW PPPQ rate limit for the NETSYSv3.1.
Without this patch, the ETH driver will configure an incorrect rate
limit when SW PPPQ is enabled on the mt7987.
[Release-log]
N/A
Change-Id: I81e7ce9635dd47387c3fdc2a52eb11e6f662d608
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/9891575
diff --git a/21.02/files/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/21.02/files/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.c
index 25325b4..c644ab7 100644
--- a/21.02/files/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/21.02/files/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -1132,6 +1132,41 @@
default:
break;
}
+ } else if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA_V1_4)) {
+ switch (speed) {
+ case SPEED_10:
+ val |= MTK_QTX_SCH_MAX_RATE_EN_V2 |
+ FIELD_PREP(MTK_QTX_SCH_MAX_RATE_MAN_V2, 1) |
+ FIELD_PREP(MTK_QTX_SCH_MAX_RATE_EXP_V2, 4) |
+ FIELD_PREP(MTK_QTX_SCH_MAX_RATE_WEIGHT_V2, 1);
+ break;
+ case SPEED_100:
+ val |= MTK_QTX_SCH_MAX_RATE_EN_V2 |
+ FIELD_PREP(MTK_QTX_SCH_MAX_RATE_MAN_V2, 1) |
+ FIELD_PREP(MTK_QTX_SCH_MAX_RATE_EXP_V2, 5);
+ FIELD_PREP(MTK_QTX_SCH_MAX_RATE_WEIGHT_V2, 1);
+ break;
+ case SPEED_1000:
+ val |= MTK_QTX_SCH_MAX_RATE_EN_V2 |
+ FIELD_PREP(MTK_QTX_SCH_MAX_RATE_MAN_V2, 10) |
+ FIELD_PREP(MTK_QTX_SCH_MAX_RATE_EXP_V2, 5) |
+ FIELD_PREP(MTK_QTX_SCH_MAX_RATE_WEIGHT_V2, 10);
+ break;
+ case SPEED_2500:
+ val |= MTK_QTX_SCH_MAX_RATE_EN_V2 |
+ FIELD_PREP(MTK_QTX_SCH_MAX_RATE_MAN_V2, 25) |
+ FIELD_PREP(MTK_QTX_SCH_MAX_RATE_EXP_V2, 5) |
+ FIELD_PREP(MTK_QTX_SCH_MAX_RATE_WEIGHT_V2, 10);
+ break;
+ case SPEED_10000:
+ val |= MTK_QTX_SCH_MAX_RATE_EN_V2 |
+ FIELD_PREP(MTK_QTX_SCH_MAX_RATE_MAN_V2, 100) |
+ FIELD_PREP(MTK_QTX_SCH_MAX_RATE_EXP_V2, 5) |
+ FIELD_PREP(MTK_QTX_SCH_MAX_RATE_WEIGHT_V2, 10);
+ break;
+ default:
+ break;
+ }
} else {
switch (speed) {
case SPEED_10: