summaryrefslogtreecommitdiffstats
path: root/openwrt/target/linux/package/switch/src/switch-robo.c
diff options
context:
space:
mode:
Diffstat (limited to 'openwrt/target/linux/package/switch/src/switch-robo.c')
-rw-r--r--openwrt/target/linux/package/switch/src/switch-robo.c26
1 files changed, 20 insertions, 6 deletions
diff --git a/openwrt/target/linux/package/switch/src/switch-robo.c b/openwrt/target/linux/package/switch/src/switch-robo.c
index 63110d7c9..6af0ff713 100644
--- a/openwrt/target/linux/package/switch/src/switch-robo.c
+++ b/openwrt/target/linux/package/switch/src/switch-robo.c
@@ -278,8 +278,15 @@ static int handle_vlan_port_read(void *driver, char *buf, int nr)
if ((val32 & (1 << 20)) /* valid */) {
for (j = 0; j < 6; j++) {
if (val32 & (1 << j)) {
- len += sprintf(buf + len, "%d%s\t", j,
- (val32 & (1 << (j + 6))) ? (j == 5 ? "u" : "") : "t");
+ len += sprintf(buf + len, "%d", j);
+ if (val32 & (1 << (j + 6))) {
+ if (j == 5) buf[len++] = 'u';
+ } else {
+ buf[len++] = 't';
+ if (robo_read16(ROBO_VLAN_PAGE, ROBO_VLAN_PORT0_DEF_TAG + (j << 1)) == nr)
+ buf[len++] = '*';
+ }
+ buf[len++] = '\t';
}
}
len += sprintf(buf + len, "\n");
@@ -291,8 +298,15 @@ static int handle_vlan_port_read(void *driver, char *buf, int nr)
if ((val16 & (1 << 14)) /* valid */) {
for (j = 0; j < 6; j++) {
if (val16 & (1 << j)) {
- len += sprintf(buf + len, "%d%s\t", j, (val16 & (1 << (j + 7))) ?
- (j == 5 ? "u" : "") : "t");
+ len += sprintf(buf + len, "%d", j);
+ if (val16 & (1 << (j + 7))) {
+ if (j == 5) buf[len++] = 'u';
+ } else {
+ buf[len++] = 't';
+ if (robo_read16(ROBO_VLAN_PAGE, ROBO_VLAN_PORT0_DEF_TAG + (j << 1)) == nr)
+ buf[len++] = '*';
+ }
+ buf[len++] = '\t';
}
}
len += sprintf(buf + len, "\n");
@@ -415,7 +429,7 @@ static int __init robo_init()
if (notfound)
return -ENODEV;
else {
- switch_config main[] = {
+ switch_config cfg[] = {
{"enable", handle_enable_read, handle_enable_write},
{"enable_vlan", handle_enable_vlan_read, handle_enable_vlan_write},
{"reset", NULL, handle_reset},
@@ -432,7 +446,7 @@ static int __init robo_init()
cpuport: 5,
ports: 6,
vlans: 16,
- driver_handlers: main,
+ driver_handlers: cfg,
port_handlers: NULL,
vlan_handlers: vlan,
};