projects
/
openwrt.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
add diag.o for brcm-2.4 by default, add fixes for wap54g from Tomas Vanek
[openwrt.git]
/
openwrt
/
target
/
linux
/
package
/
switch
/
src
/
switch-robo.c
diff --git
a/openwrt/target/linux/package/switch/src/switch-robo.c
b/openwrt/target/linux/package/switch/src/switch-robo.c
index
6af0ff7
..
b23fca6
100644
(file)
--- a/
openwrt/target/linux/package/switch/src/switch-robo.c
+++ b/
openwrt/target/linux/package/switch/src/switch-robo.c
@@
-51,10
+51,12
@@
#define SIOCGETCPHYRD (SIOCDEVPRIVATE + 9)
#define SIOCSETCPHYWR (SIOCDEVPRIVATE + 10)
#define SIOCGETCPHYRD (SIOCDEVPRIVATE + 9)
#define SIOCSETCPHYWR (SIOCDEVPRIVATE + 10)
+static char *device;
static int use_et = 0;
static int is_5350 = 0;
static struct ifreq ifr;
static struct net_device *dev;
static int use_et = 0;
static int is_5350 = 0;
static struct ifreq ifr;
static struct net_device *dev;
+static unsigned char port[6] = { 0, 1, 2, 3, 4, 8 };
static int do_ioctl(int cmd, void *buf)
{
static int do_ioctl(int cmd, void *buf)
{
@@
-406,7
+408,13
@@
static int handle_reset(void *driver, char *buf, int nr)
robo_write16(ROBO_VLAN_PAGE, ROBO_VLAN_WRITE, 0);
robo_write16(ROBO_VLAN_PAGE, (is_5350 ? ROBO_VLAN_TABLE_ACCESS_5350 : ROBO_VLAN_TABLE_ACCESS), val16);
}
robo_write16(ROBO_VLAN_PAGE, ROBO_VLAN_WRITE, 0);
robo_write16(ROBO_VLAN_PAGE, (is_5350 ? ROBO_VLAN_TABLE_ACCESS_5350 : ROBO_VLAN_TABLE_ACCESS), val16);
}
-
+
+ /* reset ports to a known good state */
+ for (j = 0; j < d->ports; j++) {
+ robo_write16(ROBO_CTRL_PAGE, port[j], 0x0000);
+ robo_write16(ROBO_VLAN_PAGE, ROBO_VLAN_PORT0_DEF_TAG + (j << 1), 0);
+ }
+
/* enable switching */
set_switch(1);
/* enable switching */
set_switch(1);
@@
-418,17
+426,18
@@
static int handle_reset(void *driver, char *buf, int nr)
static int __init robo_init()
{
static int __init robo_init()
{
- char *device = "ethX";
int notfound = 1;
int notfound = 1;
+ device = strdup("ethX");
for (device[3] = '0'; (device[3] <= '3') && notfound; device[3]++) {
notfound = robo_probe(device);
}
device[3]--;
for (device[3] = '0'; (device[3] <= '3') && notfound; device[3]++) {
notfound = robo_probe(device);
}
device[3]--;
- if (notfound)
+ if (notfound) {
+ kfree(device);
return -ENODEV;
return -ENODEV;
- else {
+
}
else {
switch_config cfg[] = {
{"enable", handle_enable_read, handle_enable_write},
{"enable_vlan", handle_enable_vlan_read, handle_enable_vlan_write},
switch_config cfg[] = {
{"enable", handle_enable_read, handle_enable_write},
{"enable_vlan", handle_enable_vlan_read, handle_enable_vlan_write},
@@
-458,6
+467,7
@@
static int __init robo_init()
static void __exit robo_exit()
{
switch_unregister_driver(DRIVER_NAME);
static void __exit robo_exit()
{
switch_unregister_driver(DRIVER_NAME);
+ kfree(device);
}
}
This page took
0.027602 seconds
and
4
git commands to generate.