aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/etherswitch
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/etherswitch')
-rw-r--r--sys/dev/etherswitch/infineon/adm6996fc.c10
1 files changed, 5 insertions, 5 deletions
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 <sys/param.h>
@@ -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) {