diff options
Diffstat (limited to 'package/switch/src')
-rw-r--r-- | package/switch/src/switch-adm.c | 1 | ||||
-rw-r--r-- | package/switch/src/switch-core.c | 7 | ||||
-rw-r--r-- | package/switch/src/switch-core.h | 2 | ||||
-rw-r--r-- | package/switch/src/switch-robo.c | 7 |
4 files changed, 16 insertions, 1 deletions
diff --git a/package/switch/src/switch-adm.c b/package/switch/src/switch-adm.c index 2d0fcc35ab..8c0ddc6c9a 100644 --- a/package/switch/src/switch-adm.c +++ b/package/switch/src/switch-adm.c @@ -578,6 +578,7 @@ static int __init adm_init(void) port_handlers: port, vlan_handlers: vlan, }; + snprintf(driver.dev_name, SWITCH_NAME_BUFSZ, DRIVER_NAME); if (!detect_adm()) return -ENODEV; diff --git a/package/switch/src/switch-core.c b/package/switch/src/switch-core.c index ab0754c94a..fc8a6bf2c7 100644 --- a/package/switch/src/switch-core.c +++ b/package/switch/src/switch-core.c @@ -156,6 +156,12 @@ static int handle_driver_vlans(void *driver, char *buf, int nr) return sprintf(buf, "%i\n", vlans); } +static int handle_driver_dev_name(void *driver, char *buf, int nr) +{ + char *dev_name = ((switch_driver *) driver)->dev_name; + return sprintf(buf, "%s\n", dev_name); +} + static void add_handler(switch_driver *driver, const switch_config *handler, struct proc_dir_entry *parent, int nr) { switch_priv *priv = (switch_priv *) driver->data; @@ -242,6 +248,7 @@ switch_config global_driver_handlers[] = { {"cpuport", handle_driver_cpuport, NULL}, {"ports", handle_driver_ports, NULL}, {"vlans", handle_driver_vlans, NULL}, + {"dev_name", handle_driver_dev_name, NULL}, {NULL, NULL, NULL} }; diff --git a/package/switch/src/switch-core.h b/package/switch/src/switch-core.h index 7192f7b0f4..cc520e4935 100644 --- a/package/switch/src/switch-core.h +++ b/package/switch/src/switch-core.h @@ -4,6 +4,7 @@ #include <linux/version.h> #include <linux/list.h> #define SWITCH_MAX_BUFSZ 4096 +#define SWITCH_NAME_BUFSZ 16 #define SWITCH_MEDIA_AUTO 1 #define SWITCH_MEDIA_100 2 @@ -28,6 +29,7 @@ typedef struct { const switch_config *driver_handlers, *port_handlers, *vlan_handlers; void *data; void *priv; + char dev_name[SWITCH_NAME_BUFSZ]; } switch_driver; typedef struct { diff --git a/package/switch/src/switch-robo.c b/package/switch/src/switch-robo.c index 57240a3fd0..f7159729b8 100644 --- a/package/switch/src/switch-robo.c +++ b/package/switch/src/switch-robo.c @@ -3,6 +3,7 @@ * * Copyright (C) 2005 Felix Fietkau <nbd@nbd.name> * Copyright (C) 2008 Michael Buesch <mb@bu3sch.de> + * Copyright (C) 2013 Hauke Mehrtens <hauke@hauke-m.de> * Based on 'robocfg' by Oleg I. Vdovikin * * This program is free software; you can redistribute it and/or @@ -40,7 +41,7 @@ #endif #define DRIVER_NAME "bcm53xx" -#define DRIVER_VERSION "0.02" +#define DRIVER_VERSION "0.03" #define PFX "roboswitch: " #define ROBO_PHY_ADDR 0x1E /* robo switch phy address */ @@ -862,6 +863,10 @@ static int __init robo_init(void) driver.ports = 9; driver.cpuport = 8; } + if (robo.is_5365) + snprintf(driver.dev_name, SWITCH_NAME_BUFSZ, "BCM5365"); + else + snprintf(driver.dev_name, SWITCH_NAME_BUFSZ, "BCM5%s%x", robo.devid & 0xff00 ? "" : "3", robo.devid); return switch_register_driver(&driver); } |