diff options
author | John Crispin <john@openwrt.org> | 2015-12-23 19:24:30 +0000 |
---|---|---|
committer | John Crispin <john@openwrt.org> | 2015-12-23 19:24:30 +0000 |
commit | 67e10d757f88d9f2e0a0be8c96c01d951a2fca6e (patch) | |
tree | a1ada1770b17ef64fc79fe7034799e594b27c4a7 /target/linux/generic/files/include | |
parent | c01ca020ea12190afa644bd80629cc11f380e24e (diff) | |
download | upstream-67e10d757f88d9f2e0a0be8c96c01d951a2fca6e.tar.gz upstream-67e10d757f88d9f2e0a0be8c96c01d951a2fca6e.tar.bz2 upstream-67e10d757f88d9f2e0a0be8c96c01d951a2fca6e.zip |
swconfig: add SWITCH_TYPE_LINK and support sending link info to user space
So far we were sending link data as a string. It got some drawbacks:
1) Didn't allow writing clean user space apps reading link state. It was
needed to do some screen scraping.
2) Forced whole PORT_LINK communication to be string based. Adding
support for *setting* port link required passing string and parting
it in the kernel space.
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
SVN-Revision: 47997
Diffstat (limited to 'target/linux/generic/files/include')
-rw-r--r-- | target/linux/generic/files/include/linux/switch.h | 2 | ||||
-rw-r--r-- | target/linux/generic/files/include/uapi/linux/switch.h | 16 |
2 files changed, 18 insertions, 0 deletions
diff --git a/target/linux/generic/files/include/linux/switch.h b/target/linux/generic/files/include/linux/switch.h index 4291364562..eac35f9135 100644 --- a/target/linux/generic/files/include/linux/switch.h +++ b/target/linux/generic/files/include/linux/switch.h @@ -122,6 +122,7 @@ struct switch_dev { struct mutex sw_mutex; struct switch_port *portbuf; struct switch_portmap *portmap; + struct switch_port_link linkbuf; char buf[128]; @@ -148,6 +149,7 @@ struct switch_val { const char *s; u32 i; struct switch_port *ports; + struct switch_port_link *link; } value; }; diff --git a/target/linux/generic/files/include/uapi/linux/switch.h b/target/linux/generic/files/include/uapi/linux/switch.h index a59b23953a..c0071a415a 100644 --- a/target/linux/generic/files/include/uapi/linux/switch.h +++ b/target/linux/generic/files/include/uapi/linux/switch.h @@ -50,6 +50,7 @@ enum { SWITCH_ATTR_OP_VALUE_INT, SWITCH_ATTR_OP_VALUE_STR, SWITCH_ATTR_OP_VALUE_PORTS, + SWITCH_ATTR_OP_VALUE_LINK, SWITCH_ATTR_OP_DESCRIPTION, /* port lists */ SWITCH_ATTR_PORT, @@ -86,6 +87,7 @@ enum switch_val_type { SWITCH_TYPE_INT, SWITCH_TYPE_STRING, SWITCH_TYPE_PORTS, + SWITCH_TYPE_LINK, SWITCH_TYPE_NOVAL, }; @@ -97,6 +99,20 @@ enum { SWITCH_PORT_ATTR_MAX }; +/* link nested attributes */ +enum { + SWITCH_LINK_UNSPEC, + SWITCH_LINK_FLAG_LINK, + SWITCH_LINK_FLAG_DUPLEX, + SWITCH_LINK_FLAG_ANEG, + SWITCH_LINK_FLAG_TX_FLOW, + SWITCH_LINK_FLAG_RX_FLOW, + SWITCH_LINK_SPEED, + SWITCH_LINK_FLAG_EEE_100BASET, + SWITCH_LINK_FLAG_EEE_1000BASET, + SWITCH_LINK_ATTR_MAX, +}; + #define SWITCH_ATTR_DEFAULTS_OFFSET 0x1000 |