From 4aa177430ccf2732e8811c7ab884a427bf0304ac Mon Sep 17 00:00:00 2001 From: Adrian Chadd Date: Sat, 6 May 2017 05:50:07 +0000 Subject: [infineon] [etherswitch] no hardcode tagging port setting at amd6996fc Tagging port can set by etherswitchcfg command. Tested: * on Netgear_WGR614Cv7 Submitted by: Hiroki Mori Reviewed by: mizhka --- sys/dev/etherswitch/infineon/adm6996fc.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'sys/dev/etherswitch') diff --git a/sys/dev/etherswitch/infineon/adm6996fc.c b/sys/dev/etherswitch/infineon/adm6996fc.c index da31b7a964de0..a2f7e9d90b2bd 100644 --- a/sys/dev/etherswitch/infineon/adm6996fc.c +++ b/sys/dev/etherswitch/infineon/adm6996fc.c @@ -35,6 +35,7 @@ * This code suppose ADM6996FC SDC/SDIO connect to SOC network interface * MDC/MDIO. * This code development on Netgear WGR614Cv7. + * etherswitchcfg command port option support addtag. */ #include @@ -462,8 +463,6 @@ adm6996fc_getport(device_t dev, etherswitch_port_t *p) p->es_pvid = ADM6996FC_PVIDBYDATA(data1, data2); if (((data1 >> ADM6996FC_OPTE_SHIFT) & 0x01) == 1) p->es_flags |= ETHERSWITCH_PORT_ADDTAG; - else - p->es_flags |= ETHERSWITCH_PORT_STRIPTAG; } else { p->es_pvid = 0; } @@ -517,6 +516,10 @@ adm6996fc_setport(device_t dev, etherswitch_port_t *p) data = ADM6996FC_READREG(parent, bcaddr[p->es_port]); data &= ~(0xf << 10); data |= (p->es_pvid & 0xf) << ADM6996FC_PVID_SHIFT; + if (p->es_flags & ETHERSWITCH_PORT_ADDTAG) + data |= 1 << ADM6996FC_OPTE_SHIFT; + else + data &= ~(1 << ADM6996FC_OPTE_SHIFT); ADM6996FC_WRITEREG(parent, bcaddr[p->es_port], data); data = ADM6996FC_READREG(parent, vidaddr[p->es_port]); /* only port 4 is hi bit */ @@ -670,9 +673,6 @@ adm6996fc_setconf(device_t dev, etherswitch_conf_t *conf) /* Private VID set 1 */ data &= ~(0xf << 10); data |= (1 << 10); - /* Output Packet Tagging Enable */ - if (i == 5) - data |= (1 << 4); ADM6996FC_WRITEREG(parent, bcaddr[i], data); } for (i = 2;i <= 15; ++i) { -- cgit v1.3