summaryrefslogtreecommitdiffstats
path: root/openwrt/target/linux/package/switch/src/switch-robo.c
diff options
context:
space:
mode:
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2006-01-14 17:49:21 +0000
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2006-01-14 17:49:21 +0000
commit693e5a62fc2d8798e576054ffed8db5f5f2ecbd4 (patch)
treec47a84bd824ff58ec4619b051c15ba87acfd7507 /openwrt/target/linux/package/switch/src/switch-robo.c
parent8f0aa4a7699c86bab7249c4c516b73f74b3ae93b (diff)
sync kmod-switch with whiterussian
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@2981 3c298f89-4303-0410-b956-a3cf2f4a3e73
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,
};