[OpenWrt-Devel] [PATCH V2 3/3] swconfig: switch kernel PORT_LINK support to SWITCH_TYPE_LINK

Rafał Miłecki zajec5 at gmail.com
Mon Dec 21 17:55:55 EST 2015


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 at gmail.com>
---
 .../linux/generic/files/drivers/net/phy/swconfig.c | 51 ++--------------------
 1 file 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 ef218bd..07efda0 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,
-- 
1.8.4.5
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list