diff options
author | John Crispin <blogic@openwrt.org> | 2015-12-23 19:25:02 +0000 |
---|---|---|
committer | John Crispin <blogic@openwrt.org> | 2015-12-23 19:25:02 +0000 |
commit | 3d168a54cd6cf131b08e14ea4374d2b29805f86f (patch) | |
tree | e6de9631c61a5dcb4bde6b1382ca376232de4b7e /target/linux/generic/files/drivers/net/phy | |
parent | 3752e143da9a62e1792bc3b4c383b6b4a73a2775 (diff) | |
download | master-187ad058-3d168a54cd6cf131b08e14ea4374d2b29805f86f.tar.gz master-187ad058-3d168a54cd6cf131b08e14ea4374d2b29805f86f.tar.bz2 master-187ad058-3d168a54cd6cf131b08e14ea4374d2b29805f86f.zip |
swconfig: switch kernel PORT_LINK support to SWITCH_TYPE_LINK
As explained earlier, using SWITCH_TYPE_LINK gives more flexibility,
it doesn't require e.g. string parsing to read some data.
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@47999 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/generic/files/drivers/net/phy')
-rw-r--r-- | target/linux/generic/files/drivers/net/phy/swconfig.c | 51 |
1 files changed, 4 insertions, 47 deletions
diff --git a/target/linux/generic/files/drivers/net/phy/swconfig.c b/target/linux/generic/files/drivers/net/phy/swconfig.c index ef218bd984..07efda05eb 100644 --- a/target/linux/generic/files/drivers/net/phy/swconfig.c +++ b/target/linux/generic/files/drivers/net/phy/swconfig.c @@ -127,30 +127,11 @@ swconfig_get_pvid(struct switch_dev *dev, const struct switch_attr *attr, return dev->ops->get_port_pvid(dev, val->port_vlan, &val->value.i); } -static const char * -swconfig_speed_str(enum switch_port_speed speed) -{ - switch (speed) { - case SWITCH_PORT_SPEED_10: - return "10baseT"; - case SWITCH_PORT_SPEED_100: - return "100baseT"; - case SWITCH_PORT_SPEED_1000: - return "1000baseT"; - default: - break; - } - - return "unknown"; -} - static int swconfig_get_link(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) { - struct switch_port_link link; - int len; - int ret; + struct switch_port_link *link = val->value.link; if (val->port_vlan >= dev->ports) return -EINVAL; @@ -158,32 +139,8 @@ swconfig_get_link(struct switch_dev *dev, const struct switch_attr *attr, if (!dev->ops->get_port_link) return -EOPNOTSUPP; - memset(&link, 0, sizeof(link)); - ret = dev->ops->get_port_link(dev, val->port_vlan, &link); - if (ret) - return ret; - - memset(dev->buf, 0, sizeof(dev->buf)); - - if (link.link) - len = snprintf(dev->buf, sizeof(dev->buf), - "port:%d link:up speed:%s %s-duplex %s%s%s%s%s", - val->port_vlan, - swconfig_speed_str(link.speed), - link.duplex ? "full" : "half", - link.tx_flow ? "txflow " : "", - link.rx_flow ? "rxflow " : "", - link.eee & ADVERTISED_100baseT_Full ? "eee100 " : "", - link.eee & ADVERTISED_1000baseT_Full ? "eee1000 " : "", - link.aneg ? "auto" : ""); - else - len = snprintf(dev->buf, sizeof(dev->buf), "port:%d link:down", - val->port_vlan); - - val->value.s = dev->buf; - val->len = len; - - return 0; + memset(link, 0, sizeof(*link)); + return dev->ops->get_port_link(dev, val->port_vlan, link); } static int @@ -246,7 +203,7 @@ static struct switch_attr default_port[] = { .get = swconfig_get_pvid, }, [PORT_LINK] = { - .type = SWITCH_TYPE_STRING, + .type = SWITCH_TYPE_LINK, .name = "link", .description = "Get port link information", .set = NULL, |