diff --git a/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/common.c b/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/common.c index 7c1ab5e054..fafef9f71f 100644 --- a/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/common.c +++ b/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/common.c @@ -1559,7 +1559,8 @@ static int rtl83xx_sw_probe(struct platform_device *pdev) rtl83xx_get_l2aging(priv); - rtl83xx_setup_qos(priv); + if (priv->r->qos_init) + priv->r->qos_init(priv); if (priv->r->l3_setup) priv->r->l3_setup(priv); diff --git a/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/qos.c b/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/qos.c index 1b5b714290..ff515bea10 100644 --- a/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/qos.c +++ b/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/qos.c @@ -547,24 +547,14 @@ static void rtl839x_config_qos(void) } } -void __init rtl83xx_setup_qos(struct rtl838x_switch_priv *priv) +void rtldsa_838x_qos_init(struct rtl838x_switch_priv *priv) { - switch_priv = priv; - - pr_info("In %s\n", __func__); - - switch (priv->family_id) { - case RTL8380_FAMILY_ID: - rtl838x_config_qos(); - rtl838x_rate_control_init(priv); - break; - case RTL8390_FAMILY_ID: - rtl839x_config_qos(); - rtl839x_rate_control_init(priv); - break; - default: - if (priv->r->qos_init) - priv->r->qos_init(priv); - break; - } + rtl838x_config_qos(); + rtl838x_rate_control_init(priv); +} + +void rtldsa_839x_qos_init(struct rtl838x_switch_priv *priv) +{ + rtl839x_config_qos(); + rtl839x_rate_control_init(priv); } diff --git a/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/rtl838x.c b/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/rtl838x.c index 2436093674..2064de198e 100644 --- a/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/rtl838x.c +++ b/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/rtl838x.c @@ -1748,6 +1748,7 @@ const struct rtl838x_reg rtl838x_reg = { .l3_setup = rtl838x_l3_setup, .set_distribution_algorithm = rtl838x_set_distribution_algorithm, .set_receive_management_action = rtl838x_set_receive_management_action, + .qos_init = rtldsa_838x_qos_init, }; irqreturn_t rtl838x_switch_irq(int irq, void *dev_id) diff --git a/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/rtl839x.c b/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/rtl839x.c index 7d3152d5b0..891a435c7a 100644 --- a/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/rtl839x.c +++ b/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/rtl839x.c @@ -1698,4 +1698,5 @@ const struct rtl838x_reg rtl839x_reg = { .l3_setup = rtl839x_l3_setup, .set_distribution_algorithm = rtl839x_set_distribution_algorithm, .set_receive_management_action = rtl839x_set_receive_management_action, + .qos_init = rtldsa_839x_qos_init, }; diff --git a/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/rtl83xx.h b/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/rtl83xx.h index 66766da331..4fd8dc85a5 100644 --- a/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/rtl83xx.h +++ b/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/rtl83xx.h @@ -131,7 +131,8 @@ inline u16 rtl_table_data(struct table_reg *r, int i); inline u32 rtl_table_data_r(struct table_reg *r, int i); inline void rtl_table_data_w(struct table_reg *r, u32 v, int i); -void __init rtl83xx_setup_qos(struct rtl838x_switch_priv *priv); +void rtldsa_838x_qos_init(struct rtl838x_switch_priv *priv); +void rtldsa_839x_qos_init(struct rtl838x_switch_priv *priv); void rtl83xx_fast_age(struct dsa_switch *ds, int port); int rtl83xx_packet_cntr_alloc(struct rtl838x_switch_priv *priv);