diff --git a/arch/arm/dts/ipq5332-mi03.1.dts b/arch/arm/dts/ipq5332-mi03.1.dts index 54d2a635d0..0ad6846059 100644 --- a/arch/arm/dts/ipq5332-mi03.1.dts +++ b/arch/arm/dts/ipq5332-mi03.1.dts @@ -115,6 +115,7 @@ mac_pwr = <0xaa545>; port_count = <3>; update = <1>; + skip_vlan = <1>; pad0_mode = <0x80>; pad5_mode = <0>; pad6_mode = <0>; diff --git a/drivers/net/ipq5332/ipq5332_edma.c b/drivers/net/ipq5332/ipq5332_edma.c index e824cdf43b..5abc66e0cb 100644 --- a/drivers/net/ipq5332/ipq5332_edma.c +++ b/drivers/net/ipq5332/ipq5332_edma.c @@ -1778,6 +1778,8 @@ int ipq5332_edma_init(void *edma_board_cfg) "/ess-switch/qca8337_swt_info"); s17c_swt_cfg.update = fdtdec_get_uint(gd->fdt_blob, phy_node, "update", 0); + s17c_swt_cfg.skip_vlan = fdtdec_get_uint(gd->fdt_blob, + phy_node, "skip_vlan", 0); s17c_swt_cfg.pad0_mode = fdtdec_get_uint(gd->fdt_blob, phy_node, "pad0_mode", 0); s17c_swt_cfg.pad5_mode = fdtdec_get_uint(gd->fdt_blob, diff --git a/drivers/net/ipq_common/athrs17_phy.c b/drivers/net/ipq_common/athrs17_phy.c index 72ee0784e8..b4ef78b216 100644 --- a/drivers/net/ipq_common/athrs17_phy.c +++ b/drivers/net/ipq_common/athrs17_phy.c @@ -332,7 +332,8 @@ int ipq_athrs17_init(ipq_s17c_swt_cfg_t *swt_cfg) if (ret != -1) { athrs17_reg_init(swt_cfg); athrs17_reg_init_lan(swt_cfg); - athrs17_vlan_config(); + if (!(swt_cfg->skip_vlan)) + athrs17_vlan_config(); printf ("S17c init done\n"); } diff --git a/drivers/net/ipq_common/athrs17_phy.h b/drivers/net/ipq_common/athrs17_phy.h index 47904ca649..7b473e48ee 100644 --- a/drivers/net/ipq_common/athrs17_phy.h +++ b/drivers/net/ipq_common/athrs17_phy.h @@ -616,6 +616,7 @@ typedef struct { int chip_detect; u32 port_phy_address[S17C_MAX_PORT]; bool update; + bool skip_vlan; u32 pad0_mode; u32 pad5_mode; u32 pad6_mode;